拦截器类
public class LoginInterceptor extends AbstractInterceptor {
@Override public String intercept(ActionInvocation invocation) throws Exception { //判断是否为Login.action,如果是则执行下一个拦截器 String actionName=invocation.getProxy().getActionName(); if("login".equals(actionName)) { //下一个拦截器 return invocation.invoke(); } //判断是否登陆成功,为空表示没有登陆成功 Object obj=ActionContext.getContext().getSession().get("user"); if(obj==null) { return "login"; } return invocation.invoke(); } |
Ation
public class LoginAction implements ModelDriven<User>{ private User user=new User(); public String login() { System.out.println(user); if(user.getName().equals("admin")&&user.getPwd().equals("1234")) { ActionContext.getContext().getSession().put("user", user); return "success"; } return "login"; }
public User getModel() { return user; }
public User getUser() { return user; }
public void setUser(User user) { this.user = user; } |
User类
private String name; private String pwd; get set方法略 |
Struts.xml
<package name="runtimedemo" namespace="/" extends="struts-default"> <!-- 拦截器 --> <interceptors> <interceptor name="LoginInterceptor" class="com.interceptor.LoginInterceptor"></interceptor> <interceptor-stack name="myInterceptors"> <interceptor-ref name="defaultStack"/> <interceptor-ref name="LoginInterceptor"/> </interceptor-stack> </interceptors> <default-interceptor-ref name="myInterceptors"/> <!-- 全局结果集 因为拦截器也会返回login --> <global-results> <result name="login">/login.jsp</result> </global-results> <action name="login" class="com.action.LoginAction" method="login"> <result name="success">/WEB-INF/index.jsp</result> </action> </package> |