EncodingFilter.java
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;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class EncodingFilter 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;
}
/**
* Select and set (if specified) the character encoding to be used to
* interpret request parameters for this request.
*
* @param request The servlet request we are processing
* @param result The servlet response we are creating
* @param chain The filter chain we are processing
*
* @exception IOException if an input/output error occurs
* @exception ServletException if a servlet error occurs
*/
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain chain) throws IOException,
ServletException {
HttpServletRequest request =(HttpServletRequest)servletRequest;
HttpServletResponse response = (HttpServletResponse)servletResponse;
// 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);
}
/**
* Place this filter into service.
*
* @param filterConfig The filter configuration object
*/
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
/**
* Select an appropriate character encoding to be used, based on the
* characteristics of the current request and/or filter initialization
* parameters. If no character encoding should be set, return
* <code>null</code>.
* <p>
* The default implementation unconditionally returns the value configured
* by the <strong>encoding</strong> initialization parameter for this
* filter.
*
* @param request The servlet request we are processing
*/
protected String selectEncoding(ServletRequest request) {
return(this.encoding);
}
}
web.xml
<filter>
<filter-name>encodingfilter</filter-name>
<!-- filter-class写EncodingFilter的路径 我这里是com.test.util.EncodingFilter -->
<filter-class>com.test.util.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
<init-param>
<param-name>ignore</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingfilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
分享到:
相关推荐
在这个例子中,`com.example.web.EncodingFilter`是自定义的编码过滤器类,`/`表示所有请求都会经过这个过滤器。 编码过滤器的主要任务是对请求和响应进行编码转换,一般会设置为UTF-8,因为它是国际化的标准。在...
上述配置表示名为"EncodingFilter"的过滤器将应用于所有URL路径,确保每个请求都会经过这个编码过滤器。 标签中的"jsp"和"servlet"暗示了这个过滤器同样适用于JSP页面和Servlet。对于JSP,编码过滤器可以确保POST...
在本教程中,我们将深入探讨如何实现一个Servlet编码过滤器,并理解其工作原理。 首先,让我们了解为什么需要编码过滤器。在Web应用中,用户输入的数据可能包含非ASCII字符,如中文、日文等,这些字符在HTTP请求中...
在上面的代码中,我们定义了一个名为 EncodingFilter 的自定义编码过滤器,该过滤器用于防止中文乱码。该过滤器实现了 Filter 接口,并重写了 init()、doFilter() 和 destroy() 方法。 * init() 方法:在 init() ...
JavaEE Filter全局编码过滤器是Java企业版(JavaEE)中的一个重要组件,它在Web应用程序中扮演着数据处理和预处理的角色。Filter是Java Servlet规范的一部分,允许开发者在请求到达Servlet之前或者响应离开Servlet...
### 解决字符编码的过滤器知识点详解 #### 一、字符编码基础概念 在深入了解如何通过Struts2框架中的Servlet过滤器解决字符编码问题之前,我们先简要回顾一下字符编码的基本概念。字符编码是将计算机内部二进制...
5.2.2 字符编码过滤器EncodingFilter 30 5.3 系统主要功能模块设计 30 5.3.1 相册模块 30 5.3.2 日志模块 32 5.3.3 视频模块 34 5.3.4 留言板模块 35 6 研究成果与前景展望 35 6.1 研究成果概述 35 6.2 软件测试 36 ...
本文将详细讲解如何通过设置字符编码过滤器(`SetCharacterEncodingFilter`)来解决这一问题,同时深入理解字符编码的原理以及在实际应用中的配置方法。 字符编码是计算机处理文本的一种方式,它将字符与数字对应...
通常,我们通过实现`javax.servlet.Filter`接口来创建自定义过滤器,但这里我们有一个名为`EncodingFilter.java`的文件,它可能已经包含了预定义的编码过滤器实现。在这个类中,我们可以找到`doFilter`方法,这是...
在这个场景下,我们需要创建一个专门的过滤器来解决GET请求的编码问题。 首先,我们需要了解HTTP协议的基本知识。HTTP请求的GET方法是通过URL来传递参数的,这些参数与URL本身一起被编码。默认情况下,浏览器使用...
在IT行业中,中文字符过滤器(EncodingFilter)是解决Web应用程序中中文乱码问题的关键工具。乱码问题通常发生在数据的编码与解码过程中,尤其是当客户端与服务器之间通过HTTP传输包含中文字符的数据时。本篇文章将...
下面是一个简单的字符编码过滤器实现: ```java public class EncodingFilter implements Filter { private String encoding = null; @Override public void init(FilterConfig filterConfig) throws ...
假设我们需要解决中文乱码问题,可以创建一个编码过滤器: 1. **创建过滤器类**: ```java public class EncodingFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ...
首先,`EncodingFilter`是一个常见的过滤器,主要用于解决HTTP请求和响应中的编码问题。在处理中文或其他非ASCII字符时,如果没有正确设置编码,可能会出现乱码。`EncodingFilter`通常会将请求和响应的编码设置为UTF...
- 假设我们有两个过滤器,`LoginFilter`负责检查用户是否已登录,`EncodingFilter`用于设置请求和响应的编码格式。 - `LoginFilter`首先被调用,检查session中是否有登录信息,如果没有,重定向到登录页面;如果已...
"JAVA 中的过滤器详解" Java 中的过滤器是一种特殊的 Servlet 用法,主要用来完成一些通用的操作。Servlet 过滤器的适用场合包括认证过滤、登录和审核过滤、图像转换过滤、数据压缩过滤、加密过滤、令牌过滤、资源...
为了解决这个问题,我们可以使用jsp过滤器来实现编码设置。我今天要分享的就是使用jsp过滤器解决中文乱码问题的方法。 什么是jsp过滤器? jsp过滤器(Filter)是一种特殊的jsp组件,用于对jsp页面的请求和响应进行...
这个问题的出现通常是由于字符编码不一致导致的,而过滤器(Filter)作为一种强大的工具,可以有效地帮助我们解决这个问题。本文将详细讲解如何利用过滤器来解决JavaWeb中的乱码问题。 首先,我们需要理解JavaWeb中...
首先,声明一个新的过滤器,给它一个唯一的名称,例如`EncodingFilter`,并指定过滤器的实现类,如`com.filters.SetCharacterEncodingFilter`。在这个例子中,`<init-param>`标签用于设置字符编码和忽略大小写的参数...