2015-04-06 61 views
1

我有形式的data.jsp和一個servlet(/ myservlet),該過程中形成的並返回結果data.jsp如何在將表單提交給servlet後將原始JSP保存在URL中?

的Servlet包含此部分:

String redir = "/data.jsp";  
ServletContext sc = getServletContext(); 
RequestDispatcher rd = sc.getRequestDispatcher(redir); 
rd.forward(request,response); 
return; 

有什麼辦法在URL中保留JSP而不是servelt? 例如,而JSP內容加載

http://example.com/data.jsp 後表單提交網址更改爲以下: ​​

是否有可能保持在data.jsp URL所有的時間,讓myservlet不會在所有URL中出現?

回答

0

通過你所提到的,使用ajax是最好的選擇。在表單提交時進行AJAX調用。提交數據到上面的servlet並返回所需的數據。在您的頁面上處理此響應。

對於瀏覽器。凍結提交的所有表單字段並顯示模態等待的gif。刪除ajax響應事件中的gif並顯示響應數據。

0

你可以做,而不是正重定向:

response.sendRedirect("data.jsp"); 

如果需要使用絕對路徑,請記住,用這種方法開始/的路徑是相對於服務器的根,而不是web應用程序的根,所以你需要預先上下文路徑,例如:

response.sendRedirect(request.getContextPath() + "/data.jsp"); 

編輯:如果你想保持相同的URL提交表單不失提交值之前和之後,反過來這樣做會更容易,並始終在URL中首先調用您的servlet,然後轉發到JSP。

要確定是否是在「提交」模式或僅在「顯示」模式(空白形式),可以檢查提交按鈕的存在作爲一個參數,例如:

if (request.getParameter("mySaveButton") != null) { 
    // Process the submitted form values 
    ... 
} 

這是實際上是model-view-controller pattern的基礎,其中servlet充當控制器,JSP充當視圖。控制器總是首先調用,並將請求轉發給適當的視圖或JSP。

+0

我相信我曾嘗試過,但JSP表單並沒有保留重定向後的字段選擇。 –

+0

看我的編輯.... –

相關問題