〔CharacterEncodingHttpServletRequestWrapper.java〕
package creator.common.filter;
import javax.servlet.http.*;
public class CharacterEncodingHttpServletRequestWrapper extends HttpServletRequestWrapper {
private String ecoding = null;
private String oldEncoding = null;
public CharacterEncodingHttpServletRequestWrapper(HttpServletRequest request,String encoding) {
super(request);
this.ecoding = encoding;
this.oldEncoding = request.getCharacterEncoding();
}
public String getParameter(String value) {
try{
if((oldEncoding == null || isIOS88591(oldEncoding)) && super.getParameter(value)!=null){
return new String(super.getParameter(value).getBytes('iso-8859-1'),ecoding);
}
else{
return super.getParameter(value);
}
}
catch(Exception e){
e.printStackTrace();
return null;
}
}
private boolean isIOS88591(String endcoding){
endcoding = endcoding.toLowerCase();
return endcoding.startsWith('iso')&& (endcoding.indexOf('8859') != -1) && endcoding.endsWith('1');
}
}
〔CharacterEncodingHttpServletResponseWrapper.java〕
package creator.common.filter;
import javax.servlet.http.*;
public class CharacterEncodingHttpServletResponseWrapper extends HttpServletResponseWrapper {
private String ecoding = null;
public CharacterEncodingHttpServletResponseWrapper(HttpServletResponse response,String encoding) {
super(response);
this.ecoding = encoding;
}
/* (non-Javadoc)
* @see javax.servlet.ServletResponse#setContentType(java.lang.String)
*/
public void setContentType(String value) {
super.setContentType('text/html;charset='+ecoding);
}
}
〔CharsetEncodingFilter.java〕
package creator.common.filter;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
public class CharsetEncodingFilter implements Filter {
private FilterConfig config = null;
private String RequestEncoding = null;
private String ResponseEncoding = null;
public void init(FilterConfig arg0) throws ServletException {
this.config = arg0;
this.RequestEncoding = config.getInitParameter('RequestEncoding');
this.ResponseEncoding = config.getInitParameter('ResponseEncoding');
}
/* (non-Javadoc)
* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
*/
public void doFilter(ServletRequest req, ServletResponse res, FilterChain fc)
throws IOException, ServletException {
if(this.config == null){
return;
}
HttpServletRequest request = (HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse)res;
CharacterEncodingHttpServletRequestWrapper mrequestw = new CharacterEncodingHttpServletRequestWrapper(request,ResponseEncoding);
CharacterEncodingHttpServletResponseWrapper wresponsew = new CharacterEncodingHttpServletResponseWrapper(response,ResponseEncoding);
fc.doFilter(mrequestw,wresponsew);
}
public void destroy() {
}
}
〔web.xml〕
<filter>
<filter-name>CharsetEncoding</filter-name>
<filter-class>javabean.com.CharsetEncodingFilter</filter-class>
<init-param>
<param-name>RequestEncoding</param-name>
<param-value>iso-8859-1</param-value>
</init-param>
<init-param>
<param-name>ResponseEncoding</param-name>
<param-value>gb2312</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharsetEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
分享到:
相关推荐
64位H265编码器,全称为Strongene_Lentoid_HEVC_Encoder_x64_v2.0.2.2_2013_07_24,是针对64位操作系统设计的一款高效视频编码工具。HEVC,全称High Efficiency Video Coding(高效视频编码),是H265的正式名称,是...
MINA的编码器和解编码器遵循了Filter设计模式,每个解编码器都是一个过滤器,可以在数据传递过程中进行拦截和处理。 3. **自定义解编码器的实现** 自定义解编码器需要继承MINA提供的AbstractDecoder类或其子类,并...
JavaEE Filter全局编码过滤器是Java企业版(JavaEE)中的一个重要组件,它在Web应用程序中扮演着数据处理和预处理的角色。Filter是Java Servlet规范的一部分,允许开发者在请求到达Servlet之前或者响应离开Servlet...
JavaFilter自定义编码过滤器知识点 一、Filter接口和 FilterChain接口 在 Java 中, Filter 接口和 FilterChain 接口是 Servlet 规范中的两个重要组件。 Filter 接口用于定义一个过滤器, FilterChain 接口用于将...
压缩包中的"AA3FilterSetup.exe"文件是安装程序,它包含了必要的过滤器和解码器,使得Adobe Audition 3.0能够识别并处理上述提到的非原生格式。安装这个扩展后,用户就可以在Audition中直接导入、编辑和导出这些格式...
实现这个功能,我们需要创建一个新的编码器类,继承自Mina提供的基础编码器,如`org.apache.mina.filter.codec.ProtocolEncoder`或`org.apache.mina.filter.codec.ProtocolCodecFilter`。 在编码器的实现中,我们...
在Java Web开发中,Filter(过滤器)是一个强大的工具,它允许开发者在数据处理的前后进行拦截和修改。本文将详细介绍如何在Java中使用Filter过滤器,以及如何配置相关的配置文件,让你一目了然。 ### 1. Filter...
【如何配置Filter过滤器处理JSP中文乱码】 在开发Java Web应用时,尤其是在处理包含中文字符的请求时,可能会遇到中文乱码的问题。解决这个问题的一种常见方法是使用Filter过滤器。以下是配置Filter过滤器处理JSP...
在Java Web开发中,Filter(过滤器)是一个非常重要的组件,它允许我们在数据处理之前或之后执行特定的任务,比如防止跨站脚本攻击(XSS)、处理字符编码问题、实现权限控制等。在这个主题中,我们将深入理解Filter的...
在这个案例中,"Speex Codec Filter"很可能是实现Speex编码和解码功能的过滤器。 在DirectShow中,Filters通过Filter Graph(过滤器图)连接在一起,形成一个处理链。每个Filter接收来自上游Filter的数据,进行处理...
电机驱动及编码器同步采样,内部兼具多重滤波采样处理算法。
### Filter过滤器的概念 在Java Web开发中,`Filter`是一种功能强大的机制,它能够拦截客户端请求,并在请求到达目标资源(如Servlet)之前或之后进行处理。这为开发者提供了极大的灵活性来添加诸如编码处理、登录...
在Java Web开发中,字符编码过滤器(Character Encoding Filter)起着至关重要的作用。它确保了请求和响应数据在处理过程中使用一致的字符编码,从而避免乱码问题。本篇文章将详细探讨Java过滤器(Filter)的概念,...
在Java代码中,我们可以自定义过滤器类继承`javax.servlet.Filter`,然后在`doFilter`方法中设置请求的字符编码。例如: ```java public void doFilter(ServletRequest request, ServletResponse response, ...
通过实现javax.servlet.Filter接口,我们可以定义过滤规则,比如登录检查、GZIP压缩、字符编码转换等。 在Struts2中,Filter可以作为应用程序的入口点,负责拦截所有请求,并根据配置决定是否转发到Struts2的Action...
在Web开发中,编码过滤器(Encoding Filter)是一种常见的技术,用于处理HTTP请求中的编码问题,确保数据在传输过程中的正确性。标题“编码过滤器”直指这一关键概念,而描述“配置在web.xml中的过滤器,支持过滤GET...
在Java的Web开发中,过滤器(Filter)是不可或缺的一部分,尤其在J2EE环境中,它扮演着重要的角色。过滤器提供了一种机制,可以对HTTP请求和响应进行拦截、处理,甚至修改,从而实现诸如数据校验、权限控制、字符...
为了实现在过滤器中获取请求体内容以及响应内容的功能,本方案主要采用了以下技术手段: 1. **对`HttpServletRequest`进行封装**:通过创建`HttpServletRequestWrapper`子类来包装原始请求对象,并重写`getReader()...
Filter可以用来实现诸如数据校验、字符编码转换、登录检查、缓存控制等功能,极大地增强了Web应用程序的功能性和可维护性。 Filter接口定义在javax.servlet包中,主要包含三个方法: 1. `void init(FilterConfig ...