filter怎么写

1. C# filter怎么写 主要是采用了HttpResponse.Filter属性来处理 。
具体代码如下: 首先自定义一个类,来作为非法词汇的过滤器 1 public class ResponseFilter:Stream 2 { 3 #region properties 4 5 Stream responseStream; 6 long position; 7 StringBuilder html = new StringBuilder(); 8 9 #endregion 10 11 #region constructor 12 13 public ResponseFilter(Stream inputStream) 14 { 15 16 responseStream = inputStream; 17 18 } 19 20 #endregion 21 22 #region implemented abstract members 23 24 public override bool CanRead 25 { 26 get { return true; } 27 } 28 29 public override bool CanSeek 30 { 31 get { return true; } 32 } 33 34 public override bool CanWrite 35 { 36 get { return true; } 37 } 38 39 public override void Close() 40 { 41 responseStream.Close(); 42 } 43 44 public override void Flush() 45 { 46 responseStream.Flush(); 47 } 48 49 public override long Length 50 { 51 get { return 0; } 52 } 53 54 public override long Position 55 { 56 get { return position; } 57 set { position = value; } 58 } 59 60 public override long Seek(long offset, System.IO.SeekOrigin direction) 61 { 62 return responseStream.Seek(offset, direction); 63 } 64 65 public override void SetLength(long length) 66 { 67 responseStream.SetLength(length); 68 } 69 70 public override int Read(byte[] buffer, int offset, int count) 71 { 72 return responseStream.Read(buffer, offset, count); 73 } 74 75 #endregion 76 77 #region write method 78 79 public override void Write(byte[] buffer, int offset, int count) 80 { 81 82 string sBuffer = System.Text.UTF8Encoding.UTF8.GetString(buffer, offset, count); 83 84 //得到非法词汇列表,这个可以在数据库或Web.Config中读取出来 85 string pattern = @"(非法词汇1|非法词汇2|非法词汇3)"; 86 87 88 string[] s = pattern.Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries); 89 90 foreach (string s1 in s) 91 { 92 sBuffer = sBuffer.Replace(s1, "**"); 93 } 94 95 96 byte[] data = http://www.xuexi88.com/zhishi/System.Text.UTF8Encoding.UTF8.GetBytes(sBuffer); 97 responseStream.Write(data, 0, data.Length); 98 99 }100 101 #endregion102 103 104 } 然后再Global.asax文件中,添加如下代码:1 public void Application_BeginRequest()2 {3 Response.Filter = new ResponseFilter(Response.Filter);4 5 } 。
2. 不明白Filter过滤器怎么用,大家帮帮我首先问一个问题,FilterChain 我来给你简单的说一下吧:) 首先要明确 。
Filter是JSP2.0里面的东西,顾名思义,也就是过滤器的意思 和你说说如何用吧 。要用Filter就得在web.xml中配置 例: //配置方法和配置普通的Servlet一样的哦 PrivFilter com.myPriv.filter.PrivFilter PrivFilter /resource/* //com.myPriv.filter.PrivFilter是这个过滤器所在的位置 。
当然这个过滤器必须实现接口javax.servlet.Filter 。然后就可以在过滤器这个接口方法中增加过滤条件了 publicvoiddoFilter(ServletRequsetrequest,ServletResponseresponse,FilterChainchain) thowsServletException,IOException{ } 然后你可以把过滤条件写出来,写在doFilter方法里面 我这里写一个简单的例子: publicvoiddoFilter(ServletRequestreq,ServletResponseres, FilterChainchain)throwsIOException,ServletException{ HttpServletRequestrequest=(HttpServletRequest)req; HttpServletResponseresponse=(HttpServletResponse)res; HttpSessionsession=request.getSession(); ServletContextapplication=session.getServletContext(); if(session.getAttribute("userSession")==null) { response.sendRedirect("error/priv_error.jsp"); return; } else { chain.doFilter(request,response); } } 在上面的这个过滤方法中,如果session.getAttribute("userSession")==null)那就跳转到错误页面 。
如果不为空,则继续 所以 chain.doFilter(request,response);的意思就是跳转到下个页面,明白了吧? 如果还有不明白 。,可以留下你的问题 ------------------------ 还有忘了回答你的问题了 。
java会在处理每一个Servlet时都走一次Filter的 。所以你不必担心你的过滤不起作用了 而且chain.doFilter(request.response); 是必须的 。