springmvc的过滤器--Filter

一、CharacterEncodingFilter:POST中文乱码解决方案

spring Web MVC框架提供了org.springframework.web.filter.CharacterEncodingFilter用于解决POST方式造成的中文乱码问题,具体配置如下:

 

java代码:
Java代码  收藏代码
  1. <filter>  
  2.     <filter-name>CharacterEncodingFilter</filter-name>  
  3.     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
  4.     <init-param>  
  5.         <param-name>encoding</param-name>  
  6.         <param-value>utf-8</param-value>  
  7.     </init-param>  
  8. </filter>  
  9. <filter-mapping>  
  10.     <filter-name>CharacterEncodingFilter</filter-name>  
  11.     <url-pattern>/*</url-pattern>  
  12. </filter-mapping>  

 


二、HiddenHttpMethodFilter

 浏览器 form 单只支持 GET 与 POST 请求,DELETE、PUT method 并不支持 

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


以下是实例

1、在web.xml中配置HiddenHttpMethodFilter

<!-- 
	配置 org.springframework.web.filter.HiddenHttpMethodFilter: 可以把 POST 请求转为 DELETE 或 POST 请求 
	-->
	<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>

2、编写页面控制器类

package com.atguigu.springmvc;

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 SpringMVCTest {
	
	@RequestMapping(value="testRest/{id}",method=RequestMethod.GET)
	public String testGet(@PathVariable(value="id") Integer id) {
		System.out.println("get" + id);
		return "success";
	}
	
	@RequestMapping(value="testRest",method=RequestMethod.POST)
	public String testPost() {
		System.out.println("Post");
		return "success";
	}

	@RequestMapping(value="testRest/{id}", method=RequestMethod.PUT)
	public String testPut(@PathVariable(value="id") Integer id) {
		System.out.println("Put" +id);
		return "success";
	}
	
	@RequestMapping(value="/testRest/{id}", method=RequestMethod.DELETE)
	public String delete(@PathVariable(value="id") Integer id) {
		
		System.out.println("delete" + id);
		return "success";
	}
	
}

注解解析:

 1. @RequestMapping: 除了修饰方法, 还可来修饰类 

 1). 类定义处: 提供初步的请求映射信息。相对于 WEB 应用的根目录
 2). 方法处: 提供进一步的细分映射信息。 相对于类定义处的 URL。

若类定义处未标注 @RequestMapping,则方法处标记的 URL相对于 WEB 应用的根目录
3)使用 method 属性来指定请求方式 

另外:还可以使用 params 和 headers 来更加精确的映射请求. params 和 headers 支持简单的表达式.(一般 不用)

2.@PathVariable :可以来映射 URL 中的占位符到目标方法的参数中.。value属性的值要和占位符名称一致。

3、编写jsp页面,用于通过超链接发送请求

<!-- put:改 -->
	<form action="springmvc/testRest/1" method="post">
		<input type="hidden" name="_method" value="PUT"/>
		<input type="submit" value="TestRest PUT"/>
	</form>
	<br><br>
	
	<!-- delete : 刪 -->
	<form action="springmvc/testRest/1" method="post">
		<input type="hidden" name="_method" value="DELETE"/>
		<input type="submit" value="TestRest DELETE"/>
	</form>
	<br><br>
	
	<!-- Post : 增 -->
	<form action="springmvc/testRest" method="post">
		<input type="submit" value="TestRest POST"/>
	</form>
	<br><br>
	
	<!-- 查 -->
	<a href="springmvc/testRest/1">Test Rest Get</a>

总结:

表单只支持post请求和get请求,那如何通过表单发送put请求和delete请求呢?

1、需要在web.xml中配置HiddenHttpMethodFilter

2、需要在表单中发送Post请求

3、需要在表单发送Post请求时携带一个name="_method"的隐藏域,value可取 delete 或 put。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值