Struts2中攔截器與過濾器的執行順序

轉載  Struts2中攔截器與過濾器的執行順序 收藏

web.xml

 

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.4"   
  3. xmlns="http://java.sun.com/xml/ns/j2ee"   
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   
  6. http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
  7.   <welcome-file-list>  
  8.     <welcome-file>login.jsp</welcome-file>  
  9.   </welcome-file-list>  
  10.     
  11.   <filter>  
  12.    <filter-name>MyFilter</filter-name>  
  13.    <filter-class>filter.MyFilter</filter-class>  
  14.   </filter>  
  15.   <filter-mapping>  
  16.    <filter-name>MyFilter</filter-name>  
  17.    <url-pattern>/*</url-pattern>  
  18.   </filter-mapping>  
  19.     
  20.   <filter>  
  21.    <filter-name>struts2</filter-name>  
  22.    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>  
  23.   </filter>  
  24.   
  25.   <filter-mapping>  
  26.    <filter-name>struts2</filter-name>  
  27.    <url-pattern>/*</url-pattern>  
  28.   </filter-mapping>  
  29.     
  30. </web-app>  

 

 

filter.MyFilter

 

 

 

  1. package filter;  
  2. import java.io.IOException;  
  3. import javax.servlet.Filter;  
  4. import javax.servlet.FilterChain;  
  5. import javax.servlet.FilterConfig;  
  6. import javax.servlet.ServletException;  
  7. import javax.servlet.ServletRequest;  
  8. import javax.servlet.ServletResponse;  
  9. public class MyFilter implements Filter {  
  10. public void destroy() {  
  11. }  
  12. public void doFilter(ServletRequest request, ServletResponse response,  
  13.    FilterChain chain) throws IOException, ServletException {  
  14.     
  15.   System.out.println("請求過濾");  
  16.     
  17.   chain.doFilter(request, response);  
  18.     
  19.   System.out.println("返回過濾");  
  20.     
  21. }  
  22. public void init(FilterConfig arg0) throws ServletException {  
  23. }  
  24. }  

 

 

 

interceptor.LoginIntercepto

 

  1. package interceptor;  
  2. import org.apache.struts2.ServletActionContext;  
  3. import com.opensymphony.xwork2.ActionInvocation;  
  4. import com.opensymphony.xwork2.interceptor.AbstractInterceptor;  
  5. public class LoginInterceptor extends AbstractInterceptor {  
  6. private static final long serialVersionUID = -2796326480994355318L;  
  7. @Override  
  8. public String intercept(ActionInvocation ai) throws Exception {  
  9.     
  10.   System.out.println("請求攔截");  
  11.     
  12.   if(!"YOYO".equals(ServletActionContext.getRequest().getParameter("username"))){  
  13.    return "login";  
  14.   }  
  15.     
  16.   String result = ai.invoke();  
  17.     
  18.   System.out.println("返回攔截");  
  19.     
  20.   return result;  
  21. }  
  22. }  

 

 

 

 action.LoginAction

 

  1. package action;  
  2. public class LoginAction {  
  3.   
  4. public String execute(){  
  5.   System.out.println("登陸ACTION");  
  6.     
  7.   return "success";  
  8. }  
  9. }  

 

 index.jsp

 

  1. <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  3. <html>  
  4.   <head>  
  5.     <title>My JSP 'index.jsp' starting page</title>  
  6.   </head>  
  7.     
  8.   <body>  
  9.     <h3>Login Success!</h3>  
  10.   </body>  
  11. </html>  

 

login.jsp

 

  1. <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  3. <html>  
  4.   <head>  
  5.     <title>My JSP 'index.jsp' starting page</title>  
  6.   </head>  
  7.     
  8.   <body>  
  9.     <h3>Login</h3>  
  10.     <hr>  
  11.     <form action="Login.action" method="OST">  
  12.      Name: <input type="text" name="username" />  
  13.      <input type="submit" value="submit" />  
  14.     </form>  
  15.   </body>  
  16. </html>  

 

部署好後打開login.jsp,輸入任意非"YOYO"字符,控制檯打印出
請求過濾
請求攔截
返回過濾
說明攔截之後還會按照原路返回;

如果輸入"YOYO",則打印出
請求過濾
請求攔截
登陸ACTION
返回攔截
返回過濾

由此可以驗證它的執行順序 = =。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章