下面是过滤器代码及配置,根本就不会执行过滤器里的代码。请大家帮忙看下哪里出了问题
public class LoginValidateFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
//判断用户是否登录(即判断session中是否存在名为user的对象),如果没有登录,将用户的浏览器重定向到/user/logon.do
HttpServletRequest httpRequest = (HttpServletRequest) req;
Buyer buyer = WebUtil.getBuyer(httpRequest);
if(buyer==null){
HttpServletResponse httpResponse = (HttpServletResponse)res;
httpResponse.sendRedirect("user_logon.action");
return;   //这句要加上,否则这个过滤器不起作用
}
chain.doFilter(req, res);
}}web.xml配置如下         <!-- Struts过滤器,符合请求格式则纳入框架处理 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
    
   
    <!-- 该Filter用于验证用户是否已经登录,没有未登录,即重定向到登录界面 -->
    <filter>
     <filter-name>loginValidateFilter</filter-name>
<filter-class>
com.lh.web.filter.LoginValidateFilter
</filter-class>
    </filter>
    <filter-mapping>
     <filter-name>loginValidateFilter</filter-name>
<url-pattern>*.action</url-pattern>
    </filter-mapping>

解决方案 »

  1.   

    修改你的web.xml为:
    <!-- 该Filter用于验证用户是否已经登录,没有未登录,即重定向到登录界面 -->
      <filter>
      <filter-name>loginValidateFilter</filter-name>
    <filter-class>
    com.lh.web.filter.LoginValidateFilter
    </filter-class>
      </filter>
      <filter-mapping>
      <filter-name>loginValidateFilter</filter-name>
    <url-pattern>*.action</url-pattern>
      </filter-mapping>
    <!-- Struts过滤器,符合请求格式则纳入框架处理 -->
    <filter>
    <filter-name>struts2</filter-name>
    <filter-class>
    org.apache.struts2.dispatcher.FilterDispatcher
    </filter-class>
    </filter>
    <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>*.action</url-pattern>
    </filter-mapping>
      

  2.   

    如果按照你的配置,当有XXX.action的请求到来的时候,先走了struts2的过滤器,而你配置的权限过滤器就没执行。所以先走你的login validation,然后再走struts2的过滤器,这样应该会执行你的代码了。
      

  3.   

    请问在struts2中如何单独配置对用户管理模块进行过滤 <!-- 结账 -->
    <action name="DeliverInfo_*" method="{1}" class="com.lh.web.action.shopping.DeliverInfoAction">
    <result name="deliver">/WEB-INF/page/shopping/deliverInfo.jsp</result>
    </action>

     <!-- 用户管理 -->
    <action name="user_*" class="com.lh.web.action.user.BuyerManageAction" method="{1}">
    <result name="regUI">/WEB-INF/page/user/userReg.jsp</result>
        <result name="reg" type="redirect">user_regUI.action</result>
        <result name="logon" >/WEB-INF/page/user/logon.jsp</result>
    </action>
      

  4.   

    <filter>
      <filter-name>loginValidateFilter</filter-name>
    <filter-class>
    com.lh.web.filter.LoginValidateFilter
    </filter-class>
      </filter>
      <filter-mapping>
      <filter-name>loginValidateFilter</filter-name>
    <url-pattern>user*</url-pattern>
      </filter-mapping>