过滤器链

package com.zuhe;

public interface Filter {

void doFilter();

}

package com.zuhe;

public class FaceFilter implements Filter{

@Override

public void doFilter() {

System.out.println("this is FaceFilter");

}

}

package com.zuhe;

public class HTMLFilter implements Filter {

@Override

public void doFilter() {

System.out.println("this is HTMLFilter");

}

}

package com.zuhe;

public class SesitiveFilter implements Filter{

@Override

public void doFilter() {

System.out.println("this is SesitiveFilter");

}

}

package com.zuhe;

import java.util.ArrayList;

public class FilterChain implements Filter {

private ArrayList<Filter> filters = new ArrayList<Filter>();

public FilterChain addFilter(Filter filter){

filters.add(filter);

return this;

}

public void doFilter(){

for(Filter filter:filters){

filter.doFilter();

}

}

}

package com.zuhe;

public class Test {

public static void main(String[] args) {

FilterChain fc1 = new FilterChain();

fc1.addFilter(new HTMLFilter());

FilterChain fc2 = new FilterChain();

fc2.addFilter(new SesitiveFilter()).addFilter(new FaceFilter());

fc2.addFilter(fc1);

fc2.doFilter();

}

}

package com.chain.web;

public interface Filter {

void doFilter(Request req,Response res,FilterChain fc);

}

package com.chain.web;

public class HTMLFilter implements Filter{

@Override

public void doFilter(Request req, Response res,FilterChain fc) {

System.out.println("HTMLFilter request...");

fc.doFilter(req, res, fc);

System.out.println("HTMLFilter response...");

}

}

package com.chain.web;

public class FaceFilter implements Filter{

@Override

public void doFilter(Request req, Response res,FilterChain fc) {

System.out.println("facefilter request...");

fc.doFilter(req, res, fc);

System.out.println("facefilter respose...");

}

}

package com.chain.web;

public class SesitiveFilter implements Filter{

@Override

public void doFilter(Request req, Response res, FilterChain fc) {

System.out.println("SesitiveFilter request...");

fc.doFilter(req, res, fc);

System.out.println("SesitiveFilter response...");

}

}

package com.chain.web;

import java.util.ArrayList;

import java.util.List;

public class FilterChain implements Filter {

private List<Filter> filters = new ArrayList<Filter>();

private int index = 0;

public FilterChain addFilter(Filter filter) {

filters.add(filter);

return this;

}

@Override

public void doFilter(Request req, Response res, FilterChain fc) {

if (index == filters.size())

return;

Filter filter = filters.get(index);

index++;

filter.doFilter(req, res, fc);

}

}

package com.chain.web;

public class Request {

}

package com.chain.web;

public class Response {

}

package com.chain.web;

public class Test {

public static void main(String[] args) {

Request req = new Request();

Response res = new Response();

FilterChain fc = new FilterChain();

FilterChain fc1 = new FilterChain();

fc1.addFilter(new SesitiveFilter());

fc.addFilter(new HTMLFilter()).addFilter(new FaceFilter())

.addFilter(fc1);

fc.doFilter(req, res, fc);

}

}

package com.bridge;

/**

*

* @ClassName: 具体的礼物

* @Description: TODO

* @author peihongpeng

* @date 2015-2-21 下午7:37:40

*

*/

public class GiftImpl {

}

package com.bridge;

public class Gift {

protected GiftImpl giftImpl;

}

package com.bridge;

public class Flower extends GiftImpl{

}

package com.bridge;

public class Ring extends GiftImpl{

}

package com.bridge;

public class WarmGift extends Gift {

}

package com.bridge;

public class WildGift extends Gift{

}

Class A{

t()

}

Class B{

A a = new A();  //慢慢淘汰

t(){

//a.t();

New A().t();  尽量使用局部变量

}

}

持久化:内存上的数据保存在硬盘上

设计模式:用来当成样板被参考的范例。解决特定环境下重复出现的问题。

设计模式允许系统结构的某个方面的变化独立于其他方面。

框架能加快程序开发和精良的程序架构

在框架之上开发

组件和框架的区别:组件能完成一定功能的封装体,功能是在它里面独立完成的。

