java web笔记之Filter初识
来源:互联网 发布:相貌测试软件 编辑:程序博客网 时间:2024/05/16 17:29
1.Filter简介
Filter意为滤镜或者过滤器,用于在Servlet之外对request或者response进行修改。Filter提出了滤镜链(FilterChain)的概念,一个FilterChain包括多个Filter。客户端请求request在抵达Servlet之前会经过FilterChain里的所有Filter,服务器响应response在从Servlet抵达客户端浏览器之前也会经过FilterChain里所有的Filter.
2.示例
<span style="font-size:18px;">package com.wang.indentity;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.annotation.WebFilter;/** * Servlet Filter implementation class myFilter */@WebFilter("/myFilter")public class myFilter implements Filter { /** * Default constructor. */ public myFilter() { // TODO Auto-generated constructor stub }/** * @see Filter#destroy() */public void destroy() {// TODO Auto-generated method stub}/** * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) */public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {System.out.println("request被处理之前");//一定要执行这句话,否则不会执行Servlet代码chain.doFilter(request, response);System.out.println("request被处理之后,response抵达客户端之前");}/** * @see Filter#init(FilterConfig) */public void init(FilterConfig fConfig) throws ServletException {// TODO Auto-generated method stub}}</span><span style="font-size:24px;"></span>chain.doFilter(request,response)将request递交给FilterChain中的下一个Filter,如果所有的Filter都走完了则交给Servlet处理。
注意:doFilter()方法中一定要执行chain.doFilter(request,response)。否则request不会交给后面的Filter或者Servlet.
Filter需要配置在web.xml中才能生效。一个Filter需要配置<filter>与<filter-mapping>标签,例如:
<filter> <filter-name>filterName</filter-name> <filter-class>com.wang.indentity.myFilter</filter-class> </filter> <filter-mapping> <filter-name>filterName</filter-name> <url-pattern>*.action</url-pattern> <dispatcher>REQUEST</dispatcher> </filter-mapping><filter>配置Filter名称,实现类以及初始化参数(如果有的话),可同时配置多个初始化参数。<filter-mapping>配置什么规则下使用该Filter。<filter>的filterName与<filter-mapping>的filterName必须匹配。
<url-pattern>配置URL的规则,可以配置多个,可以使用通配符(*).例如"/jsp/*"适用于本contextPath下以"/jsp/"开头的Servlet路径,"*.do"适用于所有以".do"结尾的Servlet路径。
<dispatcher>配置到达Servlet的方式,有4种取值:REQUEST/FORWARD/INCLUDE/ERROR.可以同时配置多个<dispatcher>。如果没有配置任何<dispatcher>,默认为REQUEST。区别如下:
REQUEST:表示仅当直接请求Servlet时才生效
FORWARD:表示仅当某Servlet通过FORWARD到该Servlet时才生效。
INCLUDE:jsp中可以通过<jsp:include/>请求某Servlet。仅这种情况下有效。
ERROR:jsp中可以通过<%@ page errorPage="error.jsp" %>指定错误处理页面。仅在这种情况下才生效。
<url-pattern>与<diapatcher>的关系是"且"的关系。只有满足<url-pattern>的条件,且满足<dispatcher>的条件时,该filter才能生效。
提示:一个web程序可以配置多个Filter,这多个Filter的执行顺序有先后。规则是<filter-mapping>配置在前面的Filter执行要早于配置在后面的Filter.另外要注意,多个Filter可能会相互影响。
0 0
- java web笔记之Filter初识
- java web笔记之Filter防盗链
- java web笔记之Filter日志记录
- java web笔记之servlet初识
- java web 之filter
- Java Web之Filter
- Java.Web学习笔记 Filter
- java web之Filter详解
- java web之Filter详解
- 【Java】Filter过滤器初识
- Java Servlet学习笔记(二)初识Filter
- Java Web学习笔记(五)filter
- Java Web学习笔记——Filter
- java web filter之二 Filter与职责链模式
- Java Web--Seervlet之过滤器(Filter)
- Java Web 之过滤器Filter详解
- Java Web 之过滤器Filter详解
- Java Web之三 Servlet Filter Listener
- 2015/03/20
- 题目1015 九度Online Judge
- 注意count,find,binary_seach,lower_bound,upper_bound和equal_range的区别
- Javascript Date对象应用解析
- Log输出编辑
- java web笔记之Filter初识
- 使用模型的好处 && instancetype的作用
- 在linux下安装软件
- 第零章内核网络相关配置选项--基于Linux 3.10
- Android环境变量配置和安装SVN
- top与ps区别
- C++ Primer学习笔记(函数)
- web框架之Spring-MVC环境搭建
- 这是一个低谷,不是无底洞。