直接上代码Filter.java

public interface Filter {

//过滤器

public void doFilter(Request request,Response response,FilterChain chain);

}

FilterChain.java

public class FilterChain {

//存放所有的过滤器

private List filters ;

//记录当前过滤索引

private int index;

//过滤链初始化

public FilterChain()

{

filters = new ArrayList(10);

}

public void addFilter(Filter filter)

{

filters.add(filter);

}

/**

* 迭代过滤

*/

public void doFilter(Request request,Response response)

{

if ( index >= filters.size() )

return;

filters.get( index++ ).doFilter(request, response, this);

}

}

Request.java

public class Request {

private String value;

public String getValue() {

return value;

}

public void setValue(String value) {

this.value = value;

}

@Override

public String toString() {

return this.value;

}

}

Response.java

public class Response {

private String value;

public String getValue() {

return value;

}

public void setValue(String value) {

this.value = value;

}

@Override

public String toString() {

return this.value;

}

}

FilterOne.java

public class FilterOne implements Filter{

/**

* 过滤FUCK字符

*/

@Override

public void doFilter(Request request, Response response, FilterChain chain) {

System.out.println("进入过滤器FilterOne---------------------------------------");

//执行下一个过滤器

chain.doFilter(request, response);

System.out.println("出去过滤器FilterOne---------------------------------------");

}

}

FilterTwo.java

public class FilterTwo implements Filter{

@Override

public void doFilter(Request request, Response response, FilterChain chain) {

System.out.println("进入过滤器FilterTwo---------------------------------------");

//执行下一个过滤器

chain.doFilter(request, response);

System.out.println("出去过滤器FilterTwo---------------------------------------");

}

}

Test.java

public class Test {

public static void main(String[] args) {

FilterChain chain = new FilterChain();

chain.addFilter(new FilterOne());

chain.addFilter(new FilterTwo());

chain.doFilter(new Request(), new Response() );

}

}

运行结果

进入过滤器FilterOne---------------------------------------

进入过滤器FilterTwo---------------------------------------

出去过滤器FilterTwo---------------------------------------

出去过滤器FilterOne---------------------------------------

memcached+tomcat转发forward时 sessionid一直变化的问题

