//在struts.xml文件中定义拦截器,拦截器栈:
<package name="my" extends="struts-default" namespace="/manage"> <interceptors><!—有s与下有区别--> <!-- 定义拦截器 --> <interceptor name="拦截器名" class="拦截器实现类"/> <interceptor name="拦截器名2" class="拦截器实现类2"> <param name=”参数名”,>参数值< param > </interceptors> <!-- 定义拦截器栈 将多个拦截器合并--> <interceptor-stack name="拦截器栈名"> <interceptor-ref name="拦截器一"/> <interceptor-ref name="拦截器二"/> </interceptor-stack> </interceptors> ...... </package>
/**
2. 在struts.xml文件中使用拦截器
一旦定义了拦截器和拦截器栈后,就可以使用这个拦截器或拦截器栈来拦截Action了。拦截器的拦截行为将会在Action的exceute方法执行之前被执行。
*/
<action name="userOpt" class="org.qiujy.web.struts2.action.UserAction"> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> <!-- 使用拦截器,一般配置在result之后, --> <!-- 引用系统默认的拦截器 --> <interceptor-ref name="defaultStack"/> <interceptor-ref name="拦截器名或拦截器栈名"/> </action>
只须继承AbstractInterceptor类重写intercept()方法就可以 AuthorizationInterceptor.java package org.qiujy.common; import java.util.Map; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; /** * 权限检查拦截器 */ public class AuthorizationInterceptor extends AbstractInterceptor { /* * 拦截Action处理的拦截方法 */ public String intercept(ActionInvocation invocation) throws Exception { Map session = invocation.getInvocationContext().getSession(); String userName = (String) session.get("userName"); if (null != userName && userName.equals("test")) { System.out.println("拦截器:合法用户登录---"); return invocation.invoke();//将控制权释放,进行后续操作 } else { ActionContext av = invocation.getInvocationContext(); av.put(“popdom”,”您还没有登陆,请登录!”);//登陆页面用<s:property value=” popdom”/>输出 System.out.println("拦截器:用户未登录---"); return Action.LOGIN; } } } a.3. 配置(使用)自定义权限控制拦截器: struts.xml: <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="my" extends="struts-default"> <interceptors> <!-- 定义权限控制拦截器 --> <interceptor name="authority" class="org.qiujy.common.AuthorizationInterceptor"/> </interceptors> <!-- 定义全局处理结果 --> <global-results> <!-- 逻辑名为login的结果,映射到/login.jsp页面 --> <result name="login">/login.jsp</result> </global-results> <action name="listall" class="org.qiujy.web.struts2.action.UserAction" method="listAllUser"> <result name="success">/listall.jsp</result> <!-- 使用拦截器 --> <interceptor-ref name="defaultStack"/> <interceptor-ref name="authority"/> </action> <action name="userOpt" class="org.qiujy.web.struts2.action.UserAction"> <result name="success">/success.jsp</result> </action> </package> </struts>