您的位置:首页 > 编程语言 > Java开发

Struts2中拦截器与过滤器的执行顺序

2013-01-22 15:08 351 查看
web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4"

xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<welcome-file-list>

<welcome-file>login.jsp</welcome-file>

</welcome-file-list>

<filter>

<filter-name>MyFilter</filter-name>

<filter-class>filter.MyFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>MyFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

<filter>

<filter-name>struts2</filter-name>

<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

</filter>

<filter-mapping>

<filter-name>struts2</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

</web-app>

复制代码

filter.MyFilter

package 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;

public class MyFilter implements Filter {

public void destroy() {

}

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain) throws IOException, ServletException {

System.out.println("请求过滤");

chain.doFilter(request, response);

System.out.println("返回过滤");

}

public void init(FilterConfig arg0) throws ServletException {

}

}

复制代码

interceptor.LoginInterceptor

package interceptor;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionInvocation;

import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class LoginInterceptor extends AbstractInterceptor {

private static final long serialVersionUID = -2796326480994355318L;

@Override

public String intercept(ActionInvocation ai) throws Exception {

System.out.println("请求拦截");

if(!"YOYO".equals(ServletActionContext.getRequest().getParameter("username"))){

return "login";

}

String result = ai.invoke();

System.out.println("返回拦截");

return result;

}

}

复制代码

action.LoginAction

package action;

public class LoginAction {

public String execute(){

System.out.println("登陆ACTION");

return "success";

}

}

复制代码

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>My JSP 'index.jsp' starting page</title>

</head>

<body>

<h3>Login Success!</h3>

</body>

</html>

复制代码

login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>My JSP 'index.jsp' starting page</title>

</head>

<body>

<h3>Login</h3>

<hr>

<form action="Login.action" method="OST">

Name: <input type="text" name="username" />

<input type="submit" value="submit" />

</form>

</body>

</html>

复制代码

部署好后打开login.jsp,输入任意非"YOYO"字符,控制台打印出

请求过滤

请求拦截

返回过滤

说明拦截之后还会按照原路返回;

如果输入"YOYO",则打印出

请求过滤

请求拦截

登陆ACTION

返回拦截

返回过滤

由此可以验证它的执行顺序 = =。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: