tomacat对GET和POST请求处理方式是不同的
POST: 加过滤器, 即可解决
GET: 加过滤器, 还需要改tomcat的server.xml配置文件(特别注意: eclipse下的 Servers下的server.xml也要改)
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
改为:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true"/>
过滤器的几种加法:
方法一: 自定义过滤器,
<!-- 自定义编码过滤器 --> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>com.lw.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>characterEncoding</param-name> <param-value>utf-8</param-value> </init-param> <init-param> <param-name>enabled</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
实现方法:
package com.lw.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class CharacterEncodingFilter implements Filter { private String characterEncoding; //编码方式配置在web.xml文件中 private boolean enabled; //是否启用此Filter,配置在web.xml中 @Override public void destroy() { characterEncoding = null; } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (enabled || characterEncoding != null) { request.setCharacterEncoding(characterEncoding); response.setCharacterEncoding(characterEncoding); } chain.doFilter(request, response); } @Override public void init(FilterConfig config) throws ServletException { characterEncoding = config.getInitParameter("characterEncoding"); enabled = "true".equalsIgnoreCase(config.getInitParameter("enabled").trim()); } }
方法二: spring mvc 自带过滤器
<!-- spring mvc 自带编码过滤器 --> <filter> <filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
方法三: 集成到spring mvc 核心过滤器, 实现org.springframework.web.servlet.DispatcherServlet
<!-- 集成过滤到核心拦截器中。 自定义过滤, EncodingDispatcherServlet实现核心拦截器DispatcherServlet, --> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>com.lw.filter.EncodingDispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </init-param> </servlet>
实现方法:
package com.lw.filter; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.DispatcherServlet; public class EncodingDispatcherServlet extends DispatcherServlet { private String encoding; public void init(ServletConfig config) throws ServletException { encoding = config.getInitParameter("encoding"); super.init(config); } protected void doService(HttpServletRequest request, HttpServletResponse response) throws Exception { request.setCharacterEncoding(encoding); response.setCharacterEncoding(encoding); super.doService(request, response); } }
附:
很多人说get请求乱码处理办法如下, 但本人测试好像不太奏效
<Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />
相关推荐
首先, 我需要在你心里建立起 Spring MVC 的基本概念. 基于 Spring 的 Web 应用程序接收到 http://localhost:8080/hello.do(事实上请求路径是 /hello.do) 的请求后, Spring 将这个请求交给一个名为 helloController ...
spring mvc 过滤器,实现url过滤,权限模块经常用到的,很不错
主要介绍了彻底解决Spring MVC中文乱码问题的方案,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
Spring MVC中默认的ResponseBody为String的乱码问题.pdfSpring MVC中默认的ResponseBody为String的乱码问题.pdf
该程序使用eclipse作为开发工具,mysql作为数据库。...dwz框架中的乱码问题不用太管,spring mvc自带的过滤器已经配置好了,网页发布到tomcat服务器后查看不会有乱码。 希望能帮到大家。也感谢给我帮助过的人。
Spring MVC整合IReport生成PDF及中文不显示、乱码解决
spring mvc maven mysql 增删查改,简单demo,可用,不会出现乱码
这种方式可以实现带参数的重定向,但是有弊端,即传中文可能会有乱码问题。 2. 使用 RedirectAttributes RedirectAttributes 是 Spring MVC 框架提供的一个工具类,可以帮助我们实现带参数的重定向。 attr....
《Spring MVC 复习笔记》博客附件。 博客地址:https://blog.csdn.net/Supreme_Sir/article/details/109349332
本篇文章主要介绍了Spring MVC3返回JSON数据中文乱码问题解决,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Spring MVC教程 教程学习: 本教程完整地讲解了Spring MVC的每个知识点,包括独立运行的Demo示例,欢迎一起交流学习。Java学习交流群:239126529 教程软件版本说明: ...Spring MVC Post中文乱码 @RequestPara
主要介绍了Spring MVC参数传递中文乱码解决方法分享,具有一定借鉴价值,需要的朋友可以参考下。
NULL 博文链接:https://lin-zy.iteye.com/blog/1679831
请简述如何解决中文文件名称下载时的乱码问题。 预习检查 SSM框架整合思路是什么? SSM框架整合需要哪些Jar包? 学习目标 掌握 了解 熟悉 SSM框架整合应用程序的编写 1 3 SSM框架的整合思路 2 SSM框架整合时的 配置...
spring mvc框架 jdbcTemplate 里面有查询,删除,修改,增加操作。 jdbcTemplate dataSOURCE
1,搭建SpringMVC 2,加载properties配置文件 3,集成mybatis ...7,解决@ResponseBody return String的中文乱码问题 8,配置静态资源映射ResourceHandlers 9,配置ViewControllers 10,配置filter 11,配置拦截器
springmvc的概念、springmvc的运行原理(前端控制器、处理器映射器、处理器适配器、处理器、视图解析器)、同步请求的...乱码、请求参数的类型转换、静态资源的方向、文件上传、视图解析器、拦截器、全局异常处理器、
前几章我们分别利用spring rmi、httpinvoker、httpclient、webservice技术实现不同服务器间的远程访问。本章我将通过spring jms和activemq实现单Web项目服务器间异步访问和多Web项目...6) Spring mvc配置 7) 实例测试
项目介绍 这是一个 springmvc + ...也配置了转成json解决乱码的问题 <!-- 1、支持HandlerMapper和HandlerAdapter --> <mvc> <!-- 转成json 为UTF-8 --> <mvc:message-converters register-default
一共四个,其中pdf 三个包,源码一个包 第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE ...15.11 解决Spring的中文乱码问题 15.12 运行验证程序 15.13 小结