`
fang289040324
  • 浏览: 1948 次
文章分类
社区版块
存档分类
最新评论

java filterchain

阅读更多


马士兵的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());
	}
}

 

  • 大小: 34 KB
分享到:
评论

相关推荐

    自定义FilterChain的编写

    在Java Web开发中,过滤器(Filter)是用于在请求被Servlet处理之前或之后执行一些预处理或后处理任务的重要工具。通常,我们通过实现Servlet的`Filter`接口来创建自定义过滤器,然后在`doFilter()`方法中编写我们的...

    java中filter的用法(过滤器)

    ### Java中的Filter(过滤器)使用详解 #### 一、Filter概述 在Java Web开发中,`Filter`是一种非常实用的技术,它可以在请求到达目标资源(如Servlet或JSP页面)之前进行预处理,或者在响应返回客户端之前进行后...

    java 防盗链详解及解决办法

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; ...

    java中五种常用的过滤器

    在Java Web开发中,过滤器(Filter)是一个非常重要的组件,它允许开发者在请求到达目标资源之前或之后进行处理。本文将详细介绍标题提及的五种常用过滤器,并提供相关实现代码,帮助理解它们的工作原理和用途。 一...

    六个有用的java过滤器

    ### 六个有用的Java过滤器知识点详解 在Java Web开发中,过滤器(Filter)是一种非常重要的技术,它能够对用户的请求和响应进行预处理或后处理,从而实现各种功能需求,例如设置缓存策略、登录验证、字符编码转换等...

    Java防止SQL注入的几个途径

    Java 防止 SQL 注入的几个途径 Java 防止 SQL 注入是一个非常重要的安全问题。SQL 注入攻击是黑客最常用的攻击方式之一,它可以让攻击者访问或修改数据库中的敏感信息。因此,防止 SQL 注入是 Java 开发者必须注意...

    java特效 java的起源

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpReq = (HttpServletRequest) request; // 获取 ...

    java web 修改request携带的参数信息

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest) request; // ...

    SQL注入过滤 (Java版)

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; Enumeration...

    java单点登录流程及其他

    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { // 获取 JWT Token String token = request....

    Java 面试问题(2年工作经验)

    3. Void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException; 三、连接池 连接池是为了解决数据库连接泄漏问题而引入的技术。数据库连接泄漏是指如果在...

    java过滤器

    ### Java过滤器实现原理与应用 #### 过滤器概述 在Java Web开发中,过滤器(Filter)是一种非常实用的技术,它可以在客户端发送请求到服务器端的过程中进行一系列的预处理工作,比如设置字符编码、身份认证等。...

    四个有用的Java过滤器收藏

    ### 四个有用的Java过滤器收藏:深入解析与应用 #### 一、使浏览器不缓存页面的过滤器 在Web开发中,控制浏览器的缓存机制是非常重要的,特别是对于那些需要频繁更新或实时交互的网页。Java Servlet过滤器提供了一...

    java 中如何使用filter过滤器

    在Java Web开发中,Filter(过滤器)是一个强大的工具,它允许开发者在数据处理的前后进行拦截和修改。本文将详细介绍如何在Java中使用Filter过滤器,以及如何配置相关的配置文件,让你一目了然。 ### 1. Filter...

    javaFilter自定义编码过滤器

    * FilterChain 接口:FilterChain 接口是 Java 中的一种过滤器链接口,用于将多个过滤器连接起来,以便实现链式调用。它提供了一个 doFilter() 方法,用于执行下一个过滤器。 二、自定义编码过滤器 在上面的代码中...

    Java几个过滤器学习技巧

    ### Java几个过滤器学习技巧 #### 一、概述 在Java Web开发中,过滤器(Filter)是一种非常实用的功能组件,它可以对用户的请求或响应进行预处理或后处理。通过实现`javax.servlet.Filter`接口,开发者可以自定义...

    Java+Servlet+Api

    Java Servlet技术是Java平台上的一个核心技术,用于创建动态web应用程序。Servlet API是Java Servlet技术的基础,它提供了一系列的接口和类,使得开发者能够编写服务器端的Java程序,处理HTTP请求并生成响应。本资源...

    Java Servlet Api文档

    5. **FilterChain接口**:当一个Filter被调用时,它可以通过FilterChain对象调用下一个Filter或最终的Servlet。这允许创建链式过滤器,以执行多个处理步骤。 6. **EventListener接口**:监听器允许我们监听Web应用...

    JAVA SERVLET帮助文档(API)

    Servlet API是Java Servlet的核心部分,提供了一系列的接口和类,供开发者用来构建可部署在Web服务器上的Java应用程序。这篇帮助文档详细阐述了这些接口和类的使用方法、功能以及它们之间的关系。 在Servlet API中...

    JAVA项目实践,URL存在跨站漏洞,注入漏洞解决方案.docx

    ### JAVA项目实践:URL存在的跨站漏洞与注入漏洞解决方案 #### 一、跨网站脚本(XSS)概述 跨网站脚本(Cross-site scripting,通常简称为XSS或跨站脚本攻击)是一种常见的安全漏洞攻击方式,尤其针对网站应用程序。...

Global site tag (gtag.js) - Google Analytics