字符过滤器
package com.pdworld.web.filter;
import java.io.IOException;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
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 Encode implements Filter {
private String encode;
private String decode;
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest)request;
HttpServletResponse resp=(HttpServletResponse)response;
//获得请求方式
String method=req.getMethod();
//post 请求可直接设置编码方式
if("post".equalsIgnoreCase(method)){
System.out.println("进行编码!");
request.setCharacterEncoding("GBK");
response.setCharacterEncoding("GBK");
}else{
//get 请求
//从请求中获得所有参数的键值对
Map params=req.getParameterMap();
//获得所有参数的值
Collection c=params.values();
//迭代出每一个参数
for(Iterator it=c.iterator();it.hasNext();){
String[] values=(String[])it.next();
//对每一个字符进行重新的编码解码
for(int i=0;i<values.length;i++){
values[i]=new String(values[i].getBytes(encode),decode);
}
}
//将回复的编码设置为utf-8
response.setCharacterEncoding("GBK");
}
//将请求传递到下一个环节
chain.doFilter(request, response);
}
public void init(FilterConfig config) throws ServletException {
encode=config.getInitParameter("encode");
decode=config.getInitParameter("decode");
}
}
分享到:
相关推荐
在Java Web开发中,字符编码过滤器(Character Encoding Filter)起着至关重要的作用。它确保了请求和响应数据在处理过程中使用一致的字符编码,从而避免乱码问题。本篇文章将详细探讨Java过滤器(Filter)的概念,...
本文将深入探讨"字符编码过滤器"、"J2EE字符编码"、"字符编码转换"以及"POST字符转换"这些关键知识点,并结合提供的文件"encoding-filter.jar"和"使用方法.txt"来解释它们的应用。 首先,字符编码是计算机存储和...
在实际项目中,我们可能需要编写一些测试用例来验证字符编码过滤器的效果,比如包含特殊字符的表单提交,或者不同编码的URL请求等。 6. **最佳实践** - 为确保整个应用的一致性,建议在所有的HTTP响应中都明确指定...
### 解决字符编码的过滤器知识点详解 #### 一、字符编码基础概念 在深入了解如何通过Struts2框架中的Servlet过滤器解决字符编码问题之前,我们先简要回顾一下字符编码的基本概念。字符编码是将计算机内部二进制...
由于不同的字符集编码可能导致数据乱码,编码过滤器的职责就是统一这些编码,防止因编码不一致产生的问题。 在Java Web环境中,过滤器(Filter)是Servlet规范的一部分,它允许开发者在请求到达目标Servlet或JSP...
本文将详细讲解如何通过设置字符编码过滤器(`SetCharacterEncodingFilter`)来解决这一问题,同时深入理解字符编码的原理以及在实际应用中的配置方法。 字符编码是计算机处理文本的一种方式,它将字符与数字对应...
因此,编码过滤器的目的是确保所有的输入和输出都使用一致的字符编码。 JavaWeb中的Filter接口是实现编码过滤的关键。Filter是Servlet API的一部分,可以拦截HTTP请求和响应,进行预处理和后处理。在创建编码过滤器...
Java过滤器是Java Web开发中的一个重要概念,它主要用于在HTTP...通过研究这个项目,开发者可以学习到如何在实际项目中应用过滤器,以及处理字符编码问题,这对于任何涉及用户输入和输出的Java Web应用都是至关重要的。
jsp 中的字符过滤器,屏蔽网页中或JFreeChart中的乱码问题
在这个例子中,过滤器被用来设置请求和响应的字符编码。 4. **解决字符乱码** 要解决字符乱码,我们可以在过滤器中设置HttpServletRequest的`setCharacterEncoding()`方法,指定请求的编码方式,例如设置为UTF-8。...
编码过滤器是一个非常实用的工具,对于处理多语言环境或包含复杂字符的Web应用来说,是必不可少的一部分。 总结一下,Servlet编码过滤器的作用是统一处理请求和响应的编码,防止因为编码不一致导致的乱码问题。实现...
Java字符过滤器,也称为字符编码转换器,是Java编程中处理字符编码问题的重要工具。在处理文本数据时,尤其是在网络传输或者读取不同编码格式的文件时,可能会遇到字符乱码的问题。Java过滤器就是为了解决这些问题,...
总结,SSH框架下的中文乱码问题主要通过自定义过滤器解决,设置合适的请求和响应的字符编码。同时,对于不同的数据提交方式,如表单和JS,需要采取相应的解决方案。在实际开发中,确保整个数据传输过程中的字符编码...
在这个场景下,"全局编码过滤器"是指一个专门用于处理字符编码问题的Filter,它的目的是确保所有进入和离开服务器的数据都采用统一且正确的字符编码,避免因为编码不一致导致乱码问题。 Filter的工作原理是基于请求...
字符过滤器主要用于防止恶意用户通过提交特殊字符或者执行SQL注入、跨站脚本攻击(XSS)等行为,保护服务器免受攻击。 一、JSP过滤器基础 JSP过滤器是基于Servlet规范的Filter接口实现的,它可以拦截请求,对请求和...
JavaFilter自定义编码过滤器知识点 一、Filter接口和 FilterChain接口 在 Java 中, Filter 接口和 FilterChain 接口是 Servlet 规范中的两个重要组件。 Filter 接口用于定义一个过滤器, FilterChain 接口用于将...
这个过滤器的主要任务是在请求到达目标Servlet之前,设置正确的字符编码,以确保后续处理的正确性。在提供的`EncodingFilter.java`文件中,可以看到以下核心代码: ```java public void doFilter(ServletRequest ...