springmvc项目3-HiddenHttpMethodFilter与REST风格增删改查

0,项目springmvc003简介

     通过使用org.springframework.web.filter.HiddenHttpMethodFilter拦截器、@RequestMapping的限制请求方式,来实现REST风格的增删改查。

1,按照项目springmvc001搭建一个基本的springmvc框架。

2,新建一个RestController类。

我们注解的访问地址都是"/rest",只在后面的请求方式中做了相应的限制,分别代表增删改查(POST、DELTE、PUT、GET)。

 

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping("/restController")
public class RestController {

	@RequestMapping(value = "/rest", method = RequestMethod.POST)
	public String restPost() {
		System.out.println("restPost");
		return "success";
	}

	@RequestMapping(value = "/rest", method = RequestMethod.DELETE)
	public String restDelet() {
		System.out.println("restDelet");
		return "success";
	}

	@RequestMapping(value = "/rest", method = RequestMethod.PUT)
	public String restPut() {
		System.out.println("restPut");
		return "success";
	}

	@RequestMapping(value = "/rest", method = RequestMethod.GET)
	public String restGet() {
		System.out.println("restGet");
		return "success";
	}
}

3,在index.jsp页面添加四类请求

 

也是四类请求分别表示增删改查与类的方法对应。

由于浏览器只能发出get和post的请求,我们的delete、put请求中均加入了一个name="_method"的隐藏属性。这个属性就是为了将post请求转换为put和delete请求。

 

<body>
	<form action="restController/rest" method="post">
		<input type="submit" value="RestPost">
	</form>
	<br><br>
	<form action="restController/rest" method="post">
		<input type="hidden" name="_method" value="DELETE">
		<input type="submit" value="RestDelete">
	</form>
	<br><br>
	<form action="restController/rest" method="post">
		<input type="hidden" name="_method" value="PUT">
		<input type="submit" value="RestPut">
	</form>
	<br><br>
	
	<a href="restController/rest">Rest Get</a>
</body>

4,在web.xml文件中添加org.springframework.web.filter.HiddenHttpMethodFilter拦截器

 

该拦截器的作用就是为了,将浏览器提交过来的post请求转换为put和delete请求。

之所以要加入name="_method"属性,我们根据源代码可以知道,该拦截器截获post请求,在请求域中查找_method属性,然后更具_method获得值来修改请求域中的method属性,即可以完成对post请求到put、delete请求的转换。这样RestController的方法就能识别不同的请求。

 

  <filter>
  	<filter-name>HiddenHttpMethodFilter</filter-name>
  	<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>HiddenHttpMethodFilter</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>

 

 

 

 

 

 

 

 

 

 

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值