我有一個表單將POST請求提交給由@WebServlet("/SignUp")
定義的servlet。Java servlet重定向有錯誤的URL並使用錯誤的HTTP方法
我也有客戶端檢查,以確保所有的表單輸入已填充,但如果他們潛入並提交與空輸入的表單,我想servlet發送它們返回/Home
(即index.jsp)作爲後備。
我有我的註冊servlet的的doPost()以下:
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
final String METHODNAME = "doGet";
logger.entering(CLASSNAME, METHODNAME);
String email = request.getParameter("email");
String pass = request.getParameter("password");
String cpass = request.getParameter("confirmPassword");
String forwardJsp = "";
if (StringUtils.isNotBlank(email) && StringUtils.isNotBlank(pass)
&& StringUtils.isNotBlank(cpass)) {
forwardJsp = "/SignUpMoreInfo.jsp";
} else {
// one of the fields was empty
request.setAttribute("signupFieldWasEmpty", true);
forwardJsp = "/Home";
}
request.getRequestDispatcher(forwardJsp).forward(request, response);
logger.exiting(CLASSNAME, METHODNAME);
}
這
在基層工作的。如果他們忽略輸入一個值(我還沒有做任何真正的檢查,比如.trim()或無效字符),那麼它們將被髮送回index.jsp(由/ Home Servlet支持)。
但是,我有兩個問題與我的代碼的工作方式,我不知道如何解決它們。
我的index.jsp現在被加載爲POST請求,而不是通常的GET。如果用戶刷新頁面,他們會得到一個客戶端警告,提醒用戶在POST請求中刷新頁面,這在主頁上確實很醜陋。
瀏覽器中的URL仍然有地址
http://localhost:8080/SignUp
,當時我期待它是http://localhost:8080/Home
。這對用戶來說也是醜陋和令人困惑的,因爲url不再正確地代表他們與網站的「主頁」頁面關聯的頁面。
如何在保留儘可能多的MVC的同時,解決這些問題以及我的Java後端代碼?
你是否考慮過不使用提交按鈕,而是使用Javascript進行提交,這樣你就可以在客戶端執行驗證。如果他們在瀏覽器之外進行POST,然後在doPost中捕獲它,然後返回500錯誤,那麼我認爲 –