2016-09-20 11 views
1

자바 서블릿을 처음 접했고 현재 작업하고있는 응용 프로그램 (forwading 또는 Redirect하지 않고 어떤 종류의 Proxy 클래스) 응용 프로그램의 컨텍스트 경로에 개체를 저장하고 싶습니다.서블릿의 컨텍스트 경로와 객체의 현재 상태를 저장/가져 오는 방법

나는 비슷한 질문이 있다는 것을 알고 있지만 작동시키지 못하거나 그냥 이해하지 못한다.

web.xml에서 컨텍스트 경로를 지정해야합니까? 컨텍스트 리스너가 필요합니까?

이것은 코드 단편이지만 저장된 객체 내의 객체는 null입니다. 개체의 현재 상태를 컨텍스트 경로에 저장할 수 있습니까? 첫 번째 요청이 서블릿에 만들어 질 때이 웹 컨테이너에 의해 생성되기 때문에

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

    try { 

     if(this.getServletContext().getAttribute("oldConnector")==null){ 
      Connector connection = new Connector(); 
      connection.sendRequest(request); 
      this.getServletContext().setAttribute("oldConnector", connection); 
     }else{ 
      ((Connector)this.getServletContext().getAttribute("oldConnector")).sendResponse(response); 
      this.getServletContext().removeAttribute("oldConnector"); 
     } 

답변

1

는 HttpServletResponse를의 응답 객체는 널 결코 없다.

따라서 "oldConnector"속성은 설정되지 않으므로 해당 값은 null로 표시됩니다.

제안 : if (response == null) 조건을 제거하여 컨텍스트 특성 "oldConnector"를 설정하십시오. 그리고 다른 서블릿에서 그 속성을 검색 한 다음 필요할 경우 제거하십시오.

아래의 코드는 귀하의 질문에 도움이됩니다.

+0

그래서 내가 "오브젝트"연결을 저장하고 후퇴하는 방법이 맞습니까? – MADforFUNandHappy

+0

사실 그것은 방법이 아닙니다. 그것은 귀하의 경우에 응답 객체가 결코 null이 아니기 때문에 if 조건은 사실이 아닙니다. if else 조건을 제거하고 컨텍스트 속성에서 연결 객체를 설정 한 다음 나중에 다른/동일한 서블릿에서 해당 연결 객체를 검색하십시오. –

+0

나는 this.getServletContext(). setAttribute ("oldConnector", 연결)가 올바른지 알고 싶다는 뜻을 알고 있습니다. 또한 요청/응답이 비어 있는지 여부를 확인하는 방법이 있습니까? – MADforFUNandHappy