2013-06-26 2 views
0

У меня есть сервлет, который может получать запросы несколькими JSP.Вернитесь к тому же JSP, который отправил запрос с RequestDispatcher в Servlet

Но когда я использую RequestDispatcher в сервлете, я не знаю, как пересылать JSP, который отправил запрос.

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

Я знаю, что есть что-то подобное в HTML: JavaScript: JavaScript: history.go (-1)

мне просто нужно что-то вроде этого:

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

Этот кусок кода вероятно, очень нуб, но он дает вам представление о том, что мне нужно.

Итак: мне нужно направить на страницу, отправившего первоначальный запрос (в основном перезагрузите страницу), а потому, что несколько 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, ​​requestdispatcher должен «пересылать/перенаправлять» на JSP A. Когда JSP B отправляет запрос ServletC, ​​requestdispatcher должен «пересылать/перенаправлять» на JSP B. Я не конечно, какая разница между переадресацией и перенаправлением, но она должна просто перейти на ту же страницу, с которой пришел запрос. – colin

ответ

2

Вы можете сделать после

  • Создайте скрытый параметр для каждого jsp с именем jspName и укажите значение для соответствующих JSP. например для JSP A, имя параметра jspName и значение a, для JSP B, имя параметра jspName и значение b
  • Прочитайте этот скрытый параметр в сервлете, используя следующий код.

    String jspName = request.getParameter("jspName"); 
    RequestDispatcher rd = request.getRequestDispatcher(jspName); 
    
    rd.forward(request, response); 
    

При вызове сервлета из JSP А, то он будет иметь параметр Я japName=a, когда сервлет код запущен, он будет извлекать значение a из request.getParamter("jspName") и getRequestDispatcher(jspName) создаст диспетчер для то же самое и rd.forward(request, response) перейдет на jsp.

+0

Большое спасибо, это сработало для меня. – colin

+0

С радостью помогите colin :) –

0

Я не выполнил следующее. Но надеюсь, что это может помочь вам сделать то же самое.

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