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请求参数与响应结果全局加密和解密详解 在本文中,我们将详细介绍Spring MVC请求参数与响应结果全局加密和解密的相关知识点,包括请求参数的加密和解密、响应结果的加密和解密、ContentType的处理等。 ...
这样,Spring在初始化StringHttpMessageConverter时,我们的处理器会自动运行,确保其支持UTF-8编码,从而避免乱码问题。 通过使用BeanPostProcessor,我们可以在不修改原有Controller代码的情况下,实现对Spring ...
spring mvc 过滤器,实现url过滤,权限模块经常用到的,很不错
在开发Java Web应用程序时,Spring MVC框架经常遇到中文乱码问题,这主要涉及到字符编码的处理。本篇文章将深入探讨如何彻底解决Spring MVC中的中文乱码问题,以便于开发者能够流畅地处理中文数据。 首先,当用户...
// 其他辅助方法,如编码文件名以避免乱码问题 private String encodeFileName(String fileName) { // 实现文件名的编码逻辑 } } ``` 在控制器类中,你可以定义处理文件上传和下载的接口。例如,对于文件上传,...
本篇文章将详细讲解如何在Spring MVC项目中整合IReport来生成PDF,并解决可能出现的中文不显示和乱码问题。 首先,我们需要了解Spring MVC的基本概念。Spring MVC是Spring框架的一部分,它提供了一个模型-视图-控制...
**Spring MVC 中的编码与乱码问题** 在处理中文字符时,可能会遇到乱码问题。为解决这个问题,可以在 Web.xml 中配置 DispatcherServlet 的初始化参数,例如设置编码方式为 UTF-8: ```xml <param-name>...
7. **处理乱码问题**:为了防止乱码,需要在Controller中设置字符编码,例如,`@RequestMapping(value = "/save", method = RequestMethod.POST, consumes = "application/x-www-form-urlencoded; charset=UTF-8")`...
- 配置 CharacterEncodingFilter,解决中文乱码问题。 **4. 实现登录逻辑** - 编写控制器类 (LoginController.java),负责处理登录请求。 - 通过 @RequestMapping 注解指定请求映射路径。 - 在控制器的方法中...
- **设置字符编码过滤器**:通过配置一个全局的字符编码过滤器来解决所有请求的乱码问题。 ```java @WebFilter(urlPatterns = "/*") public class CharacterEncodingFilter implements Filter { private String ...
2. **乱码处理**:可以通过自定义Filter来处理编码问题,例如设置请求和响应的字符编码。 3. **其他注解**:Spring MVC还有许多其他注解,如`@PathVariable`用于处理URI模板变量,`@RequestParam`用于处理请求参数...
该程序使用eclipse作为开发工具,mysql作为数据库。...dwz框架中的乱码问题不用太管,spring mvc自带的过滤器已经配置好了,网页发布到tomcat服务器后查看不会有乱码。 希望能帮到大家。也感谢给我帮助过的人。
8. **处理乱码问题** 为了避免乱码,我们需要在控制器中设置请求和响应的编码方式,或者在 `web.xml` 中配置过滤器。 9. **CRUD(增删改查)操作** Spring MVC 提供了丰富的注解支持,如 `@Autowired` 自动注入...
- `defaultEncoding`:设置编码格式,默认为UTF-8,以防止中文乱码问题。 - `maxUploadSize`:设置允许上传的最大文件大小。需要注意的是,这里的限制指的是所有文件的总大小,而不是单个文件的大小。 3. **异常...
- **CharacterEncodingFilter**:设置全局的字符编码,避免乱码问题。 - **DispatcherServlet**:作为Spring MVC的核心组件,处理所有HTTP请求,将其分发到相应的控制器上。 2. **`applicationContext.xml`**:这...
- `CharacterEncodingFilter`:确保请求和响应的字符编码一致,防止乱码问题。配置示例: ```xml <filter-name>characterEncodingFilter <filter-class>org.springframework.web.filter....
3. **filter**:`CharacterEncodingFilter` 过滤器确保所有的HTTP请求都以指定的编码(这里是UTF-8)进行处理,防止乱码问题。 4. **filter-mapping**:将 `encodingFilter` 过滤器应用于所有以 `.do` 结尾的URL,...
总结,解决Spring 3 MVC中GET提交方式乱码问题,主要涉及服务器端的字符编码过滤器配置、Controller方法的参数接收以及前端页面的编码设置。理解HTTP协议和字符编码原理,以及正确配置Spring MVC,将有助于避免此类...
这种方式可以实现带参数的重定向,但是有弊端,即传中文可能会有乱码问题。 2. 使用 RedirectAttributes RedirectAttributes 是 Spring MVC 框架提供的一个工具类,可以帮助我们实现带参数的重定向。 attr....