参考视频:传送门

@RequestMapping 注解除了可以修饰类中的方法外,还可以用来修饰类,修改SpringMVCHandler类,通过在类上添加@Mapping注解可以将请求分路径

在index.jsp文件页面中HelloWorld超链要做如下修改:

<a href="spingmvc/helloWorld">helloWorld</a>

(1)根据请求方式进行映射

通过method属性  (get请求,post请求)

reset 风格的URL路径的映射

GET请求

POST请求

DELETE请求

PUT请求

 

rest意思是表现层状态转换。在WEB中,REST使用HTTP协议连接器来标识对资源的操作(获取/查询、创建、删除、修改),用HTTP Method 标识操作类型。HTTP GET 获取和查询资源、HTTP POST创建资源 、HTTP PUT修改资源 、HTTP DELETE删除资源

 

由于from表单只支持GET和POST方式,spring提供了一个过滤器HiddenHttpMethodFilter,可以将DELETE和PUT请求转换为标准的HTTP方式,即能将POST请求转为DELET或PUT请求

 

 

过程:

1)在web.xml配置一个过滤器

 <!-- 配置HiddenHttpFilter 可将POST请求转为我们所需要的PUT或DELETE 定义部分--> 
  <filter>
  	 <filter-name>HiddenHttpFilter</filter-name>
  	 <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
  </filter>
  <!-- 映射部分 -->
  <filter-mapping>
  		<filter-name>HiddenHttpFilter</filter-name>
  		<url-pattern>/*</url-pattern>
  </filter-mapping>

2)处理GET请求

①在index.jsp页面中添加Rest GET超链接:<a href="springmvc/rest/1">Rest GET </a>

上篇文章也是做过的了,不知道有什么区别

 

3)处理POST请求,上篇文章其实已经做过了

用form表单

<form action="springmvc/rest" method="post">
		<input type="submit" value="RestPOST">
	</form>

类中对应的方法:
@RequestMapping(value="/rest",method=RequestMethod.POST)
	public String restPost(){
		System.out.println("REST POST:");
		return "success";
	}

 

 

4)处理DELETE请求

依然用表单完成,POST转换为DELET

<form action="springmvc/rest/1" method="post">
		<input type="hidden" name="_method" value="DELETE">
		<input type="submit" value="rest DELETE">
	</form>

类中方法:

@RequestMapping(value="/rest/{id}",method=RequestMethod.DELETE)
	public String restDELETE(@PathVariable Integer id){
		System.out.println("REST DELETE:"+id);
		return "redirect:/springmvc/doTransfer";//重定向
	}
	
	@RequestMapping("doTransfer")
	public String doTransfer(){
		return "success";
	}

 

 

5)处理PUT请求

跟DELETE一样,DELET改成PUT就可以了


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<a href="springmvc/helloWorld">helloWorld</a><br><br> <!-- 超链接,跳到 "helloWorld的控制器 -->
	
	<!--  <a href="springmvc/requestMethod">RequestMethod</a><br><br> 用于get -->
	
	<form action="springmvc/requestMethod" method="post">
		<input type="submit" value="RequestMethod">
	</form>
	<br>
	
	<a href="springmvc/rest/1">Rest GET</a><br><br>
	
	<form action="springmvc/rest" method="post">
		<input type="submit" value="RestPOST">
	</form>
	<br>
	
	<form action="springmvc/rest/1" method="post"><!-- post转DELETE -->
		<input type="hidden" name="_method" value="DELETE">
		<input type="submit" value="rest DELETE">
	</form>
	<br><br>
	
	<form action="springmvc/rest/1" method="post"><!-- post转PUT -->
		<input type="hidden" name="_method" value="PUT">
		<input type="submit" value="rest PUT">
	</form>
	
	
</body>
</html>

 

package com.springmvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
//声明一个控制器
@RequestMapping("/springmvc")
@Controller
public class SpringMVCHandler {
	//地址映射
	@RequestMapping("/helloWorld")
	public String sayHello() {
		System.out.println("Hello World");
		return "success";//逻辑视图名称
	}
	
	@RequestMapping(value="/requestMethod",method=RequestMethod.POST)
	public String requestMethod() {
		System.out.println("Hello World1");
		return "success";
	}
	
	@RequestMapping(value="/rest/{id}")
	public String restGet(@PathVariable Integer id){
		System.out.println("REST GET:"+id);
		return "success";
	}
	
	@RequestMapping(value="/rest",method=RequestMethod.POST)
	public String restPost(){
		System.out.println("REST POST:");
		return "success";
	}
	
	@RequestMapping(value="/rest/{id}",method=RequestMethod.DELETE)
	public String restDELETE(@PathVariable Integer id){
		System.out.println("REST DELETE:"+id);
		return "redirect:/springmvc/doTransfer";//重定向
	}
	
	@RequestMapping(value="/rest/{id}",method=RequestMethod.PUT)
	public String restPUT(@PathVariable Integer id){
		System.out.println("REST PUT:"+id);
		return "redirect:/springmvc/doTransfer";//重定向
	}
		
	@RequestMapping("doTransfer")
	public String doTransfer(){
		return "success";
	}
	
	
	
}