1. 程式人生 > >request請求轉發,頁面沒有跳轉的原因

request請求轉發,頁面沒有跳轉的原因

最近在做一個專案,點選搜尋按鈕後,跳轉到指定的servlet從資料庫中取資料,然後通過request請求轉發,將資料返回到頁面重新整理

req.getRequestDispatcher("RentSearch.jsp").forward(req,resp);

測試許久,都沒有效果!後來才發現,如果表單是用ajax提交的,那麼servlet內部無論是使用response.sendRedirect 或者  request.getRequestDispather() 都是無效的,這是為什麼呢?

因為servlet拿到的是ajax傳送過來的request,而不是瀏覽器傳送的請求的,所以servlet對request進行請求轉發和重定向對瀏覽器都不能影響瀏覽器的跳轉,這就是請求轉發和重定向失效的原因。

解決方案

方案一:

要想讓 response.sendRedirect() 生效,一定不能使用 ajax,只能使用同步的 form 表單提交;像這樣

<form action="RentSearchServlet">
    <input type="text" name="" placeholder="請輸入搜尋物品...">
    <input type="submit" >
</form>

方案二:

不管正確還是錯誤,都應該返回一個值給ajax,讓ajax去跳轉或幹其他的事.使用ajax本來就是為了區域性重新整理網頁,而不是跳轉。