2013-07-10 2 views
0

이 Java 웹 응용 프로그램은 무한 루프처럼 실행됩니다. 아무도 그 이유를 말해 줄 수 있습니까? 여기에 모든 요청을 필터링해야합니다. 허용 된 시스템을 사용할 수 있습니다. 다른 사용자가 메시지와 함께 로그인 페이지로 이동해야합니다. 나를 도와주세요.프로그램을 실행할 때 무한 루프가 발생합니다

FilterRequest.java

package com.mobitel.bankdemo.web; 

import java.io.IOException; 
import javax.servlet.Filter; 
import javax.servlet.FilterChain; 
import javax.servlet.FilterConfig; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 

import com.mobitel.bankdemo.domain.User; 

public class FilterRequest implements Filter{ 
    FilterConfig filterConfig = null; 

    public FilterRequest() { 
     super(); 
    } 

    public void init(FilterConfig filterConfig) throws ServletException { 
     this.filterConfig = filterConfig; 
    } 

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { 
     HttpServletRequest request = (HttpServletRequest) req; 
     HttpServletResponse response = (HttpServletResponse) resp; 
     System.out.println("Inside the filter.............." ); 
      HttpSession session = request.getSession(true); 
      User u = null; 
      if(session.getAttribute("loggedUser")!=null){ 
       u = (User) session.getAttribute("loggedUser"); 
      }  
      if (u!= null) 
      { 
       System.out.println("user does exits.." + u.getUname()); 
       chain.doFilter(req, resp); 

      }else{ 
       String message = "Please Login!";    
       req.setAttribute("loginMsg", message); 
       response.sendRedirect("login2.jsp"); 
      } 
    } 
    public void destroy() { 
     // do cleanup stuff 
    } 
} 

web.xml에 필터 매핑

<filter> 
     <filter-name>FilterRequest</filter-name> 
     <filter-class>com.mobitel.bankdemo.web.FilterRequest</filter-class>     
    </filter> 
    <filter-mapping> 
     <filter-name>FilterRequest</filter-name> 
     <url-pattern>*.jsp</url-pattern> 
    </filter-mapping> 

+0

가능한 중복 (http://stackoverflow.com/questions/13114743/java-filter-infinite-loop) – NINCOMPOOP

+0

당신이 세부 사항을 게시하시기 바랍니다 수 있습니다 통해 UR 문제를 해결할 수 있음 sysouts의 로그 및 login2.jsp에 주어진 조치를 포함하여 – Abhilash

답변

0

난 자바 전문가가 아니라고하지만, 단지 난 그냥 말하고 싶은 코드를 찾고 사전에 감사합니다 2 개의 것

(1) 필터가 여기 같은 요구로부터 유저 명을 얻는 지 생각해주세요.

if(session.getAttribute("loggedUser")!=null){ 
       u = (User) session.getAttribute("loggedUser"); 
      }  
      if (u!= null) 
      { 
       System.out.println("user does exits.." + u.getUname()); 
       chain.doFilter(req, resp); 
다시 서브 루틴 또는 다른 일을 필터링하는 방법으로하지만 user=null을하고 우리가

전에 정리 한 경우이 때문에 다시 동일로 들어갑니다이 방법으로 얻기 후에 갈 것

하는

   if (u!= null) 
       { 
        System.out.println("user does exits.." + u.getUname()); 
        chain.doFilter(req, resp); 

그래서 사용자 u = null을 메소드 외부에 정의하십시오. 이

+0

이 작동하지 않습니다. ( – user1758876

0
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { 
      HttpServletRequest request = (HttpServletRequest) req; 
      HttpServletResponse response = (HttpServletResponse) resp; 
      System.out.println("Inside the filter.............." ); 
    String loginUrl= request.getContextPath() + "/login2.jsp";//url for login page 
     String uri = request.getRequestURI().toString(); 
     if (uri.endsWith(loginUrl)){// if uri is login page then no need to check if login, just process the chain 
      chain.doFilter(); 
     } 
      else{ HttpSession session = request.getSession(true); 
       User u = null; 
       if(session.getAttribute("loggedUser")!=null){ 
        u = (User) session.getAttribute("loggedUser"); 
       }  
       if (u!= null) 
       { 
        System.out.println("user does exits.." + u.getUname()); 
        chain.doFilter(req, resp); 

       }else{ 
        String message = "Please Login!";    
        req.setAttribute("loginMsg", message); 
        response.sendRedirect("login2.jsp"); 
        return; 
       } 
    } 
     } 
[자바 필터 무한 루프]의
+0

) response.sendRedirect ("login2.jsp")가 제거되었지만 동일한 문제가 발생했습니다. – user1758876

관련 문제