您的位置:首页 > 编程语言 > Java开发

Struts2拦截器的使用

2012-07-17 18:02 316 查看
在使用struts2拦截器,或者自定义拦截器时特别注意,

Struts2自带的拦截器缺省堆栈defaultStack一定要引用,并且是最后引用;(这里是我的一个例子):

<interceptors>

<interceptor name="loginInterceptor"class="com.vinegar.interceptor.LoginInterceptor" />

<interceptor-stack name="myStack">

<interceptor-ref name="loginInterceptor">

<interceptor-ref name="defaultStack" />

</interceptor-stack>

</interceptors>

也可以将拦截设置成全局的

<package name="s" extends="json-default" namespace="/emp">

<interceptors>

<interceptor name="loginInterceptor"class="com.vinegar.interceptor.LoginInterceptor"
/>

<interceptor-stack name="myStack">

<interceptor-ref name="loginInterceptor">

<interceptor-ref name="defaultStack"
/>

</interceptor-stack>

</interceptors>

<default-interceptor-ref name="myStack" />

........
</package>
使用"拦截器"实现一个简单的全局的登陆控制,如果没登陆返回登陆页面。不对tologin.action拦截。
刚开始的时候加入了<param name="excludeMethods">tologin</param> 这行代码,但还没有效果。

纠结了半天啊,而且一直出现没有excludeMethods这个参数的警告,后来发现是在写自定义拦截器的时候出现了问题,要想使用excludeMethods和includeMethods方法,自定义的拦截器必须继承MethodFilterInterceptor,代码如下:

public class LoginInterceptor extends MethodFilterInterceptor{

@Override

protected String doIntercept(ActionInvocation invocation) throws Exception {

// TODO Auto-generated method stub

HttpServletRequest request=ServletActionContext.getRequest();

HttpSession session=request.getSession();

if(session.getAttribute("user")!=null){

invocation.invoke();

}else if(session.getAttribute("user")==null){

return "error";

}

return null;

}

}

在struts.xml配置文件中的配置如下:
<interceptors>

<interceptor name="loginInterceptor"class="com.vinegar.interceptor.LoginInterceptor" />

<interceptor-stack name="myStack">

<interceptor-ref name="loginInterceptor">

<!--不拦截的方法

<param name="excludeMethods">toregist,tologin</param>-->

<!-- 拦截的方法 -->

<param name="includeMethods">toadd,tolist,showDetail</param>

</interceptor-ref>

<interceptor-ref name="defaultStack" />

</interceptor-stack>

</interceptors>

然后这个问题就解决了,在此分享一下,希望对大家能够有所帮助.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: