SpringMVC第六篇——解决中文乱码(POST/GET提交)
2018-03-13 11:16
441 查看
SpringMVC中get和post中文乱码要分开解决:
拦截规则根据自己需求
2:在Tomcat的 服务配置文件server.xml里面加上配置
第二种是改了服务器配置,第一种操作繁琐。
web.xml配置文件中
至此springmvc中的提交乱码全部都解决。
在spring中,filter都默认继承OncePerRequestFilter
POST提交:
只需要在web.xml中添加如下配置。post中文乱码就解决了。拦截规则根据自己需求
<filter> <filter-name>encoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
GET提交:
1:乱码的地方使用进行重新编码String param = new String(param.getBytes("ISO8859-1"), "UTF-8");
2:在Tomcat的 服务配置文件server.xml里面加上配置
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
第二种是改了服务器配置,第一种操作繁琐。
推荐使用:
3:自定义拦截器,使用动态代理:package controller; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.lang.reflect.Method; import javax.servlet.FilterChain; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.cglib.proxy.InvocationHandler; import org.springframework.cglib.proxy.Proxy; import org.springframework.web.filter.OncePerRequestFilter; public class EncodingFilter extends OncePerRequestFilter { private String encoding; public void setEncoding(String encoding) { this.encoding = encoding; } @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletExce b0f2 ption, IOException { // 设置请求响应字符编码 request.setCharacterEncoding(encoding); response.setCharacterEncoding(encoding); // 传递给目标servlet或jsp的实际上是动态代理的对象,而不是原始的HttpServletRequest对象 if("POST".equals(request.getMethod())){ //如果是post提交直接放行。 chain.doFilter(request, response); }else{ //get提交进行处理 request = (HttpServletRequest) Proxy.newProxyInstance(request.getClass().getClassLoader(), request.getClass().getInterfaces(), new MyInvacationHandler(request)); chain.doFilter(request, response); } } class MyInvacationHandler implements InvocationHandler{ private HttpServletRequest request; MyInvacationHandler(HttpServletRequest request){ this.request=request; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { /*if("POST".equals(request.getMethod())){ return value; }*/ switch (method.getName()) { case "getParameter": String value = request.getParameter((String)args[0]); try { if(value != null){ value=new String(value.getBytes("ISO-8859-1"),encoding); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return value; case "getParameterValues": String[] values = request.getParameterValues((String)args[0]); if (values != null) { for (int i = 0; i < values.length; i++) { try { values[i] = new String(values[i].getBytes("ISO-8859-1"),encoding); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } return values; default: return method.invoke(request, args); } } } }
web.xml配置文件中
<filter-name>encodingFilter</filter-name> <filter-class>controller.EncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
至此springmvc中的提交乱码全部都解决。
在spring中,filter都默认继承OncePerRequestFilter
返回 SpringMVC的学习笔记目录
http://blog.csdn.net/m15517986455/article/details/79319601相关文章推荐
- 解决springmvc的get提交和post提交的中文乱码问题
- Post与Get提交使用过滤器解决中文乱码问题
- Spring MVC 3 表单中文提交post请求和get请求乱码问题的解决方法
- 解决servlet中输出中文到浏览器以及post、get两种提交方法乱码问题
- 解决中文乱码的filter(包括get和post提交两种方式)
- JAVA中Get、Post方式提交中文乱码解决方法
- 过滤器解决get和post方式提交的中文乱码
- 用Filter解决GET和POST提交的中文乱码方法
- 中文乱码问题解决,过滤器配置,get post提交乱码,filter,struts乱码,jsp乱码
- Get与Post提交与中文乱码解决
- 解决问题:在使用springmvc的web.xml配置乱码拦截器之后接收的get或者post请求中文还是乱码
- springMVC解决post、get中文乱码
- form表单提交的 get/post 方法(二)中文乱码的解决(1)
- 用Filter解决GET和POST提交的中文乱码方法
- form表单提交的 get/post 方法(二)中文乱码的解决(2)
- 解决用jquery的get或者post提交方式提交到struts2中的action中文乱码问题
- 解决post、get提交中文乱码问题
- JQuery中Ajax的Post提交中文乱码、windows.location.href 中文汉字乱码和springmvc使用原生态HttpServletRequest接收参数中文乱码解决办法
- 关于get和post请求中文乱码的解决办法
- SpringMVC 解决GET请求时中文乱码的问题