web容器的Filterr 过滤器

*************web容器的Filterr 过滤器 *************

1--web.xml文件中的配置(注意请求名)

filter是在servlet之前被调用的,多个filter配置按照filter-mapping的配置的先后顺序来执行的,如:有两个同请求名的filter以及同请求名的servlet

当客户端发出该请求名的请求时,先调用先配置的filter,再调用后一个filter,最后再调用servlet,如果还有一个和请求名一样的jsp,那么这个就是jsp是在最后被调用

据此,我们可以设计一个简单的IP地址过滤器,根据用户的IP地址进行对网站的访问控制。

2--filter与filter之间的request、response是可以顺延使用的,即第一个filter的request中设置了属性,那么第二个filter中可以获取到的,最后的servlet中也是可以获取到的;

(当然是需要使用过滤器链传递的哦)

3--filter过滤器的三个方法:

有初始化 init()         web容器启动,初始化filter时调用此方法  可以再这里初始化过滤器所使用到的参数或者其他需要的参数,例如:初始化 FilterConfig

过滤处理 doFilter() 对请求进行响应处理 处理之后 可以 调用 过滤器链FilterChain的doFilter(request,response)方法继续调用后面的filter、servlet或者jsp页面

销毁  destroy() 用户释放过滤器占用的资源

4--FilterConfig接口有定义了四个方法,分别可以拿到

getFilterName() 返回web.xml部署文件中定义的该过滤器的名称

getServletContext() 返回调用者所处的servlet上下文 ServletContext

getInitParameter(java.lang.Stringname) 返回过滤器初始化参数值的字符串形式,当参数不存在时,返回null.name初始化参数名

getInitParameterNames() 以Enumeration形式返回过滤器所有初始化参数名称,如果没有初始化参数,返回为空。

5--创建过滤器步骤:

步骤一:建立一个实现Filter接口的类并实现其三个方法:init、doFilter和destroy

步骤二:doFilter方法中编写过滤行为。其中三个参数分别为ServletRequest、ServletResponse和FilterChain,

前两个可以强转为HttpServletRequest和HttpServletResponse使用,

第三个参数用来激活下一个相关的过滤器。

如果没有另一个过滤器与servlet或JSP页面关联,则servlet或JSP页面被激活。

步骤三:配置web.xml

步骤四:请求测试

时间: 2024-10-17 22:41:01

web容器的Filterr 过滤器的相关文章

基于纯Java代码的Spring容器和Web容器零配置的思考和实现(3) - 使用配置

经过<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(1) - 数据源与事务管理>和<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(2) - 静态资源.视图和消息器>两篇博文的介绍,我们已经配置好了Spring所需的基本配置.在这边博文中,我们将介绍怎么使用这些配置到实际项目中,并将web.xml文件替换为一个Java类. 我们使用Java代码来配置Spring,目的就是使我们的这些配置能够复用,对于这些配置的复用,我们采用继承和引入来实现

WEB容器启动——web.xml加载详解

最近在看spring的源码,关于web.xml文件在容器(Tomcat.JBOSS等)启动时加载顺序问题很混乱,通过搜集资料,得出以下的结论: 1.加载顺序与它们在 web.xml 文件中的先后顺序无关.即不会因为 filter 写在 listener 的前面而会先加载 filter.最终得出的结论是:context-param -> listener -> filter -> servlet; 容器首先会去它的配置文件web.xml读取两个节点:  <context-param&

如何设计一个可用的web容器

之前在另外一个平台(http://www.jointforce.com/jfperiodical/article/1035)发表的一篇文章,现在发布到自己的博客上. 开发一个web容器涉及很多不同方面不同层面的技术,例如通信层的知识,程序语言层面的知识等等,且一个可用的web容器是一个比较庞大的系统,要说清楚需要很长的篇幅,本文旨在介绍如何设计一个web容器,只探讨实现的思路,并不涉及过多的具体实现.把它分解划分成若干模块和组件,每个组件模块负责不同的功能,下图列出一些基本的组件,并将对每个组件

Spring学习(十九)----- Spring与WEB容器整合

首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关.即不会因为 filter 写在 listener 的前面而会先加载 filter.最终得出的结论是:listener -> filter -> servlet 同时还存在着这样一种配置节:context-param,它用于向 ServletContext 提供键值对,即应用程序上下文信息.我们的 listener, filter 等在初始化时会用到这些上下文中的信息,那么 context-param 配置节是不是应该写在

JavaWeb02_servlet和web容器

JavaWeb02_servlet和web容器 OSI参考模型 应用层.表示层.会话层(TCP/IP:应用层--即程序,http层)传输层(TCP/IP:传输层--TCP/UDP协议)网络层(TCP/IP:网络层--IP,封装)数据链路层.物理层(TCP/IP:物理层--最底层,网络接口,以太网,ATM,令牌环等) 客户端 主动 创建一个socket();连接到指定计算机端口 connect();写入信息到socket() send();socket()关闭 服务器 被动 创建一个socket(

idea maven web工程明明添加了maven lib的依赖,但启动web容器时始终报No Class Found?

很久没用idea搭新工程,最近自己想做个东西,冲心搭个web工程,jar包都用maven刷好了,而且也将jar包添加至web module的Dependences里头了,但启动web容器始终报No Class Found,问题出在哪了,就出在添加jar包和配置Artifacts Explore的顺序弄反了,因为在添加发布包Artifacts Explore时jar包依赖还没配置,即使后面配置了也会找不到,正确顺序应该是: 1.先添加module Dependences jar包依赖 2.添加发布

web容器与servlet容器

1. web容器好比   电视机 servlet容器好比   VCD 没有VCD你可以看电视,对吧,但是有了VCD没有电视机,你从哪看起?:) 没有servlet容器,你也可以用web容器直接访问静态页面,比如安装一个apache等,但是如果要显示jsp/servlet,你就要安装一个  servlet容器了,但是光有servlet容器是不够的,因为它要被解析成html输出,所以你仍需要一个web容器. 大多数servlet容器同时提供了web容器的功能,也就是说大多servelt可以独立运行你

apacheFtpServer集成spring由web容器控制启动和关闭

ApacheFtpServer是一个100%纯Java实现的FTP服务器,基于网络框架apache MINA实现,可支撑多并发用户.FtpServer可以独立运行作为一个Windows服务或Unix/Linux守护进程,或嵌入到Java应用程序,提供对内部集成spring应用程序支持.下面介绍apacheFtpServer与spring集成,交由spring控制ApacheFtpServer的启动与关闭. 1.      初始化创建MyFtpServer: import java.io.File

http协议、servlet、web容器

http协议是一种数据传输协议,主要用于客户端与服务器之间数据的传递.工作原理是:客户端通过http协议发出request(由请求头.请求行.空格.消息体组成),当请求传到服务器时有两种情况:第一,当生成的网页是静态网页时,服务器直接通过http协议返回给客户端response(由响应头.响应行.空格.消息体组成),就这样,整个流程结束.第二,当服务器接收到需要生成动态网页的 命令时,服务器自己不能生成,需要借助web容器生成,servlet就是依附于web容器的一项技术,它避开了CGI技术的不