使用过滤器过滤非法文字.doc_第1页
使用过滤器过滤非法文字.doc_第2页
使用过滤器过滤非法文字.doc_第3页
使用过滤器过滤非法文字.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

过滤非法文字在用户交互过程中,如果在论坛中出现影响网站形象的文字,可能会降低网站信誉,也有的论坛禁止使用某些文字,比如在用户反馈意见时禁止出现一些不文明的字词。实现过程:1 创建页面index.jsp,内容随便输入,为测试使用2 编写MyOutputStream类,它继承ServletOutPutStream类被重写write()方法,使用自己的字节数组输出流实现了数据输出。关键代码如下:import java.io.ByteArrayOutputStream;import java.io.IOException;import javax.servlet.ServletOutputStream;public class MyOutputStream extends ServletOutputStream ByteArrayOutputStream stream;/创建字节数组输出流public MyOutputStream(ByteArrayOutputStream stream)this.stream=stream;/在构造方法初始化输出流Overridepublic void write(int arg0) throws IOException / TODO Auto-generated method stubstream.write(arg0);/使用本类的输出流代替父类的输出方法3 编写ResponseWrapper类,他继承自HttpServletResponseWrapper类,并重写getOutputStream()方法和getWriter()方法返回本类定义的输出流,自定义的toByteArray()方法可以获取这些输出流的数据。关键代码如下:import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpServletResponseWrapper;import com.my.MyOutputStream;public class ResponseWrapper extends HttpServletResponseWrapper private MyOutputStream stream;/声明自定义输出流private ByteArrayOutputStream byteStream;/声明字节输出流private PrintWriter pw;/声明打印输出流public ResponseWrapper(HttpServletResponse response) super(response);/ TODO Auto-generated constructor stubthis.byteStream=new ByteArrayOutputStream();this.stream=new MyOutputStream(this.byteStream);this.pw=new PrintWriter(this.byteStream);Overridepublic ServletOutputStream getOutputStream() throws IOException / TODO Auto-generated method stubreturn this.stream;Overridepublic PrintWriter getWriter() throws IOException / TODO Auto-generated method stubreturn this.pw;public byte toByteArray()return this.byteStream.toByteArray();4 创建LetterFilter过滤器,他是本类的核心类,实现了Filter接口,在doFilter()方法的实现代码中创建自己的应答对象,执行过滤器之后的操作后获取应答对象输出流的内容,然后代替该内容中的非法文字,再通过原有应答对象输出应答数据到浏览器。关键代码如下:import java.io.IOException;import java.io.PrintWriter;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.HttpServletResponse;import com.wrapper.ResponseWrapper;/* * Servlet Filter implementation class LetterFilter */public class LetterFilter implements Filter /* * Default constructor. */ public LetterFilter() / TODO Auto-generated constructor stub /* * see Filter#destroy() */public void destroy() / TODO Auto-generated method stub/* * see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) */public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException / TODO Auto-generated method stub/ place your code here/ pass the request along the filter chainHttpServletResponse httpRes=(HttpServletResponse) response;ResponseWrapper responseWrapper=new ResponseWrapper(httpRes);chain.doFilter(request, responseWrapper);/继续执行过滤之后的操作responseWrapper.getWriter().flush();byte bytes=responseWrapper.toByteArray();/获取应答对象的输出数据String content=new String(bytes);/把数据转化为字符串content=content.replace(d, a);/进行替换/System.out.println(content);PrintWriter out=httpRes.getWriter();/获取应答对象的输出流out.print(content);/输出替换后的数据out.close();/* * see Filter#init(FilterConfig) */public void init(FilterConfig fConfig) throws S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论