今天遇到了一个很奇怪的问题, 我在tomcat过滤器 中, 对请求过来的静态资源及html页面做了forword转发操作,核心代码如下: private void redirectMobile(Htt ...

同主机下Docker+nginx+tomcat负载均衡集群搭建

想用Docker模拟一下nginx+tomcat集群部署,今天折腾了一天,遇坑无数,终于在午夜即将到来之际将整个流程走通,借本文希望给同样遇到类似问题的小伙伴们留点线索. 主机环境是CentOS 7, ...

Android服务器——使用TomCat实现软件的版本检测,升级,以及下载更新进度!

Android服务器--使用TomCat实现软件的版本检测,升级,以及下载更新进度! 算下来,TomCat服务器已经写了很长一段时间了,一直说拿他来搞点事 情,也一直没做,今天刚好有空,交流群还有人请 ...

windows下apache httpd2.4.26集群完整搭建例子:下载、启动、tomcat集群例子

第一部分——下载 1.1: 百度搜索apache httpd关键字,第一个链接既是官方下载地址.如果这一步不会,此篇文章不适合你阅读,请自行停止. 1.2:进入官网http://httpd.apach ...

nginx+tomcat实现负载均衡以及双机热备

还记得那些年吗? 还记得更新代码之后,服务器起不来被领导训斥吗?还记得更新代码,需要停机过多的时间被渠道部们埋怨吗?还记得更新代码,代码出错时自己吓个半死吗?于是我们聪明勤快的程序员,看着电影待到夜深 ...

http和数据库sql分析与窃听技术

用tunnel,tunnel是一种技术称谓,将其放到真正的服务器和客户端之间.调试阶段可以使用webcream运行tomcat作为模拟的真正的服务器. 具体:用apache axis及其项目中的工具t ...

Eclipse使用新手教程

说起java的IDE,朗朗上口的无非是Eclipse了,假若能熟练Eclipse,对于我们编写java程序会起到事半功倍的效果,大大提高我们工作效率.因此本篇博文,笔者仅仅是针对刚刚入门java的新手 ...

CAS单点登录配置[4]:客户端配置

本节介绍一下客户端如何配置,客户端配置没有服务端那么复杂... 客户端Tomcat配置 1 首先确认证书文件已经拷贝到Tomcat的目录下,我们新建两个客户端的web应用,分别命名为Client1,C ...

深入理解cookie和session

cookie和session在java web开发中扮演了十分重要的作用,本篇文章对其中的重要知识点做一些探究和总结. 1.cookie存在于浏览器 随意打开一个网址,用火狐的调试工具,随意选取一个链 ...

随机推荐

retrifit

Retrofit 特点 性能最好,处理最快 使用REST API时非常方便: 传输层默认就使用OkHttp: 支持NIO: 拥有出色的API文档和社区支持 速度上比volley更快: 如果你的应用程序 ...

8款唯美设计的HTML5/CSS3应用

1.CSS3漂亮的自定义Checkbox复选框 9款迷人样式 今天我们来分享一款9款样式迷人的CSS3漂亮的自定义Checkbox复选框.这几款复选框样式很丰富,使用起来也比较方便. 在线演示 源码下 ...

oracle中不曾熟悉的 to_char、to_number(未完待续)

十进制       十六进制88               58 用法一:Converts a HEX number  to  o FLOAT (转换一个十六进制数的浮标) SQL> sele ...

How To Create a New User and Grant Permissions in MySQL

How to Create a New User Let’s start by making a new user within the MySQL shell: CREATE USER 'newus ...

android中定位光标位置

edittext.setSelection(int); edittext.setText(123);//设置edittext中的内容 edittext.setSelection(123.length( ...

8bit数据 转换为 16bit数据的四种方法

[转]玩转嵌入式(公众号) 在入门单片机时,想必大家都都会遇到一下这种情况 unsigned char a = 0x12; unsigned char b = 0x34; unsigned int c ...

再记录一次delete出错的经历

调试的时候进行到delete语句时出现问题,我做的操作是在函数体内用int*申请了N个内存空间,这让我十分纳闷,为什么不能delete呢? 回忆到之前delete出错也遇过一次问题 手动封装OpenC ...

ios开发 学习积累20161101

20161101 XML的声明 <?XML version="1.0" encoding="UTF-8" ?> XML文档必须有根元素 XML 对大 ...

Eclipse启动JVM机制

1.Eclipse启动的时候,会启动一个JVM来运行eclipse(因为Eclipse是Java代码实现的) 2.Eclipse启动一个带main的主类的时候,会单独启动一个JVM来运行他. 3.Ec ...

sql 自定义split

以下数据库操作针对sql server. 问题来源:由于项目中,有的表字段内容是由多个id或多个其他内容拼接而成.(如:'1,2,3,4,5',或者'name_age_school'),特点是都用某个 ...

tomcat过滤器html,Tomcat过滤器模拟相关推荐

  1. tomcat URL简写案例:模拟网站www.baidu.com的访问

    tomcat URL简写案例:模拟网站 * 实际URL:http://www.baidu.com:8080/myweb/1.html * 实际位置:F:\mywebapps\myweb\1.html ...

  2. Tomcat(二):tomcat配置文件server.xml详解和部署简介

    1. 入门示例:虚拟主机提供web服务 该示例通过设置虚拟主机来提供web服务,因为是入门示例,所以设置极其简单,只需修改$CATALINA_HOME/conf/server.xml文件为如下内容即可 ...

  3. Tomcat系列(5)——Tomcat配置详细部分

    Tomcat的架构图 Tomcat的组织结构 Tomcat是一个基于组件的服务器,它的构成组件都是可配置的,其中最外层的是Catalina servlet容器,其他组件按照一定的格式要求配置在这个顶层 ...

  4. 过滤器、使用过滤器完成session效验

    过滤器 我们发现TOMCAT服务器接收到浏览器发送的请求后,会根据请求调用对应的Servlet来处理请求,只要请求路径中的URI是正确的,就一定能访问到对应的Servlet,不安全.另一方面,逻辑有重 ...

  5. Eclipse配置tomcat服务器及tomcat简介

    一.手动配置tomcat到eclipse tomcat的压缩包资源可以去资源包中下载.(win32和win64都有) 1. 打开eclipse–>Window–>Preferences,按 ...

  6. Tomcat学习之Tomcat架构

    前段时间想学习下tomcat,在网上找了一些资料,放在这里以备忘: 1,tomcat架构: Server: 其实就是BackGroud程序, 在Tomcat里面的Server的用处是启动和监听服务端事 ...

  7. 过滤器一:过滤器简介;创建第一个Filter;

    本篇博客主要介绍过滤器的基本内容,同时编写一个过滤器小例子. 目录 一:过滤器简介 1.什么是过滤器? 2.过滤器执行过程: 3.过滤器开发的三要素:​ 二:过滤器范例 1.创建过滤器 2.测试过滤器 ...

  8. 深入剖析Tomcat(How Tomcat Works)

    <深入剖析Tomcat>前言(作者:Budi Kurniawan & Paul Deck) 欢迎阅读本书.本书剖析了Tomcat 4.1.12版本和Tomcat 5.0.18版本的 ...

  9. Tomcat系列(6)——Tomcat处理一个HTTP请求的过程

    Tomcat的架构图   图三:Tomcat Server处理一个HTTP请求的过程 处理HTTP请求过程 假设来自客户的请求为:http://localhost:8080/test/index.js ...

  10. 过滤请求绝技,布隆过滤器与布谷鸟过滤器

    欢迎关注方志朋的博客,回复"666"获面试宝典 大家都知道,在计算机中,IO一直是一个瓶颈,很多框架以及技术甚至硬件都是为了降低IO操作而生,今天聊一聊过滤器,先说一个场景: 我们 ...

最新文章

  1. 图解用Wireshark进行Http协议分析
  2. c#如何wmf图片转换成png图片_每日一学:如何将png图片转换为jpg图片
  3. bangteng文件夹各种方式尝试后删除不了的解决办法
  4. 常见web前台技术之间的关系html,css,javascript...
  5. 【海啸预警】乔碧罗都在谈“区块链”,意味着新浪潮真的要来了?!
  6. 张一鸣的心里“住着小马哥”
  7. 1. C++dump编程
  8. tilte和body标签
  9. 【python】自动化测试浏览器不关闭
  10. 全天星图应用软件介绍(四季星座VB6源码)
  11. 机器人控制学习机器编程代码_带上机器人,让他们维护我们的代码!
  12. secret学习笔记
  13. [Excel常用函数] sumif sumifs函数
  14. 按音量键和按Fn+音量键,笔记本电脑均没反应的解决办法
  15. D L N A介 绍
  16. 码云+docker+jenkins持续集成
  17. 一节计算机课英语,电脑课的英语
  18. 学姐说 | 大学生如何自学短视频剪辑配音制作?
  19. 练习-Java多路分支之月份天数计算
  20. 3D立体显示技术原理与游戏应用历程简介 【转】

热门文章

  1. 科技之开局量子计算机,科技之开局直播造火箭
  2. MFC 鼠标悬停事件,提示信息自定义信息
  3. 宝塔Nginx负载均衡
  4. Google App Engine 的简易教程
  5. DirectX 画三角形 正交投影
  6. 你知道UG编程如何加工设置刀柄吗?
  7. 一个魔盒可以实现任何愿望,怎么设计测试用例?
  8. docker 宿主机的安装和配置
  9. 彻底解决Qt报错:无法定位程序输入点于动态链接库
  10. 系统流程图、数据流图、状态转换图、盒图的区别(软件工程课程中学到的)