<struts> <package name="default" extends="struts-default" namespace="/"> <!-- 配置拦截器 --> <interceptors> <interceptor name="time" class="cn.sxt.interceptor.TimeInterceptor"/> <interceptor name="loginInterceptor" class="cn.sxt.interceptor.LoginInterceptor"/> <!-- 一个拦截器栈中,可以包含多个拦截器的引用 拦截器栈的引用和拦截器一致 --> <interceptor-stack name="myStack"> <interceptor-ref name="loginInterceptor"/> <!-- 引用拦截器 --> <interceptor-ref name="time"/> <!-- 引用默认的拦截器栈 ;引用拦截器和引用拦截器栈的方 式一样--> <interceptor-ref name="defaultStack"/> </interceptor-stack> </interceptors> <!-- 定义默认的拦截器/栈 --> <default-interceptor-ref name="myStack"/> <global-results> <result name="login">/login.jsp</result> </global-results> <action name="hello" class="cn.sxt.action.HelloAction"> <result>/WEB-INF/index.jsp</result> </action> <action name="login" class="cn.sxt.action.LoginAction"> <result>/success.jsp</result> </action> </package> </struts> 页面
<body> <form action="user/login.action" method="post"> 用户名:<input type="text" name="name"/><br> 密码:<input type="password" name="pwd"/><br> <input type="submit" value=" 登 录 "/> </form> </body> Action 代码
public class LoginAction { private String name; private String pwd; //处理方法 public String execute(){ System.out.println(name+"---"+pwd); if("siggy".equals(name)&&"1111".equals(pwd)){ ActionContext.getContext().getSession().put("user", name); return "success"; }else{ return "login"; } } public String logout(){ System.out.println("退出"); return"success"; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } } 10、方法拦截器:方法拦截器时比 Action 拦截器更加细粒度的控制,主体实现和 Action 拦 截器一致。但是方法拦截器时继承 MethodFilterInterceptor 类,重写 doIntercept()方法。 引用方法拦截器配置会发生改变:
<interceptor-ref name="methodInterceptor"> <!-- 配置被拦截的方法 --> <param name="includeMethods">list,add</param> <!-- 配置不被拦截的方法 --> <param name="excludeMethods">login</param> </interceptor-ref> |
|
|
|