要使用 java filter 过滤用户的非常请求页面,如果没有登录那就显示主页。
  用struts2 来控制跳转
  java filter 配置 <filter>
           <filter-name>filter</filter-name> 
          <filter-class>com.aps.comm.filter.LoginFilter</filter-class> 
       </filter>
       
       <filter-mapping>
            <filter-name>filter</filter-name> 
             <url-pattern>*.jsp</url-pattern> 
       </filter-mapping>
       
       <filter-mapping>
           <filter-name>filter</filter-name>
           <url-pattern>*.action</url-pattern>
   </filter-mapping>
doFilter    HttpServletRequest httpRequest = (HttpServletRequest) request;      
            HttpServletResponse httpResponse = (HttpServletResponse) response;
            
      String user= (String)httpRequest.getSession().getAttribute("user");
           
        System.out.println("user"+user);
        
          if (null == user || "".equals(user))
          {
           httpResponse.sendRedirect("/aps/index.jsp");
           
          
          }
          else 
          {
         
           filterChain.doFilter(request, response);
          }进入主页时,一真都在运行这一段代码,进入不了主页。 一个小问题都要问,欢迎大家拍。。
  最好有例子,

解决方案 »

  1.   

    死循环了吧
    index.jsp又被filter给过滤到,结果又到index.jsp,一直循环
    用firefox就更明显了 if (null == user || "".equals(user))
              {
                  httpResponse.sendRedirect("/aps/index.jsp");
                  
                 
              }       <filter-mapping>
                <filter-name>filter</filter-name> 
                 <url-pattern>*.jsp</url-pattern> 
           </filter-mapping>
      

  2.   

     if ((null == user || "".equals(user)) && !"/index.jsp".equals(httpRequest.getServletPath()))或类似代码首先,你应该知道redirect是另外一个请求,你重定向到index.jsp之后,客户端发出新的到index.jsp的请求,根据过滤规则,再次进入filter,并进入第一个if分支,再次重定向