關於Servlet頁面跳轉

關於Servlet頁面跳轉

這篇介紹在Servlet中頁面跳轉的兩種方法。
1.forward(request, response);
2.sendRedirect();

forward(request, response);

1
2
3
4
5
6
1.Server Side呼叫
2.定義在RequestDispatcher介面,由request.getRequestDispatcher().forward(request, response);呼叫
3.屬於內部轉址,URL不會顯示另一支jsp名稱
4.因為是內部轉址,可以透過setAttribute設定傳遞參數
5.效率較高
6.適用於權限管理轉頁時使用

sendRedirect();

1
2
3
4
5
1.Server Side呼叫
2.定義在HttpServletResponse,由response.sendRedirect();呼叫
3.直接外部呼叫另一支jsp,URL會顯示另一支jsp名稱
4.效率較低(因為cilent會在request一次)
5.適用於跳至外部網站或回主畫面使用

forward Example

1
request.getRequestDispatcher("Index.jsp").forward(request, response);

sendRedirect Example

1
response.sendRedirect("Index.jsp");

傳遞參數方法

1
2
3
4
塞值
request.setAttribute("test", name);
取值
request.getAttribute("test")

sendRedirect 不能使用傳遞參數

1
2
因為sendRedirect間接產生一個新的request,
所以舊的request setAttribute的參數會抓不到。