<package name="user" extends="basePackage" namespace="/">
<interceptors>
<interceptor name="user"
class="com.igaming.management.webs.LoginInterceptor" />
<interceptor-stack name="userStack">
<interceptor-ref name="baseStack" />
<interceptor-ref name="user" />
</interceptor-stack>
</interceptors>
<!-- 配置默认拦截器栈 -->
<default-interceptor-ref name="userStack" />
<global-results>
<result name="notLogin" type="dispatcher">error/loginError.jsp</result>
</global-results> </package>
配置后   未进入com.igaming.management.webs.LoginInterceptor这个拦截方法里面去 求高手指导

解决方案 »

  1.   

    楼主把struts自带的拦截器也要配上。
    <interceptor-stack name="userStack">
    <interceptor-ref name="baseStack" />
    <interceptor-ref name="user" />
    ...............................
    ...............................
    ...............................
    <interceptor-ref name="defaultStack"/>
      

  2.   

    <?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> <!-- 是否显示详细错误信息 -->
    <constant name="struts.devMode" value="false" />
    <!-- 国际化资源文件名称 -->
    <constant name="struts.custom.i18n.resources" value="i18n" />
    <!-- 是否自动加载国际化资源文件 -->
    <constant name="struts.i18n.reload" value="false" />
    <constant name="sturts.locale" value="en_US" />
    <!-- convention类重新加载 -->
    <constant name="struts.convention.classes.reload" value="false" />
    <!-- 浏览器是否缓存静态内容 -->
    <constant name="struts.serve.static.browserCache" value="true" />
    <!-- 配置使用Spring管理Action -->
    <constant name="struts.objectFactory" value="spring" />
    <!-- 上传文件大小限制设置 -->
    <constant name="struts.multipart.maxSize" value="-1" /> <!-- 主题 -->
    <constant name="struts.ui.theme" value="simple" />
    <!-- 编码 -->
    <constant name="struts.i18n.encoding" value="UTF-8" />
    <!-- 后缀 -->
    <constant name="struts.action.extension" value="action" />
    <constant name="struts.convention.package.locators" value="struts,action" /> <!-- 结果资源的路径 -->
    <constant name="struts.convention.result.path" value="/" />
    <!-- URL资源分隔符 -->
    <constant name="struts.convention.action.name.separator"
    value="_" /> <package name="basePackage" extends="struts-default">
    <interceptors>
    <interceptor-stack name="baseStack">
    <interceptor-ref name="exception" />
    <interceptor-ref name="alias" />
    <interceptor-ref name="servletConfig" />
    <interceptor-ref name="i18n" />
    <interceptor-ref name="prepare" />
    <interceptor-ref name="chain" />
    <interceptor-ref name="debugging" />
    <interceptor-ref name="scopedModelDriven" />
    <interceptor-ref name="modelDriven" />
    <interceptor-ref name="fileUpload" />
    <interceptor-ref name="checkbox" />
    <interceptor-ref name="multiselect" />
    <interceptor-ref name="staticParams" />
    <interceptor-ref name="actionMappingParams" />
    <interceptor-ref name="params">
    <param name="excludeParams">
    dojo\..*,^struts\..*,.*\\u0023.*,.*\\x5Cu0023.*,.*\\x5cu0023.*
    </param>
    </interceptor-ref>
    </interceptor-stack>
    </interceptors> <!-- 配置默认拦截器栈 -->
    <default-interceptor-ref name="baseStack" /> <!-- 未到找Action指向页面 -->
    <default-action-ref name="errorPage" /> </package> <package name="user" extends="basePackage" namespace="/">
    <interceptors>
    <interceptor name="user"
    class="com.igaming.management.webs.LoginInterceptor" />
    <interceptor-stack name="userStack">
    <interceptor-ref name="baseStack" />
    <interceptor-ref name="user" />
    <interceptor-ref name="defaultStack"/>
    </interceptor-stack>
    </interceptors>
    <!-- 配置默认拦截器栈 -->
    <default-interceptor-ref name="userStack" />
    <global-results>
    <result name="notLogin" type="dispatcher">error/loginError.jsp</result>
    </global-results> </package>
    </struts>这是struts.xml
      

  3.   

    package com.igaming.management.webs;import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;import org.apache.struts2.StrutsStatics;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;import com.opensymphony.xwork2.ActionInvocation;
    import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class LoginInterceptor extends AbstractInterceptor { private static final long serialVersionUID = 8103774267894131736L; private Logger logger = LoggerFactory.getLogger(LoginInterceptor.class);

    @Override
    public String intercept(ActionInvocation invocation) throws Exception {
    HttpServletRequest request = (HttpServletRequest) invocation
    .getInvocationContext().get(StrutsStatics.HTTP_REQUEST);
    HttpSession session = request.getSession();
    Object userislogin = session.getAttribute(OnlineUser.LOGIN_USER);
    logger.info("user:",userislogin);
    if (userislogin == null) {
    return "notLogin";
    }
    return invocation.invoke();
    }}
    这个事java代码
      

  4.   

    配置好像没有问题,baseStack和defaultStack中部分拦截器是重复的。我也做过登录拦截器,能够成功拦截的。不过需要你的action都在你使用了登录拦截器的package中。看你的配置文件中没有定义action,仔细看下文档吧,可能是哪儿的细节忽略了
      

  5.   

    7楼jdluojing讲的是对,action需要和拦截器配置在一个文件中,我也是这个原因导致拦截器不起作用,困惑了很久。多谢!