-------------------------------------
SetCharacterEncodingFilter.java
------------------------------------------------------------------------------
package com.core.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 SetCharacterEncodingFilter implements Filter {
// ----------------------------------------------------- Instance Variables
/**
* The default character encoding to set for requests that pass through this
* filter.
*/
protected String encoding = null;
/**
* The filter configuration object we are associated with. If this value is
* null, this filter instance is not currently configured.
*/
protected FilterConfig filterConfig = null;
/**
* Should a character encoding specified by the client be ignored?
*/
protected boolean ignore = true;
// --------------------------------------------------------- Public Methods
/**
* Take this filter out of service.
*/
public void destroy() {
this.encoding = null;
this.filterConfig = null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// Conditionally select and set the character encoding to be used
if (ignore || (request.getCharacterEncoding() == null)) {
String encoding = selectEncoding(request);
if (encoding != null)
request.setCharacterEncoding(encoding);
}
// Pass control on to the next filter
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
String value = filterConfig.getInitParameter("ignore");
if (value == null)
this.ignore = true;
else if (value.equalsIgnoreCase("true"))
this.ignore = true;
else if (value.equalsIgnoreCase("yes"))
this.ignore = true;
else
this.ignore = false;
}
// ------------------------------------------------------ Protected Methods
protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}
}
-----------------http://bbs.17testing.com/thread-6528-1-1.html---------------------------------------------------
在web.xml 添加:
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>
systemadmin.SetCharacterEncodingFilter
</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>
分享到:
相关推荐
1. **添加过滤器**:首先,我们需要在Web应用的`web.xml`文件中添加一个`CharacterEncodingFilter`,这个过滤器会在请求进入控制器之前设置正确的字符编码。 ```xml <filter-name>characterEncodingFilter...
2. **修改`web.xml`**:在项目的`WEB-INF/web.xml`文件中,添加过滤器以确保请求和响应都使用UTF-8编码: ```xml <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web....
此外,还需要处理可能出现的乱码问题,例如在过滤器或ActionForm中设置字符编码。 总之,Struts 1.x教程旨在帮助初学者理解Struts框架的工作原理和使用方式,通过mystruts案例,学习者可以逐步掌握从数据库交互到...
### Struts2中文乱码问题解决方案 在使用Struts2框架进行Web开发的过程中,中文乱码问题是一个常见的挑战。这不仅影响用户体验,还可能导致数据不一致等问题。为了解决这一问题,我们需要理解其背后的原理,并采取...
Struts2提供了多种方式来解决乱码问题,其中就包括通过配置过滤器和XML配置文件。 `TextFilter.java` 文件可能是一个自定义过滤器,用于处理HTTP请求中的编码问题。在Java Web应用中,过滤器是拦截请求并进行预处理...
- 添加一个名为`struts-cleanup`的过滤器,使用`org.apache.struts2.dispatcher.ActionContextCleanUp`类。 ```xml <filter-name>struts-cleanup</filter-name> <filter-class>org.apache.struts2.dispatcher....
Struts2 Action 处理中文乱码问题是一个常见的挑战,尤其是在进行Web开发时,由于编码格式不统一,可能导致输入或显示的中文字符出现乱码。以下是对两种解决方法的详细解释: 方法一:通过配置Struts2的i18n编码 ...
Struts框架中的ActionForm乱码问题以及Servlet全局过滤器的转义编码处理是Java Web开发中常见的字符编码问题。在开发基于Struts的Web应用时,乱码主要出现在三个方面:页面显示乱码、参数传递乱码以及国际化资源文件...
在Struts框架中,可以配置`struts-default.xml`或自定义的配置文件,添加全局过滤器来设定字符编码。例如: ```xml <filter-name>charsetFilter</filter-name> <filter-class>org.apache.struts2.dispatcher....
#### 方法一:通过添加过滤器解决乱码 **原理介绍**:通过自定义过滤器,在请求到达处理组件之前对请求进行编码设置,从而解决乱码问题。这种方式灵活性高,可全局应用于整个应用。 **具体实现**: 1. **创建过滤...
本文将详细讲解如何通过设置字符编码过滤器(`SetCharacterEncodingFilter`)来解决这一问题,同时深入理解字符编码的原理以及在实际应用中的配置方法。 字符编码是计算机处理文本的一种方式,它将字符与数字对应...
1. **修改web.xml**:在`web.xml`中配置过滤器,如使用`CharacterEncodingFilter`来强制设置请求和响应编码为UTF-8: ```xml <filter-name>characterEncodingFilter</filter-name> <filter-class>org.spring...
### Struts 1.2 中文乱码问题详解与解决方案 #### 一、问题背景及原因分析 在 Web 应用开发过程中,特别是在使用 Java 的 Struts 1.2 框架时,中文乱码问题是开发者经常遇到的一个难题。这不仅影响用户体验,还会...
本文将详细介绍如何通过配置`struts.properties`文件与`web.xml`中的过滤器来解决中文乱码问题。 #### 一、Struts2 配置文件(struts.properties)中的关键设置 在Struts2项目中,可以通过修改`struts.properties`...
- **过滤器设置**:确保在web.xml中配置了Struts2的核心过滤器`<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>`,并设置字符集参数`<init-param><param-...
总结来说,解决Struts下的汉字乱码问题,需要从页面、过滤器、服务器配置和Struts核心Servlet等多方面进行设置,确保在整个请求生命周期中,中文字符始终以正确的编码进行处理。这不仅涉及了前端的展示,还涉及到...
综上所述,解决Struts2中文乱码问题的方法主要包括设置JSP页面编码、配置Struts2国际化编码、修改web.xml配置、使用POST请求方式以及自定义过滤器等。开发者可以根据项目的具体情况选择合适的方法来解决中文乱码问题...
character-encoding-filter 是 Java Web 乱码过滤器。 web.xml <filter-name>character-encoding-filter</filter-name> <filter-class>com.github.zhanhb.filter.CharacterEncodingFilter</filter-class> ...
除了CharacterEncodingFilter之外,还需要配置Struts2本身的过滤器,确保Struts2能够正确处理请求。 1. **Struts2 Filter配置**: ```xml <filter-name>struts2</filter-name> <filter-class>org.apache....
在web.xml中添加此过滤器并配置为全局过滤器,可以确保所有请求都使用UTF-8编码,避免乱码问题。 5. **Struts2详解**: Struts2框架的核心包括Action、Interceptor(拦截器)、Result和Value Stack等组件。Action...