当前位置:编程学习 > JAVA >>

Stuts2拦截器问题,请大神解答。

由于权限问题,我用的struts2拦截器控制未登入的用户禁止通过浏览器访问action。

背景说下:

项目中的action路径运用了两种方法:
1.  XXX!xxx.action   这是第一种方式

2.  XXX.action?method=xxx   这是第二种方式。

现在第二种方式直接访问浏览器,会直接跳到主页,说明是被拦截了的。这个是OK的。

但是第一种方式直接访问就报错,报空异常,直接进了action.没被拦截器拦截。这是为什么啊?

这两种action跳转路径方式有很大的区别吗,所有的action都在同一空间下。 如果用户登入了,所有action都可以通过浏览器访问,这个错肯定不是路径问题。

跪求解答啊,很困惑,求解答!

下面是我的拦截器代码:
public String intercept(ActionInvocation invocation) throws Exception {
Map session = invocation.getInvocationContext().getSession();
String name=invocation.getInvocationContext().getName();
//如果当前拦截的方式是登入的Action,则不进行拦截,继续执行调用

if(("login").equals(name)){
return invocation.invoke();
}else{
System.out.println("拦截器,我进来了吗");

if (null != session.get("userid")) {
return invocation.invoke();
} else {
return  Action.LOGIN;
}
}
}


下面是我的拦截器配置:
<package name="default" extends="struts-default">
     <interceptors>
<interceptor name="authority" class="com.ssi.action.MyInterceptor" />
 <interceptor-stack name="authorityStack"> 
 <interceptor-ref name="authority" />
<interceptor-ref name="defaultStack"/>
</interceptor-stack> 
</interceptors>

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

<global-results>
<result name="login" type="redirect">/pages/WebPages/Login.jsp</result>
</global-results>
Java 浏览器 --------------------编程问答-------------------- 拦截器可以参考一下这里
http://www.verydemo.com/demo_c140_i1927.html --------------------编程问答-------------------- 在干什么的时候报空指针异常
看看页面代码 --------------------编程问答--------------------
引用 2 楼 q35335010 的回复:
在干什么的时候报空指针异常
看看页面代码



直接在浏览器访问action的时候报空异常。 因为action里面有获取session,我没登入直接通过页面访问的,就报空异常了。为什么这种方式没进拦截器呢。 --------------------编程问答-------------------- 拦截器的代码,你直接写成,
ActionContext ctx = ActionContext.getContext();
Map session = ctx.getSession();
UserAccount adminUser = (UserAccount) session.get("user");
if (adminUser == null) {
return "adminLoginPage";
}


你不用判断路径是否和login.你只需判断,如果获取不到session里的user直接重新登录呗
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,