在Web应用开发中,我们常常需要对http请求做相应的编码处理,这时,可通过过滤器的方式来实现:
package com.zhangsx.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;
/**
* 编码过滤器。
* 如果在初始化参数中配置了encode,那么将所有的过滤的请求和响应均设置为指定的编码;
* 否则,直接放行,不做任何处理。
*
* @author Zhangshixi
*/
public class EncodeFilter implements Filter {
private FilterConfig config;
// 初始化配置参数
private static final String INIT_PARAM_ENCODE = "encode";
/**
* 初始化方法。
* @param config
* @throws javax.servlet.ServletException
*/
@Override
public void init(FilterConfig config) throws ServletException {
this.config = config;
}
/**
* 如果设置了初始化参数encode,那么将所有过滤的请求和响应均设置为指定的编码;
* 否则,直接放行,不做任何处理。
* @param request 请求
* @param response 响应
* @param chain 过滤器链
* @throws java.io.IOException IO异常
* @throws javax.servlet.ServletException Servlet异常
*/
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
String encode = config.getInitParameter(INIT_PARAM_ENCODE);
if (encode != null && !encode.isEmpty()) {
request.setCharacterEncoding(encode);
}
chain.doFilter(request, response);
if (encode != null && !encode.isEmpty()) {
response.setCharacterEncoding(encode);
}
}
@Override
public void destroy() {
}
}
同时,在web.xml中配置所要过滤的请求即可。如:
<filter>
<description>编码过滤器</description>
<filter-name>EncodeFilter</filter-name>
<filter-class>com.zhangsx.filter.EncodeFilter</filter-class>
<init-param>
<description>编码方式</description>
<param-name>encode</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
分享到:
相关推荐
在Java Web开发中,字符编码过滤器(Character Encoding Filter)起着至关重要的作用。它确保了请求和响应数据在处理过程中使用一致的字符编码,从而避免乱码问题。本篇文章将详细探讨Java过滤器(Filter)的概念,...
在本教程中,我们将深入探讨如何实现一个Servlet编码过滤器,并理解其工作原理。 首先,让我们了解为什么需要编码过滤器。在Web应用中,用户输入的数据可能包含非ASCII字符,如中文、日文等,这些字符在HTTP请求中...
JavaEE Filter全局编码过滤器是Java企业版(JavaEE)中的一个重要组件,它在Web应用程序中扮演着数据处理和预处理的角色。Filter是Java Servlet规范的一部分,允许开发者在请求到达Servlet之前或者响应离开Servlet...
本文将深入探讨"字符编码过滤器"、"J2EE字符编码"、"字符编码转换"以及"POST字符转换"这些关键知识点,并结合提供的文件"encoding-filter.jar"和"使用方法.txt"来解释它们的应用。 首先,字符编码是计算机存储和...
在给定的标题“JavaWeb页面过滤器之编码过滤”和描述中,我们可以深入探讨JavaWeb中的编码过滤器,以及如何在MyEclipse 8.5环境下开发和应用这样的过滤器。这个过滤器不仅适用于JSP页面,也适用于Servlet和HTML等Web...
JavaFilter自定义编码过滤器知识点 一、Filter接口和 FilterChain接口 在 Java 中, Filter 接口和 FilterChain 接口是 Servlet 规范中的两个重要组件。 Filter 接口用于定义一个过滤器, FilterChain 接口用于将...
在Java Web开发中,"全站请求编码过滤器"是一个至关重要的组件,它确保了所有来自客户端的请求数据(如表单提交、URL参数等)能够正确地被解码为服务器端可理解的格式,避免因为字符编码问题导致的数据乱码。...
本文将详细讲解如何通过设置字符编码过滤器(`SetCharacterEncodingFilter`)来解决这一问题,同时深入理解字符编码的原理以及在实际应用中的配置方法。 字符编码是计算机处理文本的一种方式,它将字符与数字对应...
javaweb 中过滤器的设置 包括配置文件和servlet的设置
在实际项目中,我们可能需要编写一些测试用例来验证字符编码过滤器的效果,比如包含特殊字符的表单提交,或者不同编码的URL请求等。 6. **最佳实践** - 为确保整个应用的一致性,建议在所有的HTTP响应中都明确指定...
编码过滤器 可以下载看一下 如有不足的地方 请提出来
环境:XP + VC6 + DirectShow 这是本人写的一个Xvid编码过滤器,支持对YV12、RGB24、RGB32的编码,支持外部接口调用SetFrameRate、SetEncodeQuant分别设置编码时的帧率、编码质量
Java编码过滤器。 public class SetCharacterEncodingFilter implements Filter
"Spring MVC内置编码过滤器详解" Spring MVC框架中,如何解决从页面传来的字符串的编码问题?答案是使用CharacterEncodingFilter过滤器,该过滤器是Spring MVC内部提供的,主要用于设置请求响应的字符编码。 ...
假设我们需要解决中文乱码问题,可以创建一个编码过滤器: 1. **创建过滤器类**: ```java public class EncodingFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ...
在这个过滤器中,我们首先将请求转换为`HttpServletRequest`对象,然后调用`setCharacterEncoding()`方法设定字符编码为目标编码(如GBK或UTF-8),最后将请求传递给下一个过滤器或目标Servlet。 为了使过滤器生效...
下面是一个简单的字符编码过滤器实现: ```java public class EncodingFilter implements Filter { private String encoding = null; @Override public void init(FilterConfig filterConfig) throws ...