2013-02-03 27 views
0

我正在開發一個帶有JSP和servlet的Web應用程序。重新加載網頁再次調用代碼

在我的JSP中,我有幾種形式,比如下面

<form method="post" action="quotation"> 
<input type="submit" name="addStep" value="Add a Step" class="noLabel" /> 
</form> 

我使用形式的「name」屬性在我的servlet的doPost方法來知道我應該調用哪個代碼。

的問題如下:

  • 我載入我的jsp在我的Web服務器
  • 我「添加了一步」按鈕,單擊我的形式被應用=>正確的代碼
  • 如果我重裝按「輸入」的地址欄中的網頁,同樣的代碼被再次應用,因爲我想的是,addStep屬性不重置HTTP請求

你知道如何重置請求一個ttribut(這裏addStep)爲了防止這種行爲發生?

這裏是doPost方法:

protected void doPost(HttpServletRequest request, 
     HttpServletResponse response) throws ServletException, IOException { 

    request.setAttribute(DATABASE_ATT, databaseData); 
    this.getServletContext().getRequestDispatcher(VIEW) 
      .forward(request, response); 

} 

回答

0

柱後,重定向(使用HttpServletResponse.sendRedirect())到頁面示出的形式,使得刷新將只重新加載該頁面包含表單,而不是重新提交表格。

http://en.wikipedia.org/wiki/Post/Redirect/Get

+0

我明白你的意思,但我不能設法使它工作:(在我的servlet doPost方法,我對那一刻this.getServletContext()的getRequestDispatcher(VIEW)的.forward(請求,響應);我怎樣才能使用sendRedirect方法?我試圖設置相對HTML頁面與response.sendRedirect(「relativeHttpPage」)之前,但它不起作用 – facewindu

+0

然後編輯你的問題,顯示你的代碼,和告訴我們它做了什麼 –

+0

現在一切正常,我通過「sendRedirect」調用改變了「forward」調用,我認爲這是因爲我的doGet方法存在問題而無法工作。 – facewindu

相關問題