解决方案 »

  1.   

    估计你配置问题,你要在你的loginAction里增加拦截器配置,比如:
    <action name="loginAction" class="类全路径">
    ......
    <!-- 引用系统默认的拦截器 -->
    <interceptor-ref name="defaultStack"/>
    <interceptor-ref name="拦截器名或拦截器栈名"/>
    </action>或者全局配置也行。
      

  2.   

    <package name="xix" extends="struts-default" namespace="/admin">
    <interceptors>
    <interceptor name="logger" class="interceptor.LoggerInteceptor" />
    <interceptor-stack name="mydefaultstack">
    <interceptor-ref name="logger" />
    <interceptor-ref name="defaultStack" />
    </interceptor-stack>
    </interceptors>
    <!-- 当前package下的所有的action 都被默认的拦截器mydefaultstack所拦截 -->
    <default-interceptor-ref name="mydefaultstack"></default-interceptor-ref>
     <action name="doLogin" class="action.LoginAction" method="doLogin">
    <result name="usercheck">/admin/welcome.jsp</result>
    <result name="input">/admin/login.jsp</result>
    </action>
    </package>
    配置是没错,拦截器中,总是走return input,就是不给你登陆,我也检查了多次,配置没问题的。
      

  3.   

    拦截器引用顺序不对,要先引defaultStack,先把数据存入Context中,再执行你的logger拦截器。
      

  4.   

    顺序换一下:
    <interceptor-stack name="mydefaultstack"> 
      <interceptor-ref name="defaultStack" />
      <interceptor-ref name="logger" />
    </interceptor-stack>
      

  5.   

    错了,你这个不是顺序问题,是逻辑不对。
    设置了默认拦截器以后,所有的请求都被拦截,就连doLogin请求本身都被拦截,故拦截器实现需要修改,正确的如下所示:public String intercept(ActionInvocation arg0) throws Exception {
    System.out.println("拦截了没有");
    ActionContext ac = arg0.getInvocationContext();
    Users user = (Users) ac.getSession().get("user");
    if (user == null) {
    String actionName = arg0.getProxy().getActionName();
    if(!actionName.equals("doLogin")) {
    ac.getSession().put("user", "请先登录");
    return "input";
    }
    }
    return arg0.invoke();
    }
      

  6.   

    直接换成if (user == null) { return "input";
    }
    这样行不行,拦截器拦截看账号密码是否为空就行,如果空直接返回失败页面
      

  7.   

    输出”拦截了没有“?拦截器配置如楼上上说的,先配置,默认的,后配置自定义的,顺序问题。
    把user这个输出看看?
      

  8.   


    你这样不行,必须加上action判断,解释就是:登陆action不拦截,其他action才拦截。
      

  9.   

    <interceptors>
    <interceptor name="logger" class="interceptor.LoggerInteceptor" />

    <interceptor-stack name="mydefaultstack">
    <interceptor-ref name="defaultStack" />
    <interceptor-ref name="logger" />
    </interceptor-stack>

    </interceptors>
    是这样吗
      

  10.   

    HttpSession session=request.getSession();//根据请求获取会话session
    session.setAttribute("键","值");//向session中设置值
    String info=(String)session.getAttribute("键")//session中取出特定的键对应的值 是不是没有获取到session中的值
      

  11.   

    那你在Action那边继承引用了没?控制台输出“拦截了没有”?