頁面跳轉兩種方式,跳轉兩種方式
在介面顯示過程用,一般都是通過使用者提交頁面請求到Servlet,在通過Servlet處理後跳轉到相應的介面,進行資料的顯示。一般頁面跳轉有兩種方式,分別是重新導向(response.sendRedirect)和轉寄(request.getRequestDispatcher)。下面分別來看這兩種方式是如何進行實現的(以下代碼是在Servlet中進行頁面跳轉操作的): 1.重新導向(response.sendRedirect)方式
ItemManager itemManager=new ItemManagerImpl(); try{ itemManager.addItem(item); }catch(ApplicationException e){ String error_message="添加物料失敗,物料代碼"; } //重新導向到查詢頁面 response.sendRedirect(request.getContextPath()+"/basedata/item_maint.jsp?errorMessage="+URLEncoder.encode(errorMessage,"GB18030"));
//jsp接收servlet參數
<font color="red"><%=request.getParameter("error_message")==null? "": request.getParameter("error_message")%></font>
2.轉寄(request.getRequestDispatcher)方式
ItemManager itemManager=new ItemManagerImpl(); try{ itemManager.addItem(item); }catch(ApplicationException e){ //將參數設定到request的屬性中 request.setAttribute("error_message", "添加物料失敗,物料代碼"); } //轉寄到jsp頁面 request.getRequestDispatcher("/basedata/item_maint.jsp").forward(request, response);
//jsp接收servlet參數
<font color="red"><%=request.getAttribute("error_message") %></font>
3.重新導向和轉寄的主要區別:(是否共用request)
重新導向頁面:由於瀏覽器所顯示的頁面地址為新的URL,所以原頁面的request變數就會失效,request中的資料也無法傳遞到新的頁面,造成不能共用request。如果要使用重新導向方式,需要在其URL地址後面跟上要傳遞的參數。
轉寄頁面:轉寄頁面時由於使用的是同一個URL地址,所以可以將一些參數直接設定到request的屬性中,其可以根據URL地址傳遞到前台介面。使得request共用使用。