【1】struts.xml:
<!-- 定义一个拦截器 --> <interceptors> <interceptor name="authority" class="org.interceptot.LoginInterceptor"> </interceptor> <!-- 拦截器栈 --> <interceptor-stack name="mydefault"> <interceptor-ref name="defaultStack" /> <interceptor-ref name="authority" /> </interceptor-stack> </interceptors> <!-- 定义全局Result --> <global-results> <!-- 当返回login视图名时,转入/login.jsp页面 --> <result name="login">/login.jsp</result> </global-results> <action name="show" class="org.action.showAction"> <result name="success">/main.jsp</result> <!-- 使用此拦截器 --> <interceptor-ref name="mydefault" /> </action> <!--验证登录用户信息 --> <action name="login" class="org.action.loginAction" method="execute"> <result name="error">/login.jsp</result> <result name="input">/login.jsp</result> </action>
【2】自定义拦截器org.interceptot.LoginInterceptor:
package org.interceptot; import java.util.Map; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; public class LoginInterceptor extends AbstractInterceptor { @Override public String intercept(ActionInvocation invocation) throws Exception { // 取得请求相关的ActionContext实例 ActionContext ctx = invocation.getInvocationContext(); Map session = ctx.getSession(); String user = (String) session.get("username"); // 如果没有登陆,即用户名不存在,都返回重新登陆 System.out.println("user:"+user); if (user != null) { System.out.println("test"); return invocation.invoke(); } System.out.println("你还没有登录"); ctx.put("tip", "你还没有登录"); return Action.LOGIN; //返回一个叫login的result结果 } }
【3】进入主页面的Action:org.action.showAction
package org.action; import com.opensymphony.xwork2.ActionSupport; public class showAction extends ActionSupport { public String execute() { return "success"; } }
【4】LoginAction:
private boolean isInvalid(String value) { return (value == null || value.length() == 0); } if (isInvalid(user.getUsername())) return INPUT; if (isInvalid(user.getPassword())) return INPUT; //登录成功将User放入session中 HttpServletRequest request = ServletActionContext.getRequest(); Map map=ActionContext.getContext().getSession(); map.put("username", user.getUsername());
转自http://blog.sina.com.cn/s/blog_77cb836301015m3y.html