自定义拦截器类:
public class Myinterceptor extends AbstractInterceptor{
@Override
public String intercept(ActionInvocation arg0) throws Exception {
// TODO Auto-generated method stub
//先得到上下文
ActionContext context = arg0.getInvocationContext();
//根据上下文得到session
Map<String, Object> session = context.getSession();
//取session中的值
if(session.containsKey("loginName")){
arg0.invoke();//通过
}else{
context.put("msg", "login please");
return "error";
}
return null;
}
}
LoginAction类:
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
public class LoginAction {
private String loginName;
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String init(){
return "init";
}
public String welcome(){
return "welcome";
}
public String login(){
String forword = "error";
if(loginName.equals("admin")){
ActionContext context = ActionContext.getContext();
Map<String, Object> session = context.getSession();
session.put("loginName", loginName);
forword = "login";
}
return forword;
}
}
struts.xml配置文件
<!-- 1.定义自己的拦截器 -->
<interceptors>
<interceptor name="myInterceptor" class="com.ly.myinterceptor.Myinterceptor"/>
<!-- 2.定义自己的拦截器和默认拦截器结合 -->
<interceptor-stack name="myStack">
<interceptor-ref name="myInterceptor"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<!-- 3.变成默认拦截器 -->
<default-interceptor-ref name="myStack"/>
<!-- 4.全局共享result -->
<global-results>
<result name="error">/error.jsp</result>
</global-results>