javaWEB总结(29):理解多个Filter代码的执行顺序
2017-03-11 17:50
316 查看
项目结构
web.xml
Num1Filter.java
Num2Filter.java
Num1.jsp
Num2.jsp
运行结果
由结果可知,Filter是先依次执行放行前的代码,然后到达jsp页面,最后再依次返回执行放行后的代码。
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>javaWeb_29</display-name> <welcome-file-list> <welcome-file>Num1.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>Num1Filter</filter-name> <filter-class>com.dao.chu.Num1Filter</filter-class> </filter> <filter-mapping> <filter-name>Num1Filter</filter-name> <url-pattern>/Num2.jsp</url-pattern> </filter-mapping> <filter> <filter-name>Num2Filter</filter-name> <filter-class>com.dao.chu.Num2Filter</filter-class> </filter> <filter-mapping> <filter-name>Num2Filter</filter-name> <url-pattern>/Num2.jsp</url-pattern> </filter-mapping> </web-app>
Num1Filter.java
package com.dao.chu; 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; public class Num1Filter implements Filter { public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("1.before Num1Filter"); chain.doFilter(request, response); System.out.println("2.after Num1Filter"); } public void init(FilterConfig fConfig) throws ServletException { } }
Num2Filter.java
package com.dao.chu; 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; /** * Servlet Filter implementation class Num2Filter */ public class Num2Filter implements Filter { public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("3.before Num2Filter"); chain.doFilter(request, response); System.out.println("4.after Num2Filter"); } public void init(FilterConfig fConfig) throws ServletException { } }
Num1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Num1.jsp</title> </head> <body> <a href="<%=request.getContextPath() %>/Num2.jsp">To Num2.jsp</a> </body> </html>
Num2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Num2.jsp</title> </head> <body> <% System.out.println("5.Num2.jsp"); %> </body> </html>
运行结果
由结果可知,Filter是先依次执行放行前的代码,然后到达jsp页面,最后再依次返回执行放行后的代码。
相关文章推荐
- [原创]java WEB学习笔记45:自定义HttpFilter类,理解多个Filter 代码的执行顺序,Filterdemo:禁用浏览器缓存的Filter,字符编码的Filter,检查用户是否登陆过的Filter
- 写高质量OC代码52建议总结:29.理解引用计数
- java 过滤器Filter中chain.doFilter()之前和之后代码的执行顺序
- mirantis fuel puppet执行顺序 和 对整个项目代码的执行流程理解
- Java代码执行顺序总结
- js,javascript代码执行顺序理解
- 去哪网实习总结:递归构建“流程执行顺序”的XML文件(JavaWeb)
- java代码的执行顺序
- 代码执行顺序
- Asp.net Mvc Framework 七 (Filter及其执行顺序)
- Flash代码执行顺序.txt
- 一个关于继承关系中静态快、成员变量、构造体代码的执行顺序的Java代码
- .NET代码执行顺序探讨
- 有关类及类之间,类成员代码执行顺序链接
- try{}catch{}finally{} 里的代码的执行顺序问题
- doFilter的代码和Jsp中的嵌入代码执行顺序
- 浅析C#代码执行顺序之选择结构
- Java代码执行顺序-样例
- Asp.net Mvc Framework 七 (Filter及其执行顺序)
- Asp.net Mvc Framework 七 (Filter及其执行顺序)