马士兵的filterchain练习一下,有点小改动
package filter; import filterChain.FilterChain; import information.Request; import information.Response; public interface Filter { public void doFilter(Request rq, Response rp, FilterChain fc); }
package filterChain; import information.Request; import information.Response; import java.util.ArrayList; import java.util.List; import filter.Filter; public class FilterChain implements Filter { List<Filter> chain = new ArrayList<Filter>(); int i = 0; public Filter addFilter(Filter f) { chain.add(f); return this; } public void doFilter(Request rq, Response rp){ doFilter(rq, rp, this); } public void doFilter(Request rq, Response rp, FilterChain fc) { if (i == chain.size()) return; Filter f = chain.get(i); i++; f.doFilter(rq, rp, fc); } }
package filter.impl; import information.Request; import information.Response; import filter.Filter; import filterChain.FilterChain; public class TextFilter implements Filter { public void doFilter(Request rq, Response rp, FilterChain fc) { rq.setS(rq.getS().replace("fang", "方")); fc.doFilter(rq, rp); rp.setS(rp.getS()+"TextFilter "); } }
package filter.impl; import information.Request; import information.Response; import filter.Filter; import filterChain.FilterChain; public class AddFilter implements Filter { public void doFilter(Request rq, Response rp, FilterChain fc) { rq.setS("姓名: "+rq.getS()); fc.doFilter(rq, rp); rp.setS(rp.getS() + "AddFilter "); } }
package information; public class Request { String s; public String getS() { return s; } public void setS(String s) { this.s = s; } }
package information; public class Response { private String s; public String getS() { return s; } public void setS(String s) { this.s = s; } }
package test; import filter.impl.AddFilter; import filter.impl.TextFilter; import filterChain.FilterChain; import information.Request; import information.Response; public class Test { public static void main(String[] args) { Request rq = new Request(); Response rp = new Response(); TextFilter f = new TextFilter(); AddFilter af = new AddFilter(); FilterChain fc = new FilterChain(); rq.setS("fangshaowei"); rp.setS("返回信息: "); fc.addFilter(f); fc.addFilter(af); fc.doFilter(rq, rp, fc); System.out.println(rq.getS()); System.out.println(rp.getS()); } }
相关推荐
不使用Servlet Filter接口,自定义FilterChain处理多个Filter执行顺序问题
03 import java.io.IOException; 04 import java.util.Enumeration; 05 06 import javax.servlet.Filter; 07 import javax.servlet.FilterChain; 08 import javax.servlet.FilterConfig; 09 import ...
* 当前类名:FilterChain.java * 项目名称:JavaStudy * 创建时间:2011-12-28 */ package org.java.com.design.filter; import java.util.ArrayList; import java.util.List; public class FilterChain ...
* 当前类名:FilterChain.java * 项目名称:JavaStudy * 创建时间:2011-12-28 */ package org.java.com.design.filter; import java.util.ArrayList; import java.util.List; public class FilterChain ...
FilterChain FilterConfig GenericServlet HttpServlet HttpServletRequest HttpServletRequestWrapper HttpServletResponse HttpServletResponseWrapper HttpSession HttpSessionActivationListener ...
20.2.3 filterchain接口 590 20.3 过滤器的部署 591 20.4 过滤器的开发 592 20.5 对用户进行统一验证的过滤器 594 20.6 对请求和响应数据进行替换的 20.6 过滤器 600 20.7 小结 609 第21章 中文乱码问题与...
20.2.3 filterchain接口 590 20.3 过滤器的部署 591 20.4 过滤器的开发 592 20.5 对用户进行统一验证的过滤器 594 20.6 对请求和响应数据进行替换的 20.6 过滤器 600 20.7 小结 609 第21章 中文乱码问题与...
FilterChain chain) throws IOException, ServletException { MyRequest myRequest = null; HttpServletRequest request2 = (HttpServletRequest) request; if (request2.getMethod() == "post") { ...
20.2.3 filterchain接口 590 20.3 过滤器的部署 591 20.4 过滤器的开发 592 20.5 对用户进行统一验证的过滤器 594 20.6 对请求和响应数据进行替换的 20.6 过滤器 600 20.7 小结 609 第21章 中文乱码问题与...
20.2.3 filterchain接口 590 20.3 过滤器的部署 591 20.4 过滤器的开发 592 20.5 对用户进行统一验证的过滤器 594 20.6 对请求和响应数据进行替换的 20.6 过滤器 600 20.7 小结 609 第21章 中文乱码问题与...
import java.io.IOException; import javax.servlet.*; public class CharacterEncodingFilter implements Filter{ protected String encoding = null; protected FilterConfig filterConfig = null; public ...
import java io IOException; import javax servlet Filter; import javax servlet FilterChain; import javax servlet FilterConfig; import javax servlet RequestDispatcher; import javax servlet ...
代码如下:package dw05prj.util.filter; import javax.servlet.Filter; import javax.servlet.FilterConfig... import javax.servlet.FilterChain; import java.io.IOException; /*页面字符集过滤流*/ /* 在web.xml中配
import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest...
在 Servlet API 中定义了三个接口类来开供开发人员编写 Filter 程序:Filter, FilterChain, FilterConfig。 Filter 程序是一个实现了 Filter 接口的 Java 类,与 Servlet 程序相似,它由 Servlet 容器进行调用和...
2. FilterChain接口中仅定义一个方法:public void doFilter(ServletRequest req,ServletResponse res),该方法的作用是。() (1分) A.用于将请求/响应继续沿过滤器链向后传给下一个过滤器。如果调用该方法的过滤...
模型:封装应用程序的数据和业务逻辑(POJO一个普通的JAVA类) 视图:实现应用程序的信息显示功能(JSP) 控制器:接收来自用户的输入,调用模型层,响应对应的试图组件(Servlet Filter) 使用Filter 作为控制...
import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet....
本文实例为大家分享了jsp实现登录验证的过滤器,供大家参考,具体内容如下 1.新建一个Dynamic Web Project项目,里面新建1个filter文件、1个servlet文件...import javax.servlet.FilterChain; import javax.servlet.Fi
JAVA配置跨越访问Filter APP要访问WEB系统,需要进行跨域设置 关键: public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {}