【1】struts.xml: <!--定义一个拦截器 --> <interceptors> <interceptor name="authority" class="org.interceptot.LoginInterceptor"> </interceptor> <!-- 拦截器栈 --> <interceptor-stackname="mydefault"> <interceptor-ref name="defaultStack"/> <interceptor-ref name="authority" /> </interceptor-stack> </interceptors> <!-- 定义全局Result --> <global-results> <!-- 当返回login视图名时,转入/login.jsp页面--> <resultname="login">/login.jsp</result> </global-results> <actionname="show" class="org.action.showAction"> <resultname="success">/main.jsp</result> <!-- 使用此拦截器 --> <interceptor-ref name="mydefault"/> </action> <!--验证登录用户信息 --> <actionname="login" class="org.action.loginAction"method="execute"> <resultname="error">/login.jsp</result> <resultname="input">/login.jsp</result> </action> 【2】自定义拦截器org.interceptot.LoginInterceptor:package org.interceptot;import java.util.Map;
import com.opensymphony.xwork2.Action; importcom.opensymphony.xwork2.ActionContext; importcom.opensymphony.xwork2.ActionInvocation; importcom.opensymphony.xwork2.interceptor.AbstractInterceptor; public class LoginInterceptor extendsAbstractInterceptor { @Override public String intercept(ActionInvocation invocation) throwsException { // 取得请求相关的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.showActionpackage org.action;
importcom.opensymphony.xwork2.ActionSupport;
public class showAction extendsActionSupport { 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());
【5】如果我们通过show.action访问main.jsp那么就会被自定义拦截器拦住,拦截器检查session中是否有值,有证明用户已经登录,没有则为没有登录,那么就会被跳转到登陆页面。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。