在servlet中可能會牽扯到傳值或者跳轉的問題,可以能是servlet之間互相跳轉,也可能是兩個web應用程式之間互相跳轉。這就出現了請求轉發和重定向。
請求轉發:
說道請求轉發,不得不提到兩個parameter和attribute
parameter | attribute | ||
參數名(String) | 參數值(String) | 參數名(String) | 參數值(Object) |
name | xiaoli |
我們可以在用戶端頁面上通過<form>表單進行資料送出,在伺服器中,通過request來提取
通過getParameter方法對用戶端頁面送出的資料進行接收
String name = request.getParameter("userName")
attribute則需要通過setAttribute方法,在伺服器端進行輸入添加。
request.setAttribute("xuehao", "123456");
而我們傳值的辦法,就是通過傳遞request來達到傳值的目的
(request裡面的值包括表單上可以通過parameter方法獲得的的參數和伺服器端通過setAttribute方法輸入的。)
RequestDispatcher wxm = request.getRequestDispatcher("/LiServlet");
wmx.forward(request, response);//LiServlet是下一跳的servlet
接下來就是通過上面的語句進行請求轉發了。
請求轉發的特點:
1.請求轉發需要RequsetDispatcher,最後通過forward方法傳遞request和response
2.request資料從第一個servlet 到第二個servlet不會丢失,因為是同一個request
3.轉發隻能web應用程式内部進行轉發
4.如果第一個servlet請求方法是doGet,那麼轉發給其他servlet的方法都是doGet,及所有的請求方法類别一緻
5.請求轉發的位址欄顯示的依然是第一個請求資源路徑(可能會導緻表單的重複送出)
關于請求轉發和重定向(二)--- 重定位
http://blog.csdn.net/u011832252/article/details/26099907