了解servlet高级过滤器Filter
来源:互联网 发布:04年总决赛数据 编辑:程序博客网 时间:2024/05/18 09:24
1.什么是过滤器?有什么用?
定义:过滤器是一个服务端的组件。它可以截取用户端的请求与响应信息,并对这些作息过滤。
2.怎么过滤?
- 工作原理
- 生命周期
实例化在web.xml中。只会实例化一次。
初始化调用init()。只会调用一次
过滤--->doFilter().有请求就会调用doFilter();
销毁--->dostroy;在服务器关闭的时候。 - 过滤器分为几种类型
- 过滤的步骤。
- 先实现Filter接口
- 在web.xml
- 过滤器链是什么?
用户请求--------->过滤器1------>filter2----->filter3----web资源 --->fitler3-->filter2--->filter1--->用户 (其中顺序是web.xml中先后定义的顺序); - 问题
- 过滤器是否能改变用户请求的Web资源呢? 也就是能否改变用户请求的路径?
答:是可以。 - 过滤器能否直接返回数据,能不能直接处理用户请求?
答:是不可以。因为它不是一个标准的servlet。 - Web项目中多个过滤器是如何实现的?
答:建多个过滤器。 - 多个过滤器对应同一个用户路径执行的顺序如何?
- 过滤器是否能改变用户请求的Web资源呢? 也就是能否改变用户请求的路径?
3.在哪要过滤?
比如:还没有登录就直接到哪一个界面。从而会提示用户先登录。。。。
代码实现:
web.xml:
<span style="font-size:18px;"><filter> <filter-name>FirstFilter</filter-name> <filter-class>com.tan.filter.FirstFilter</filter-class> </filter> <filter-mapping> <filter-name>FirstFilter</filter-name> <url-pattern>/index.jsp</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping> <!-- <filter> <filter-name>SecondFilter</filter-name> <filter-class>com.tan.filter.SecondFilter</filter-class> </filter> <filter-mapping> <filter-name>SecondFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> --> <filter> <filter-name>ForwardFilter</filter-name> <filter-class>com.tan.filter.ForwardFiler</filter-class> </filter> <filter-mapping> <filter-name>ForwardFilter</filter-name> <url-pattern>/main.jsp</url-pattern> <dispatcher>FORWARD</dispatcher> </filter-mapping> <filter> <filter-name>IncludeFilter</filter-name> <filter-class>com.tan.filter.IncludeFilter</filter-class> </filter> <filter-mapping> <filter-name>IncludeFilter</filter-name> <url-pattern>/include.jsp</url-pattern> <dispatcher>INCLUDE</dispatcher> </filter-mapping> <filter> <filter-name>ErrorFilter</filter-name> <filter-class>com.tan.filter.ErrorFilter</filter-class> </filter> <filter-mapping> <filter-name>ErrorFilter</filter-name> <url-pattern>/error.jsp</url-pattern> <dispatcher>ERROR</dispatcher> </filter-mapping> <error-page> <error-code>404</error-code> <location>/error.jsp</location> </error-page></span>javaee部分:
/** * */package com.tan.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * 功能: * @author TanZi * @time 2015-5-15上午11:02:31 */public class FirstFilter implements Filter {/* (non-Javadoc) * @see javax.servlet.Filter#destroy() * 在容器销毁时调用。。 */@Overridepublic void destroy() {System.out.println("destroy----------FirstFilter");}/* (non-Javadoc) * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) * 这个方法完成实际的过滤操作。这个地主是过滤器的核心方法,当用户请求访问与过滤器关联的URL时,Web容器将先调用过滤器的dofilter()方法, * FilterChain 参数可以调用chain.doFilter(),将请求会给下一个过滤器,或利用转发。重定向将请求转发到其他资源 */@Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {System.out.println("Start--FirstFilter----------->doFilter");HttpServletRequest req=(HttpServletRequest) request;HttpServletResponse res=(HttpServletResponse) response;//res.sendRedirect(req.getContextPath()+"/main.jsp");//req.getRequestDispatcher("main.jsp").forward(req, res);req.getRequestDispatcher("include.jsp").include(request, response); //chain.doFilter(request, response); //到达界面之后再运行 System.out.println("End---FirstFilter---------->doFilter");}/* (non-Javadoc) * @see javax.servlet.Filter#init(javax.servlet.FilterConfig) * 这是过滤器的初始化方法,Web容器创建过滤器实例后将调用这个方法。这个方法中可以读取Web.xml文件中过滤器的参数 */@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("init----------------FirstFilter");}}
0 0
- 了解servlet高级过滤器Filter
- 过滤器Filter高级应用
- Filter过滤器高级应用
- Filter(过滤器)高级开发
- servlet过滤器Filter入门
- servlet Filter 过滤器
- Servlet的Filter过滤器
- servlet - Filter过滤器入门
- Servlet的Filter过滤器
- Servlet-----filter 过滤器
- Servlet过滤器Filter使用
- Servlet过滤器(Filter)
- 【servlet】初学过滤器Filter
- Servlet Filter(过滤器)
- Servlet Filter(过滤器)
- Servlet Filter(过滤器)
- Servlet Filter过滤器(1)
- Servlet Filter(过滤器)
- linux删除文件夹及里面的所有文件
- Java中的强引用、软引用、弱引用和虚引用
- 第一个MapReduce程序遇到的问题
- grub2下常见系统初始化错误的分析和解决
- Qt下的模态和非模态对话框
- 了解servlet高级过滤器Filter
- Leetcode: Isomorphic Strings
- QQ第三方登陆
- 与其苟延残喘,不如从头再来。
- js 重写 bootstrap 样式 alert/confirm 消息窗口 - cnhxz
- 人生就像故事:不在于有多长,而在于有多精彩,这才是最重要的
- 相等和不相等操作符,全相等和不全等操作符
- Visual Studio 实用插件推荐
- Android内存泄露监控