2014-02-15 7 views
0

Я создал простой проект сервлета jsp, когда я отправляю форму jsp, вставляя данные в указанную таблицу, но после этого, когда я ссылаюсь на одну и ту же форму jsp, отправляю и те же данные, вставленные в таблицу.При обновлении страницы jsp снова отправлено

ItemUnit.jsp

<form method="POST" action='ItemUnitHandler' name="frmAddUser"> 
    <input type="hidden" name="action" value="insert" /> 
    <table style="width:95%;margin-top:70px;" align="center"> 
     <tr> 
      <td style="width:10%">&nbsp;</td> 
      <td style="width:30%" align="right">Item Unit :</td> 
      <td style="width:2%">&nbsp;</td> 
      <td style="width:40%" align="left"><input type="text" name="itemUnitName" style="width:200px;" /></td> 
      <td style="width:18%">&nbsp;</td> 
     </tr> 
     <tr><td colspan="5">&nbsp;</td></tr> 
     <tr> 
      <td colspan="5" align="center"> 
       <input type="submit" class="button-2" value="Insert"></input> &nbsp;&nbsp;&nbsp; 
       <input type="reset" class="button-2" value="Reset"></input> 
      </td> 
     </tr> 
    </table> 
</form> 

сервлетов сообщение метод код ..

String action = request.getParameter("action"); 
System.out.println("action :action action : "+action); 
if(action == null) 
{ 
    redirect = "ItemUnit.jsp"; 
} 
else if(action.equalsIgnoreCase("insert")) 
{ 
    ItemUnit objItemUnit = new ItemUnit(); 
//  System.out.println("request.getParameter : "+request.getParameter("itemUnitName")); 
    objItemUnit.setItemUnit(request.getParameter("itemUnitName")); 
    dao.addItemUnit(objItemUnit); 
    redirect = "ItemUnit.jsp"; 
} 

пожалуйста, помогите мне с этой проблемой ...

+0

Конечно, will..And почему uwant на refresh.Do и хотите отключить обновление? –

+0

, когда вы нажимаете кнопку отправки, тогда он будет вызывать сервлет и вставки. После этого он будет на любой другой странице? – SpringLearner

+0

'@Abhinav Kumar' somethig вот так ... – Vijay

ответ

1

В идеале, вы должны земли на статической странице результатов, вместо отображения формы ввода снова. Идея состоит в том, чтобы заставить браузер переключиться на новый URL-адрес, чтобы обновление не приводило к повторному запуску другого обновления данных. Это самое простое решение.

Но если вы предпочитаете использовать тот же экран, вы должны использовать скрытый токен. Вы должны записать какое-либо состояние, так как хотите отличить 2 запроса друг от друга: первый и второй запрос (обновление).

В вашей логике устанавливайте токен при первом отображении формы ввода. По любому входящему запросу из того же сеанса проверьте, используете ли вы уже этот токен и используете его, чтобы определить, является ли это повторным запросом. Диаграмма ниже иллюстрирует ее далее.

Настройка

enter image description here

Обработка

enter image description here

+0

' @ Jops' как определить, что это второй раз запрос ..? – Vijay

+0

@win Это для второго подхода. См. Диаграмму. Знак - это ключ. – Jops

+0

'@ Jops' я не хочу использовать сеанс в своем проекте ... – Vijay

Смежные вопросы