Filter及FilterChain的使用详解:http://hanlei127a.blog.163.com/blog/static/27078345201232435017245/
过滤器就是拦截了请求和响应操作,并加一些操作处理
字符过滤器:解决中文乱码的问题,在请求和响应时加以字符处理的一些操作
public class CharatorFilter implements Filter{
private String encoding;
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//解决post方式中文乱码问题
request.setCharacterEncoding(encoding);//这里的encoding参数在web.xml里有配
response.setContentType("text/html;charset="+encoding);//设置响应类型和编码方式
response.setCharacterEncoding(encoding);
//释放请求,过滤垫释放请求和相应,CharatorRequstWapper是针对get方式的提交重写getParameter方法,加入get方式的转码
chain.doFilter(new CharatorRequstWapper((HttpServletRequest) request), response);
}
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub 这里得到web.xml配置的初始化参数;
encoding = filterConfig.getInitParameter("encoding");
}
下面是CharatorRequstWapper
/**
* 自定义request,重写它的getParameter();重新包装request
* @author kuang
*HttpServletRequestWrapper:这个是HttpServletRequest的实现类
*/
public class CharatorRequstWapper extends HttpServletRequestWrapper{
HttpServletRequest request;
public CharatorRequstWapper(HttpServletRequest request) {
super(request);
this.request = request;
}
@Override
public String getParameter(String name) {
//得到用户提交数据的方式
String method = request.getMethod();
//取得具体的值
String value = super.getParameter(name);
//判断是否是get方式请求
if("get".equalsIgnoreCase(method)){
try {
//把数据做转码处理
value = new String(value.getBytes("ISO-8859-1"),"utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return value;
}
}
下面是web.xml的配置;
<!-- 配置过滤器,放在第一位置,并含有一个参数变量,econding,在过滤器的servlet中这个参数就相当于值utf-8-->
<filter>
<filter-name>encoding</filter-name>
<filter-class>com.rshz.l10.filter.CharatorFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>拦截所有请求
</filter-mapping>
分享到:
相关推荐
jsp过滤器:字符过滤器文件过滤器图片过滤器等
java过滤器 字符乱码 乱码 java乱码 过滤器
jsp 中的字符过滤器,屏蔽网页中或JFreeChart中的乱码问题
中文字符过滤器 JAVA的中文字符过滤器 EncodingFilter过滤器
字符编码过滤器 j2ee字符字符编码 字符编码过滤器 字符编码转换 post字符转换
java非法字符过滤器,对非法字符进行过滤
MyEclipse6.0 制作的小样例。包含Java特定字符。标签过滤。字符编码转换。代码清晰易懂。方便使用,作为工具非常合适 使用 List 作为 过滤字符库
java过滤器实现统一字符编码 封装好的工具类,可以直接使用
javaWeb实现的过滤器敏感字过滤,建一个敏感字符的文件,发送时实现过滤为***
对struts2配置,针对网个网站的任何文件的编码都使用SERVLET encodingfilter中设定的 解决字符编码的过滤器
解决编码传参中文乱码问题,附有.java和web.xml配置文件关键代码
Android开发之EditText字符串过滤器InputFilter
该方法用于struts框架中,只需简单配置即可 使用。
用监听器实现在线人数统计,过滤器实现页面自动编码 非法字符过滤
java web 购物车,字符过滤器,权限过滤器,详细备注,适合初学者,servlet ,jsp,有数据库,简单易懂,
过滤器代码--解决jsp中的字符乱码问题,可以让你不在为字符的乱码担心。
这是一个不错的例子,使用过滤器解决了字符乱码的问题
过滤器过滤用户输入的非法字符,如“” “%” “+”等需要的两个类XssFilter.java和XssHttpServletRequestWrapper.java