2012-05-29 2 views
1

У меня есть 3 jsp pages(index.jsp, result1.jsp,result2.jsp) и один servlet. Обработка делается, как показано ниже:добавить кнопку в jsp

index.jsp

<form method="post" action="MYSERVLET" > 
<input type="text" name="studentname" id="studentname"/> 
<input type="submit" value="click" />// goes to a servlet named as MYSERVLET 
</form> 

MYSERVLET

String t=request.getParameter("studentname"); 
------fetching data from database and sending to result1.jsp------ 

     String nextJSP = "/result1.jsp"; 
     RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(nextJSP); 
     dispatcher.forward(request,response); 

result1.jsp

// извлечение данных из сервлетов и отображения данных в result1.jsp, а также прохождение такое же значение до result2.jsp

out.println(retrieved result from servlet); 
<a href="result2.jsp?somestring=<%out.println(retrieved result from servlet);%>"> <%out.println(retrieved result from servlet);%></a>// after clicking on "retrieved result from servlet" i am passing this retrieved value to another jsp result2.jsp and also retrieving some data from database as follows: 

result2.jsp

String w=request.getParameter("somestring"); 
out.println(w); 

Я хочу дать back button here (in result2.jsp) так, что после нажатия back button он примет меня result1.jsp, где я могу видеть воспроизведенные данные (out.println(retrieved result from servlet);). Но когда я нажимаю кнопку «Назад назад» (в result2.jsp), то каждый раз появляется предупреждение "Confirm Form Resubmission", а затем я перезагружаю эту страницу, чтобы увидеть (out.println(retrieved result from servlet);), я хочу избежать этого предупреждения, как я могу избежать этого? Как я могу прямо увидеть эту страницу без предупреждения?

ответ

4

Я думаю, что ваша проблема заключается в «прямом» действии, которое вы положили в свой сервлет. «Переадресация» происходит только на сервере, и браузер не знает, что происходит на сервере. Фактически, вы должны увидеть «URL MYSERVLET» в строке url, даже если вы находитесь на странице result1. Поэтому, когда вы переходите на result2.jsp, нажатие «назад» приведет вас снова к URL-адресу Servlet, а не к «result1.jsp». И поскольку ваш сервлет является объектом подачи формы, вы получаете это предупреждение.

Чтобы избежать этого, вы должны попробовать что-то вроде «перенаправления» или «sendRedirect» вместо «forward» в вашем сервлете. В этом случае ваш браузер будет знать об изменении адреса, и вы также можете использовать кнопку «Назад».

Обратите внимание, что при перенаправлении все данные запроса, отправленные на ваш сервлет, не могут быть переданы непосредственно в result1.jsp, вы должны сохранить их в сеансе. Попробуйте и прочитайте this.

1

Пожалуйста, держите все данные в сеансе на первой странице, используя session.setAttribute("name",value); и после приземления на вторую страницу нажатием кнопки укажите адрес firstPage без каких-либо данных и для отображения предыдущих данных на первой странице используйте session.getAttribute("name"); Чтобы каждый раз, когда вы переключаетесь между страницами, он перезагружает страницу и получает значения сеанса.