Filter的介绍
拦截路径配置
拦截所有资源:/*
具体资源路径:/myServlet/demo1
拦截目录:/myServlet/*
后缀名被拦截:*.jsp
Filter的介绍
拦截路径配置
过滤器的拦截路径一般有这4种方式
拦截所有资源:/*,访问所有的资源,过滤器都会被执行具体资源路径:/myServlet/demo1,只有访问myServlet/demo1资源时,过滤器才会被执行拦截目录:/myServlet/*,访问/myServlet下所有资源是,过滤器都会被执行后缀名被拦截:*.jsp,访问后缀名为jsp资源时,过滤器都会被执行
下面我们就举例演示这4种方式
来2个Servlet,资源路径分别取为/myServlet/demo1和/myServlet/demo2,一个jsp页面,myJSP.jsp,一个过滤器demo1
/myServlet/demo1代码
package com.lingaolu.servlet;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.*;import java.io.IOException;/*** @author 林高禄* @create -08-04-19:34*/@WebServlet("/myServlet/demo1")public class Demo1 extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("/myServlet/demo1执行了......");}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}}
/myServlet/demo2代码
package com.lingaolu.servlet;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.*;import java.io.IOException;/*** @author 林高禄* @create -08-04-19:34*/@WebServlet("/myServlet/demo2")public class Demo2 extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("/myServlet/demo2执行了......");}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}}
myJSP.jsp代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>我的JSP</title></head><body><% System.out.println("myJSP进来了......");%></body></html>
过滤器demo1代码
package com.lingaolu.filter;import javax.servlet.*;import javax.servlet.annotation.WebFilter;import java.io.IOException;/*** @author 林高禄* @create -08-04-9:42*/@WebFilter("/*")public class Demo1 implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("demo1过滤器进来了......");filterChain.doFilter(servletRequest,servletResponse);System.out.println("demo1过滤回来了......");}@Overridepublic void destroy() {}}
拦截所有资源:/*
现在我们的过滤器demo1的拦截路径就是/*,启动项目
访问myJSP.jsp,过滤器执行了
访问myServlet/demo1,过滤器执行了
访问myServlet/demo2,过滤器执行了
可见上面的拦截路径的配置,把所有的路径都被拦截了
具体资源路径:/myServlet/demo1
我们把过滤器的拦截路径改为/myServlet/demo1,启动项目
访问myJSP.jsp,过滤器没有执行
访问myServlet/demo1,过滤器执行了
访问myServlet/demo2,过滤器没有执行
可见上面的拦截路径的配置,只拦截了myServlet/demo1
拦截目录:/myServlet/*
我们把过滤器的拦截路径改为/myServlet/*,启动项目
访问myJSP.jsp,过滤器没有执行
访问myServlet/demo1,过滤器执行了
访问myServlet/demo2,过滤器执行了
可见上面的拦截路径的配置,只拦截了myServlet/资源目录下的资源
后缀名被拦截:*.jsp
我们把过滤器的拦截路径改为*.jsp,启动项目
访问myJSP.jsp,过滤器执行了
访问myServlet/demo1,过滤器没有执行
访问myServlet/demo2,过滤器没有执行
可见上面的拦截路径的配置,只拦截了后缀名为jsp的资源