-
Filter可认为是Servlet的一种“变种”,它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链。它与Servlet的区别在于:它不能直接向用户生成响应。完整的流程是:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。 Filter有如下几个用处。 在HttpServletRequest到达Servlet之前,拦截客户的HttpServletRequest。 根据需要检查HttpServletRequest,也可以修改HttpServletRequest头和数据。 在HttpServletResponse到达客户端之前,拦截HttpServletResponse。 根据需要检查HttpServletResponse,也可以修改HttpServletResponse头和数据。 Filter可负责拦截多个请求或响应;一个请求或响应也可被多个请求拦截。 创建一个Filter只需两个步骤: 创建Filter处理类(实现Filter接口). web.xml文件中配置Filter(配置<filter>与<filter-mapping>).查看全部
-
Web项目中多个过滤器. 每个过滤器都有它对应的<url-pattern>地址.即过滤器关联的url地址.<url-pattern>标签是<filter-mapping>下的子标签. 假如多个过滤器相关联的地址都不一样没有交集,则它们都是相互独立的.互不相干. 假如多个过滤器相关联的地址都一样.则它们便构成过滤器链.此时用户请求就会依次通过所有关联这个Web资源地址的过滤器. 过滤器链就是针对一个客户的请求,找到匹配的过滤器有多个.用户请求就会依次通过所有关联这个Web资源的过滤器.服务器会按照web.xml文件中过滤器定义的先后顺序组装成一条链.执行的顺序也是沿着这条链. 当过滤器的doFilter()方法中的chain调用doFilter(request,response)方法.符合规则则会把请求传递给下一个过滤器,下一个过滤器依次调用chain.doFilter(),直到传递到Web资源.当Web资源处理完传递过来的请求并返回响应后.此时便执行doFilter()方法放行后的方法.过滤器把响应传递给用户,从最接近Web资源的过滤器开始传递响应给用户. 假设定义过滤器的顺序为filter1、filter2、filter3.(都关联同一个web资源或Servlet) 初始化顺序(一启动服务器时加载,根据web.xml的定义过滤器的顺序初始化):filter1-->filter2-->filter3 过滤器执行顺序:cilent发送request-->filter1-->filter2-->filter3-->Web资源-->Web资源发送响应返回-->通过filter3-->filter2-->filter1-->到达client. 其中doFilter()结束顺序filter3-->filter2-->filter1.跟递归一样,因为放行是chain.doFilter(),必须当此方法执行完,即当请求去到Web资源并处理完信息返回响应后,doFilter()方法便执行放行后的语句.然后就结束. 摧毁顺序(关闭服务器):filter1-->filter2-->filter3. 图中Code1、Code2为代码内容。图中访问的资源是Servlet.处理完再返回响应(Servlet内部转发等)给用户.查看全部
-
过滤器大多数时间消耗在doFilter()方法中,doFilter()方法被Web容器调用,即被服务器调用,因为Web容器存在Tomcat容器中,Tomcat就是服务器. doFilter()方法同时传入ServletRequest Request、ServletResponse Response和Filter Chain对象的引用.然后过滤器就有机会处理请求,将处理任务传递给链中的下一个资源,(通过调用Filter Chain对象引用上的doFilter方法),之后在处理控制权返回该过滤器时处理响应. 关于chain.doFilter(request,response) 他的作用是将请求转发给过滤器链上的下一个对象.这里的下一下对象指的是下一个filter,如果没有filter那就是你请求的资源.一般filter都是一个链,在一个项目的web.xml中有几个<filter>.就有几个过滤器. request->filter1->filter2->filter3->....->request resource(请求的Web资源),然后得到Web资源的响应,再沿着链返回给request.查看全部
-
过滤器(Filter)的执行顺序. 当服务器启动时,就会去执行过滤器的初始化方法. 当用户请求访问Web资源时,则会被过滤器截取,并执行doFilter()方法,过滤器判断符合规则之后,放行把请求传递给Web资源,Web资源处理完信息后,把响应发送到过滤器,再由过滤器将Web资源的响应发送给用户,让用户访问到Web资源. 当服务器关闭的时候便会执行destroy()方法. 过滤器可以改变用户请求的Web资源,也就是能够改变用户请求的路径. 过滤器不能直接返回数据,不能直接处理用户的请求.过滤器不是一个标准的Servlet.过滤器只是一个服务器端的组件,来协助服务器的.查看全部
-
创建过滤器Filter 1.创建一个类,实现Filter接口.(Servlet下的Filter的接口) 2.实现destroy(),init(),doFilter()方法. 3.在Web.xml配置<filter>与<filter-mapping>主标签.一个web.xml中可以有多个<filter>标签.即可以有多个过滤器. 其中在<filter>标签下会有<filter-name>、<filter-class>与<init-param>初始化参数标签.初始化标签下还有<param-name>与<param-value>.一个<filter>标签中可以有多个<init-param>标签. 在<filter-mapping>标签下有<filter-name>、<url-pattren>、<dispatcher>标签.<dispatcher>标签下的值可以是request、include、forward、error.默认为request. <url-pattern>为当用户请求的URL和指定的URL匹配时将促发过滤器工作.(过滤器关联的url) <url-pattern>/*</url-pattren> *号为所有的意思. 通过Myeclipse创建Filter后还可以直接通过web.xml中的Design快速配置过滤器.不用手动打开web.xml添加.查看全部
-
Filter的destroy(),init(),doFilter()方法作用.查看全部
-
过滤器的生命周期. 1.实例化阶段-->一启动服务器就会从Web容器的web.xml文件中自动去加载实例化过滤器.且只会实例化一次.即生成了过滤器. 2.初始化阶段-->生成过滤器之后便是初始化,加载一些初始化信息.调用init()方法.且只执行一次. 3.过滤阶段-->执行过滤器的doFilter()方法进行过滤.执行n次的,凡是过滤器捕获到用户的请求,都会执行这个过滤方法. 4.销毁阶段-->当Web容器关闭即服务器关闭的时候,便执行destroy()方法销毁.查看全部
-
过滤器的工作原理 当用户的请求在没有过滤器的情况下,用户可以直接访问Web资源.(即当用户请求访问项目的index.jsp,可以直接访问.不需通过过滤器) 假如存在过滤器的情况下,不能够直接访问. web.xml文件是由web container容器控制的,例如在Tomcat中,web.xml文件是在服务器启动时被加载的。发布项目的时候就是一次性把web.xml文件读取到web container容器中(配置信息存在web.xml中).然后当启动服务器,再从Web容器中的web.xml中加载配置信息.当再次修改web.xml的信息并保存,此时不需要再发布,服务器会把修改过的信息同步到Web容器中.当重新启动服务器.便会从Web容器中加载更新后的web.xml文件中配置信息. 过滤器在Web程序启动时(即发布之后启动服务器)加载的.从Web容器里面去加载过滤器.当项目发布到服务器时,web.xml文件就会全部被读取到Tomcat服务器的Web容器里,然后当启动服务器再从Web容器里的web.xml文件中加载过滤器. 当用户发送请求访问Web资源,并不是直接跳转到Web资源,而是到了过滤器,过滤器则会判断请求是否符合它的规则,符合请求的话就会把用户请求发送给Web资源.Web资源处理完信息后,把响应发送到过滤器,再从过滤器将Web资源的响应发送给用户.(即当用户请求访问项目的index.jsp,则先会到达过滤器,过滤规则通过后则将请求发送到Web资源,再由Web资源处理完信息后,把响应送到过滤器,过滤器再把Web资源的响应发送给用户.)查看全部
-
Java Web之过滤器 过滤器都会有过滤源、过滤规则、过滤结果. 过滤源就是需要过滤的东西. 过滤规则就是,是怎样过滤的.实现过滤的方法. 过滤结果就是过滤之后得出的结果. 生活中的过滤器: 像化学实验室的漏斗过滤,过滤源就是浑浊的水,过滤规则就是根据滤纸的径口大小来过滤.过滤结果就是纯净的水. Web过滤器: Web过滤器的过滤源就是用户的请求.但Web过滤器是不能直接处理请求的.只是辅助性的操作. 过滤器定义 过滤器是一个服务器端的组件,它可以截取用户端的请求与响应信息,并对这些信息过滤. Web中的过滤器例子: 当访问慕课网点击某课程学习时,会提示你需要先登录.所以你必须先登录了才能学习. 当登录了便可学习.或者登录之后访问了其他页面再回来访问此课程学习仍然不需要再登录,直接看视频学习.登录前和登录后都是同一个URL地址.却会有不同的显示效果(即一个有提示登录,一个没有).此处便是过滤器的作用.查看全部
-
利用@WebFilter过滤器的常用属性查看全部
-
web.xml查看全部
-
过滤器在实际项目中的应用场景: 1、对用户请求进行统一认证 2、编码转换 3、对用户发送的数据进行过滤替换 4、转换图像格式 5、对响应的内容进行压缩查看全部
-
过滤器的实例化是在xml中进行的查看全部
-
过滤器在实际项目中的应用查看全部
-
@WebFilter注解的常用属性查看全部
举报
0/150
提交
取消