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>

 

 

 

 

 

 

 

 

 

 

 

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章