struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="interceptor" extends="struts-default" namespace="/intcp">
<interceptors>
<interceptor name="first" class="com.interceptor.First"></interceptor>
<interceptor name="second" class="com.interceptor.Second"></interceptor>
<interceptor-stack name="mystack">
<interceptor-ref name="first"></interceptor-ref>
<interceptor-ref name="second"></interceptor-ref>
<interceptor-ref name="params"></interceptor-ref>
</interceptor-stack>
</interceptors>
<action name="login" class="com.interceptor.Login">
<interceptor-ref name="mystack"></interceptor-ref>
<result name="success">/hello.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
</struts>
Login.java
package com.interceptor;
import com.opensymphony.xwork2.ActionSupport;
public class Login extends ActionSupport {
private static final long serialVersionUID = 1L;
private String name;
private String pass;
public String execute() throws Exception {
if (name.equals("admin")) {
return SUCCESS;
}
return ERROR;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}
First.java
package com.interceptor;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class First extends AbstractInterceptor {
private static final long serialVersionUID = 1L;
@Override
public String intercept(ActionInvocation next) throws Exception {
ActionContext context = next.getInvocationContext();
Map<String, Object> params = context.getParameters();
String name = ((String[]) params.get("name"))[0];
String pass = ((String[]) params.get("pass"))[0];
if (name.trim().isEmpty() || pass.trim().isEmpty()) {
return "error";
}
String result = next.invoke();
System.out.println("end first");
return result;
}
}
Second.java
package com.interceptor;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class Second extends AbstractInterceptor {
private static final long serialVersionUID = 1L;
@Override
public String intercept(ActionInvocation next) throws Exception {
ActionContext context = next.getInvocationContext();
Map<String, Object> params = context.getParameters();
String name = ((String[]) params.get("name"))[0];
String pass = ((String[]) params.get("pass"))[0];
if (name.trim().length() < 4) {
return "error";
}
String result = next.invoke();
System.out.println("end second");
return result;
}
}