首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

STRUTS拦截器有关问题

2013-12-26 
STRUTS拦截器问题仿照着想实现拦截未登录用户,跳转到首页的功能。问题1:发现有的时候没有进入拦截器,我加了

STRUTS拦截器问题
仿照着想实现拦截未登录用户,跳转到首页的功能。问题1:发现有的时候没有进入拦截器,我加了一个打印的地方。有的时候没打印出来。问题2:DEBUG调试,进入拦截器判断SESSION的语句了,也判断成功了,但是没能返回首页,跳转有问题。我把几个地方的代码贴一下,各位将就看看哈。
拦截器:

public class AuthorizationInterceptor extends AbstractInterceptor {


public String intercept(ActionInvocation arg0) throws Exception {
System.out.println("arg0:"+arg0.getAction().getClass().getName());
        Map<?, ?> session = arg0.getInvocationContext().getSession();
        Object obj=session.get(StaticConfig.SESSIONUSERINFO);
        if(obj==null){
        System.out.println("拦截器:用户未登录---");
        return "index";
        }else{
         return arg0.invoke();
        }
}

}

struts配置:

    <package name="sbase" namespace="/" extends="struts-default">
        <interceptors>
     <!-- <interceptor name="configdebug" class="com.configdebug.interceptor.ConfigDebugInterceptor"/> -->
            <interceptor name="authority" class="com.kjs.base.AuthorizationInterceptor"/>
            <interceptor name="defaultin" class="com.kjs.base.DefaultInterceptor"/> 
            <interceptor-stack name="user" >
   <!--  <interceptor-ref name="configdebug" />  -->
   <interceptor-ref name="defaultin" />
   <interceptor-ref name="authority" />
                <interceptor-ref name="defaultStack"/>
            </interceptor-stack>
            <interceptor-stack name="guest" >
   <!--  <interceptor-ref name="configdebug" />  -->
    <interceptor-ref name="defaultin" />  
                <interceptor-ref name="defaultStack"/>
            </interceptor-stack>
        </interceptors>

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

        <global-results>
            <result name="index" type="redirectAction">index</result>
            <result name="error" type="redirectAction">/error.jsp</result>
        </global-results>


[解决办法]
问题一:有些进入拦截器、有些没有进入,你看下没进入的struts配置,他有没有extends='sbase'这个包

问题二:你将<result name="index" type="redirectAction">index</result>换成<result name="index" type="redirectAction">/index.jsp</result>试试
[解决办法]
可能没调用到吧。你先写一个简单的拦截,然后在此基础上加。xml 里面的写的拦截顺序 也会影响执行方法的。
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

问题1:
我看别人有加注解,不知道是不是没有加注解,就等于没有加上这个拦截器了
@ParentPackage("sbase")
@Namespace("/salary")
@InterceptorRefs({  
  @InterceptorRef("user")
})

看楼主的意思应该是用全注解开发的struts2了如果是的话那么楼主看你的struts.xml的配置默认的拦截器是guest也就是只含有defaultStack和defaultin两个而楼主的authority拦截器是放在user拦截器栈中的而你默认的又不是user拦截器栈你要是不在上面加@InterceptorRefs({  
  @InterceptorRef("user")
})声明引用的拦截器的话就是使用默认的guest拦截器栈了

是的,问题是一个接一个,也当时学习的过程了。按照我上面写的,return index,struts里配置了index的result,但是好像并没有相应去对应。我把return改成index1,竟然也能返回到index.jsp。。。

如果没有其它地方有配index1的跳转的话楼主先debug下是不是真的返回index1如果是的话重启下tomcat看看


[解决办法]
配置一个全局跳转页面,可能没找到index这个Action

热点排行