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>
然后这个问题就解决了,在此分享一下,希望对大家能够有所帮助.
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>
然后这个问题就解决了,在此分享一下,希望对大家能够有所帮助.
相关文章推荐
- 在struts2中使用拦截器(Interceptor)控制登录和权限
- struts2:使用拦截器注解
- Struts2之拦截器原理分析及使用-下
- 《struts2拦截器的使用》
- struts2自定义拦截器的实现及使用
- struts2 拦截器使用例子
- Struts2拦截器的使用
- struts2拦截器的使用经验
- 个人总结的Struts2拦截器使用和拦截栈的配置,基于注解的方式
- 在Struts2下使用[拦截器]配合[session监听器]实现在线会员统计与防止重复登录
- Struts2使用12 -- 拦截器2 -- 配置
- 使用struts2拦截器实现防止表单数据重复提交
- Struts2:MyEclippse中使用struts-default.xml中定义的拦截器(timmer,logger)
- Struts2拦截器的使用
- Struts2拦截器的使用
- Struts2拦截器的使用 (详解)
- 在struts2中使用拦截器(Interceptor)控制登录和权限
- Struts2.X 拦截器使用
- struts2使用拦截器完成登陆显示用户信息操作
- Struts2中一个自定义拦截器的使用