Struts默认拦截器能跨包执行了?

hyberant 2016-10-21 10:33:57
新手刚用Struts2没多久,好多技术细节都不清楚,求各位大能赐教。
我写了一个默认拦截器栈来检查用户是否登陆,把登陆Action放在最上面的包A里,拦截器所在的包B继承包A,结果Login的时候还是被拦截。默认拦截器的范围不是包及子包里的Action吗?
除了继承MethodFilterInterceptor和在拦截器里加个验证标识外还有其他办法吗?
这是配置:

<struts>
<package name="login" namespace="/" extends="struts-default">
<global-results>
<result name="login">/WEB-INF/login.jsp</result>
</global-results>
<action name="login" class="label.action.LoginAction">
<result name="success">/WEB-INF/index.jsp</result>
<result name="fail">/WEB-INF/login.jsp</result>
</action>
</package>
<package name="global" namespace="/" extends="login">
<interceptors>
<interceptor name="login" class="label.action.LoginInterceptor" />
<interceptor-stack name="checkLogin">
<interceptor-ref name="login"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="checkLogin"/>
......
</package>
</struts>
...全文
170 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyberant 2016-10-21
  • 打赏
  • 举报
回复
拦截器里就是看session里有没有保存用户。感觉和拦截器内容无关,是配置哪里有问题吧。

public class LoginInterceptor extends AbstractInterceptor {
	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		Map<String,Object> session = invocation.getInvocationContext().getSession();
		if(session.get("user") == null){
			return "login";
        }
        return invocation.invoke();
	}
}
bcsflilong 2016-10-21
  • 打赏
  • 举报
回复
你拦截器里面是怎么写的?

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