代码背后的思想

单例:节约资源

Java命名

AddressValueObject(AddressVO)值对象(VO),推荐实现equals hashcode

脏数据:数据被修改过

单例控制实例的数目

DAO:data access object 数据访问对象

DepDAO(大写)

AJAX:额贼克斯

Java大会

接口隔离

分层:比如用户管理模块,

Common(base)通用的

时间: 2024-11-06 22:02:13

过滤器链的相关文章

spring boot 自定义过滤器链

spring boot 会按照order值的大小,从大到小的顺序来依次过滤. 贴下代码: package com.osp.ucenter; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootAp

过滤器链-学习笔记

a)一个Web应用可以有0个或多个Filter,多个Filter的组合就是过滤器链b)多个Filter的执行先后顺序,与web.xml文件中配置的顺序有关c)chain.doFilter(request,response)具有二义性: >如果有下一个Filter时,将请求转发给下一个Filter>如果无下一个Filter时,将请求转发给Web资源(serlvet/jsp/html)d)可以将web资源中的一些公共代码,提取出来,放入Filter中 `<filter> <fil

过滤器链调用原理

过滤器中起关键作用的2个类:ApplicationFilterConfig.ApplicationFilterChain ApplicationFilterConfig implements FilterConfig, Serializable ApplicationFilterChain implements FilterChain package org.apache.catalina.core;这2个类的包都在org.apache.catalina.core这个保中,说明是有tomcat容

责任链或过滤器模式-使用过滤链

//过滤器接口 public interface Filter { public void doFilter(Request req,Response res,FilterChain c); } //客户端传递的内容到服务器 //模拟javaweb中的request public class Request { public String requestStr; } //服务器反馈的内容到客户端 //模拟javaweb中的response public class Response { publ

责任链设计模式(过滤器、拦截器)

责任链设计模式(Chain of Responsibility)的应用有:Java Web中的过滤器链.Struts2中的拦截器栈. 先看一个问题: 给定一个字符串“被就业了:),敏感信息,<script>”,对其中的HTML标记和敏感词进行过滤或替换.本文主要以该问题设计方法的演变来讲解责任链设计模式. 第一种设计:没有任何设计模式 设计了一个MsgProcessor类,完成字符串处理的主要工作.MainClass类是本设计中的测试类. 01 02 03 04 05 06 07 08 09

Java Web开发——Filter过滤器

一.过滤器 1.1定义 过滤器是一个服务器端的组件,它可以截取用户端的请求与响应信息,并对这些信息进行过滤. 1.2工作原理 1.项目启动时,从Web容器中加载过滤器: 2.过滤器存在于用户请求和Web资源之间: 3.用户请求和Web响应之间的收发都经由过滤器按照过滤规则进行过滤筛选. 1.3过滤器的生命周期 实例化(web.xml加载)→初始化(init方法)→过滤(doFilter方法)→销毁(destroy方法) 1.初始化:当容器第一次加载该过滤器时,init() 方法将被调用.该类在这

大量逻辑判断优化的思路——责任链模式复习总结及其和状态模式对比

俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及的总结知识点如下: 责任链模式概念和例子 使用的条件 和状态模式的比较分析 责任链的优缺点 纯的责任链和不纯的责任链 javax.servlet.Filter#doFilter()方法源码分析 基于AOP思想,模拟一个拦截器 前面说了一个状态模式,总结过程中发现和这个责任链的使用场景很类似,都是为了解耦大量复杂业务逻辑判断的,那么他们有什么不同呢?回忆状态模式——状态模式允许通过改变对象的内部状态而改变对象自身的行为,这个对象

配置登录过滤器

用途:进入页面时判断用户是否登录,如果没有登录返回某个页面(如登录界面). 代码:web.xml <filter> <filter-name>onlineFilter</filter-name> <filter-class>com.***.***.OnlineFilter</filter-class> <!--  项目中的类,***改为自己项目的包命  --> </filter> <filter-mapping>

[原创]java WEB学习笔记44:Filter 简介,模型,创建,工作原理,相关API,过滤器的部署及映射的方式,Demo

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------