当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

filter过滤器设置字符格式和过滤不文明用语

发表于: 2015-05-12   作者:永夜-极光   来源:转载   浏览:
摘要: 1.filter源代码如下 package s050903; //对post请求方式设置编码: 通过web-xml中设置filter的init-param,再在filter的init中获取参数,实现filter对所有req设置编码格式 import java.io.IOException; import java.io.UnsupportedEncodingException; i

1.filter源代码如下

package s050903;
//对post请求方式设置编码:  通过web-xml中设置filter的init-param,再在filter的init中获取参数,实现filter对所有req设置编码格式
import java.io.IOException;
import java.io.UnsupportedEncodingException;

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.HttpServletRequestWrapper;


public class FilterOne implements javax.servlet.Filter{
	  private String encoding;
	public void init(FilterConfig con) throws ServletException {
		encoding=con.getInitParameter("encoding");
	}


	public void doFilter(ServletRequest req, ServletResponse res,
			FilterChain chain) throws IOException, ServletException {
		System.err.println("dofilter service()");
		req.setCharacterEncoding(encoding);
		res.setContentType("text/html;charset=" + encoding);
		
		
		//post方式不需要包装,get才需要包转,提高效率
		HttpServletRequest greq=(HttpServletRequest) req;
		if(greq.getMethod().equals("GET"))
		{
		     req=new MyRequest((HttpServletRequest)req);
		     System.err.println("do Get()");
		}
		chain.doFilter(req, res);   
		
	}
	
	public void destroy() {
		
	}

}

class MyRequest extends HttpServletRequestWrapper{
	  private String[] ss;
	public MyRequest(HttpServletRequest request) {
		super(request);
               //要过滤的不文明用语数组,一般从数据库读取,这里为了方便,自己罗列了3个
		ss=new String[]{"sb","你妈的","白痴"};
	}
	
	public String getParameter(String name)
	{
		String  val=super.getParameter(name);
	
			try {
				val=new String(val.getBytes("ISO-8859-1"),super.getCharacterEncoding());
				
				//过滤脏话,用**替代不文明用语
				for(String s:ss)
				{
					val=val.replace(s, "**");
				}
				
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();                       
			}
		
		return val;
	}
}

 2.代码思想分析:

    用filter对请求进行拦截,然后在filter中设置字符格式,替换掉不文明用语    

 

 

  3.具体步骤:

              3.1 创建一个新的类,extends  HttpServletRequestWrapper

              3.2 创建一个带参数(参数类型为HttpServletRequest )的构造方法,扩展需要修改的方法

              3.3 在filter的doFilter中创建包装类的实例,传入被包装的类

              3.4 根据需要调用被增强的方法

filter过滤器设置字符格式和过滤不文明用语

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
一、Filter的介绍 Filter也称之为过滤器,它是Servlet2.3以上新增加的一个功能,其技术也是非常强大
过滤器Filter 过滤器,即在源数据和目的数据之间起过滤作用的组件.对web应用程序来说,过滤器是一个驻
一。 1. public class SessionFilter implements Filter{ public void init(FilterConfig filterCon
是什么? 一种可以在Servlet处理请求之前和应答之后实现一定功能处理的技术。 能干什么? 能够在一
1. Servlet过滤器Filter本身并不生成请求和响应对象,它只提供过滤作用。 2. Servlet过滤器能够在Se
什么是过滤器   过滤器Filter其实就是Servlet,只不过它的职责是在过滤信息,在请求进入核心servl
过滤器简介 a)Filter是SUN公司提供的一个资源过滤器接口,不同的Web容器有着不同的实现 b)Filter位
动画图解:Excel字符格式设置   1、设置字体:选中需要设置字体的单元格(区域),鼠标按“格式”
一、Filter简介   Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Fi
1Servlet过滤器本身并不生成请求和响应对象,它只提供过滤作用。 2Servlet过滤器能够在Servlet被调
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号