过滤器:

           过滤器可以处理用户的请求和程序响应的内容,可用于权限控制、编码转换的场合。过滤器是servlet规范中的一部分,不是只有Struts2有。

    使用过滤器之前你得定义一个过滤器(实例化一个对象),也可以根据需求自己写一个类(继承java.Servlet.Filter接口,实现init,doFilter和destory三个方法)然后在这里实例化,以便下面使用。

1 <filter>
2 <filter-name>过滤器名称</filter-name>
3 <filter-class>过滤器对应的类</filter-class>
4 <!-- 初始化参数 -->
5 <init-param>
6 <param-name>参数名称</param-name>
7 <param-value>参数值</param-value>
8 </init-param>
9 </filter>

    过滤器必须和特定的URL关联才能发挥作用,关联的方式有3种:(过滤器名就是上面定义的过滤器)

1.与一个URL资源关联(仅仅是在请求xxx.jsp时过滤)

1 <filter-mapping>
2 <filter-name>过滤器名</filter>
3 <url-pattern>xxx.jsp</url-pattern>
4 </filter-mapping>

    2.与一个URL目录下的所有资源关联(任何的请求都会过滤)

1 <filter-mapping>
2 <filter-name>过滤器名</filter>
3 <url-pattern>/*</url-pattern>
4 </filter-mapping>

    3.与一个Servlet关联(请求指定的Servlet时会过滤)

1 <filter-mapping>
2 <filter-name>过滤器名</filter>
3 <url-pattern>Servlet名称</url-pattern>
4 </filter-mapping>

   这样,一个简单的Struts2的过滤器就配置好了(以上的配置都是在web.xml中进行的)。但它的实现流程是怎么样的呢?

假设现在有一个客户端请求(假设该请求已经被关联),这个请求会经过一系列的过滤器(过滤器链),每次经过一个过滤器都会根据当前过滤器对应的类实例化一个对象(调用init方法),并且调用里面的doFilter方法(该方法里面放的是你自己过滤的逻辑),只有通过了当前的过滤器才会到下一个过滤器,直到通过全部过滤器,如果没有通过则调到指定的错误页面。(下面是当一个过滤器通过时执行下一个过滤器的代码,在doFilter方法中)

1  // this is a normal request, let it pass through
2 chain.doFilter(request, response);

然后调用FilterDispatchar,根据用户的不同的请求做不同的处理.....(不是过滤器的内容,就不再阐述)

Struts2中的过滤器的更多相关文章

  1. 简单理解Struts2中拦截器与过滤器的区别及执行顺序

    简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...

  2. struts2中拦截器与过滤器之间的区别

    首先是一张经典的struts2原理图 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标准的过滤器链 c) ...

  3. 转: Struts2中拦截器与过滤器的区别及执行顺序

    当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标准的过滤器链 c) FilterDispatecher会 ...

  4. struts2 学习记录 过滤器 国际化

    struts2接触不是一天两天了,但是一直没有用它做什么项目,但老师确一直说它有很大的学习价值,所以还是把我学习到的东西给记录一下,记录的东西没有规律,只是给自己留个备份, struts2中最关键的是 ...

  5. Struts2中<jsp:forward page="xxx.action"></jsp:forward>失效

    问题:在Struts2中<jsp:forward page="xxx.action"></jsp:forward>失效了,不但调转不过去还报404错误.不知 ...

  6. 十五、struts2中的拦截器(框架功能核心)

    十五.struts2中的拦截器(框架功能核心) 1.过滤器VS拦截器 功能是一回事. 过滤器是Servlet规范中的技术,可以对请求和响应进行过滤. 拦截器是Struts2框架中的技术,实现AOP(面 ...

  7. 【转】Struts2中的MethodFilterInterceptor(转)

    这是一个Struts2.1.8.1应用,代码如下 首先是web.xml文件 view plaincopy to clipboardprint?01.<?xml version="1.0 ...

  8. 解决struts2中UI标签出现的问题: The Struts dispatcher cannot be found

    解决struts2中UI标签出现的问题: The Struts dispatcher cannot be found 异常信息: The Struts dispatcher cannot be fou ...

  9. Struts2 中添加 Servlet

    Struts2中如何添加Servlet 以前Java开发都是Servlet的天下,如今是各种框架横行,遇到一个需要将以前的Servlet加入到现有的Struts2的环境中. Google之后发现Sta ...

随机推荐

  1. MongoDB 变更流(Change Stream)介绍

    1. 什么是Change Stream Change Stream 是MongoDB用于实现变更追踪的解决方案,类似于关系数据库的触发器,但原理不完全相同: | | Change Stream | 触 ...

  2. JUC之Callable接口回顾和JUC辅助类

    Callable接口和JUC辅助类 Callable接口: 回顾: 创建线程的四种方式: 继承Thread 实现runnable接口 实现callable接口 使用线程池 之前的文章:多线程编程1-定 ...

  3. 初识python: 继承

    继承:可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展. 通过继承创建的新类称为"子类"或"派生类". 被继承的类称为"基 ...

  4. vue 传入后台的数据多了个=

    解决方法: 在前端值参时用{} 在后台接收时用Map 来自为知笔记(Wiz)

  5. POJ prime distance

    https://oj.shiyancang.cn/Problem/781.html 素数距离,数据范围21亿,如果用素数筛存,并且进行做的话,按照x/lnx计算会是一个非常恐怖的复杂度.确定要做什么, ...

  6. 《手把手教你》系列技巧篇(五十八)-java+ selenium自动化测试-分页测试(详细教程)

    1.简介 前几天,有人私信里留言问宏哥,分页怎么自动化测试了,完了给他说了说思路,不知道最后搞定没有,索性宏哥就写一篇文章来讲解和介绍如何处理分页. 2.测试场景 对分页来说,我们最感兴趣的和测试的无 ...

  7. 论文翻译:2019_TCNN: Temporal convolutional neural network for real-time speech enhancement in the time domain

    论文地址:TCNN:时域卷积神经网络用于实时语音增强 论文代码:https://github.com/LXP-Never/TCNN(非官方复现) 引用格式:Pandey A, Wang D L. TC ...

  8. JQuery选择器的使用和分类

    jQuery选择器 id选择器格式 $("#box") //获取标签里的id是box的标签 类选择器格式 $(".a") //获取标签里的类名是a的标签 标签选 ...

  9. 【刷题-PAT】A1126 Eulerian Path (25 分)

    1126 Eulerian Path (25 分) In graph theory, an Eulerian path is a path in a graph which visits every ...

  10. Android 12(S) 图形显示系统 - 应用建立和SurfaceFlinger的沟通桥梁(三)

    1 前言 上一篇文章中我们已经创建了一个Native示例应用,从使用者的角度了解了图形显示系统API的基本使用,从这篇文章开始我们将基于这个示例应用深入图形显示系统API的内部实现逻辑,分析运作流程. ...