这个拦截器的作用是,未登陆的用户跳到登陆页面,登陆用户则可以通过。而这个拦截器是能起到作用的,但有个缺点:如果我一开始就登陆然后进拦截页面,他会顺利通过,拦截器好使。如果清空Session后,然后让他拦截一次,你再登陆它还是照样拦截。
附上代码:拦截器代码
public class CheckUserInterceptor implements Interceptor {
public String intercept(ActionInvocation invocation) throws Exception {
// TODO Auto-generated method stub
//System.out.println("qwerqwerqwrqwerqwe");
Map<String,Object> session = invocation.getInvocationContext().getSession();
String userName = (String)session.get("username");
System.out.println("****"+userName);
if (null != userName) 
{
            return invocation.invoke();
        }
           return Action.LOGIN; }
}
Struts里面拦截器的布置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd"><struts>
<package name="user" extends="struts-default" namespace="/allweb">

<interceptors>
        <!-- 定义权限控制拦截器 -->
        <interceptor name="checkuser" class="com.goldenroom.interceptor.CheckUserInterceptor"/>
        <!-- 定义一个包含权限控制的拦截器栈 -->
        
        <interceptor-stack name="checklogin">
                <interceptor-ref name="defaultStack" />
                <interceptor-ref name="checkuser" />
            </interceptor-stack>
        
        </interceptors>
        
           <!-- 定义默认拦截器 -->
        <default-interceptor-ref name="checklogin" />
        
        
        <!-- 定义全局处理结果 -->
        <global-results>
        <!-- 逻辑名为login的结果,映射到/notlogon.html页面 -->
        <result name="login">/allweb/notlogon.html</result>
        </global-results>
        
<action name="user" class="com.goldenroom.actions.UserAction">
<result name="showbook">orderbook.jsp</result>
<result name="orders">ordersuccess.jsp</result>
<result name="manager">manager.jsp</result>
<result name="changpwds">pwdsuccess.jsp</result>
<result name="changemails">emailsuccess.jsp</result>
<result name="exit">out.jsp</result>
</action>
</package></struts>
求解答啊,这个问题折磨人呀...................