SpringMVC中关于隐藏HttpMethodType的过滤器

SpringMVC中,删除与修改操作HiddenHttpMethodFilter支持用DELETE,PUT请求方式提交。

就目前而言,客户端浏览器中的form表单只支持GET与POST这两种方式请求,而DELETE、PUT等其他的MethodType并不支持。

SpringMVC框架中的Spring3.0添加了一个过滤器,可以将这些请求转换为标准的http方法,使得支持GET、POST、PUT与DELETE请求。

这个过滤器(filter)叫做HiddenHttpMethodFilter, 添加这个过滤器需要在Web Project中的web.xml中添加如下过滤器配置信息:

定义一个过滤器:

<filter>  
    <filter-name>HiddenHttpMethodFilter</filter-name>  
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>  
</filter>  

配置过滤器的映射:

<filter-mapping>  
    <filter-name>HiddenHttpMethodFilter</filter-name>  
    <servlet-name>springDispatcherServlet</servlet-name>  //默认会自动配置

<url-pattern>/*</url-pattern>

</filter-mapping> 
 Waring: 其中springDispatcherServlet是DispatcherServlet的servlet-name的名称, 配成其他如/*等之类的页面请求会报错。

 	<!-- 配置隐藏HTTP服务请求方式的过滤器 -->
  	<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>
  	
  	<!-- The front controller of this Spring Web application, responsible for handling all application requests -->
	<servlet>
		<servlet-name>springDispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath: SpringMVC.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

	//添加用户
	@RequestMapping(value="/add",method=RequestMethod.POST)
	public String userAdd(){
		
		System.out.println("-----add");
		
		return SUCCESS;
	}
	
	//删除用户
	@RequestMapping(value="/del",method=RequestMethod.DELETE)//添加支持HttpMethod的Delete请求,下文有注意事项,请仔细看
	public String userDel(){
		
		System.out.println("-----del");
		
		return SUCCESS;
	}
	
	//更新用户
	@RequestMapping(value="/update",method=RequestMethod.PUT)
	public String userUpdate(){
		
		System.out.println("-----put");
		
		return SUCCESS;
	}
	
	//获取用户
	@RequestMapping(value="/get",method=RequestMethod.GET)
	public String userGet(){
		
		System.out.println("-----get");
		
		return SUCCESS;
	}

页面提交方式需转换成post提交方式(可写jquery方式提交表单)。

需要在页面上添加隐藏域告诉controller此请求是哪种请求方式:

	<h2>User Add</h2>
	<form action="user/add" method="post">
		<input type="hidden" name="_method" value="POST">	//隐藏域
		//注意:value="POST"这里的POST一定要与你Controller层中添加支持HttpMethod的请求类型一致,否则会报501的错误。
		<input type="submit" value="添加">
	</form>
	
	<h2>User Del</h2>
	<form action="user/del" method="post">
		<input type="hidden" name="_method" value="DELETE">
		
		<input type="submit" value="删除">
	</form>
	
	<h2>User Update</h2>
	<form action="user/update" method="post">
		<input type="hidden" name="_method" value="PUT">
		
		<input type="submit" value="更新">
	</form>
	
	<h2>User Get</h2>
	<form action="user/get" method="post">
		<input type="hidden" name="_method" value="GET">
		
		<input type="submit" value="获取">
	</form>
	

<input type="hidden" name="_method" value="DELETE"/>

<input type="hidden" name="_method" value="PUT"/>

这样,就可实现添加支持HttpMethod的DELETE和PUT 等等请求方式了。

需要在页面上添加隐藏域告诉controller此请求是哪种请求方式:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值