2013-06-26 7 views
0

여러 JSP에서 요청을받을 수있는 서블릿이 있습니다.Servlet에서 RequestDispatcher로 요청을 보낸 동일한 JSP로 돌아 가기

하지만 서블릿에서 RequestDispatcher를 사용할 때 요청을 보낸 JSP로 전달하는 방법을 알지 못합니다. 코드의

req.setAttribute("originalRequest", req.getRequestPage()); 
req.getRequestDispatcher(originalRequest).forward(req, resp); 

그 조각 : 난 그냥 이런 식으로 뭔가를 필요로 history.go (-1)

: 자바 스크립트 : 자바 스크립트

req.getRequestDispatcher("page.jsp").forward(req, resp); 

내가 거기에 알고는 HTML에서이 같은입니다 아마도 멍청한 녀석 일 테지만 당신에게 내가 필요한 것의 아이디어를줍니다.

그래서 : 나는 원래 요청을 (기본적으로 페이지를 다시로드) 전송 페이지로 전달해야하지만 여러 JSP로의 서블릿을 사용하기 때문에, 나는 "page.jsp"

+0

그래서 'JSP A'에서 'JSP B'로, 그리고 'JSP B'에서 'JSP A'로 요청을 전달 하시겠습니까? – Uooo

+0

또한 전달 및 리디렉션을 혼합하는 것처럼 보입니다. 그 차이점을 아십니까? 'history.go (...)'는 리다이렉션을 보여 주지만, JSP에서 포워딩을 사용하기를 원합니다. 정말로 필요한 게 뭐야? 문제가 코드 문제보다 더 많은 것처럼 보입니다. – Uooo

+0

JSP A, JSP B, ServletC 있습니다. JSP A가 ServletC에 요청을 보내면 요청 디스패처가 JSP A로 "전달/리디렉션"해야합니다. JSP B가 ServletC에 요청을 보내면 요청 디스패처가 JSP B로 "전달/리디렉션"해야합니다. 저는 아닙니다 앞으로와 리다이렉트의 차이가 무엇인지는 알지만, 요청이 온 것과 같은 페이지로 이동해야합니다. – colin

답변

2

당신이 할 수있는 에 간단하게 전달할 수 없습니다 다음

  • jspName이라는 JSP마다 숨겨진 매개 변수를 만들고 각각의 JSP에 값을 지정하십시오. 예 : JSP A의 매개 변수 이름은 jspName이고 값은 매개 변수 이름은 jspName입니다, JSP B를 들어, a이며 값은 b
  • 는 다음 코드를 사용하여 서블릿이 숨겨진 매개 변수를 읽습니다.

    String jspName = request.getParameter("jspName"); 
    RequestDispatcher rd = request.getRequestDispatcher(jspName); 
    
    rd.forward(request, response); 
    
당신이 JSP A로부터 서블릿을 호출하는

, 다음은 서블릿 코드가 실행 중일 때, 그것은 request.getParamter("jspName")에서 값 a을 검색합니다 japName=a, 있었던 파라미터 것과 getRequestDispatcher(jspName)는 대한 디스패처를 만듭니다 same과 rd.forward(request, response)은 jsp로 전달됩니다.

+0

고마워,이 일은 나를 위해 일했다. – colin

+0

콜린에게 도움을 기쁜 :) –

0

다음을 실행하지 않았습니다. 하지만 이것이 이것이 당신을 도울 수 있기를 바랍니다.

req.setAttribute ("originalRequest", req.getRequestPage()); req.getRequestDispatcher (req.getAttribute (originalRequest) .toString()). forward (req, resp);