2012-02-03 2 views
0

특정 웹 주소 x.pt에 대한 요청이 Servlet1과 매핑되도록 URL 매핑에 web.xml이 있습니다. 이 서블릿의 service()에서 요청에 특정 매개 변수가 있는지 확인합니다.다른 서블릿에서 서블릿 서비스 호출()

그렇다면 호출은 인스턴스화하고 서비스 메소드를 호출하여 다른 서블릿 Servlet2에 위임됩니다. 요청이 특별한 이벤트 때

public void service(HttpServletRequest req, HttpServletResponse res) 
    throws ServletException, IOException { 

    // if the call is for some special events (request has some specific parameter) 
    if (req.getParameter(conditionCheck()) { 
     doPost(req, res); 
    } else { 
     // Report parsing 
    } 
} 

public void doPost(HttpServletRequest req, HttpServletResponse res) 
    throws ServletException, IOException { 

    try { 
     // instantiate Servlet2 object 
     servlet2.init(this.getServletConfig()); 
     servlet2.service(req, res); 
     servlet2.destroy(); 
    } catch (Exception e) { 
     LOG.error("Unable to execute event", e); 
    } 
} 

브라우저 (즉 Servlet2에) 나는 brwoser에 Servlet2의 반응을 얻고 여분의 뭔가를 할 필요가 있다면 알려 주시기 않는 일부 JSON 텍스트를 반환합니다.

미리 감사드립니다. 크리스가 말한대로 나는 RequestDispatcher의 작업을 기대,

RequestDispatcher rd = getServletContext().getRequestDispatcher(destination); 
rd.forward(request, response); 
+0

무엇이 당신의 질문입니까? 이 방법이 효과가 있습니까, 아니면 문제가 있습니까? –

+0

아마도 나는 이해하지 못할 것입니다. 요청을 두 번째 서블릿으로 방향 재 지정/전달하지 않는 이유는 무엇입니까? – tartak

답변

1

당신은 RequestDispacher를 사용하여 요청을 전달할 수 있습니다. servlet2에서 제공하는 로직을 servlet1과 servlet2가 호출 할 수있는 별도의 객체로 이동시킬 수있는 기회가 있습니까? 가능한 경우 더 나은, 더 쉽게 테스트 할 수있는 솔루션을 제공 할 것입니다.

0

을,하지만 난 서블릿이 직접이 같은 호출되는 볼 때 나는 항상 불편 해요 :