Web元件之間的關系包含3種,請求轉發,URL重定向和包含
1.請求轉發
請求轉發允許把請求轉發給同一應用程式的其他web元件,這種技術通常用于Web應用控制層的Servlet流程控制器,可檢查HTTP請求的資料,并将請求轉發到合适的目标元件,目标元件執行具體的請求處理操作并生成響應結果。
執行個體:
如果目前的Servlet元件要把請求轉發給一個jsp元件,如hello.jsp,可在Servlet中的service方法中執行一下代碼:
RequestDispatcher rd=request.getRequestDispatcher("hello.jsp");
//forward to request URL
rd.forward(request,resposne);
在jsp頁面中,可以使用<jsp:forward>标簽來轉發請求
<jsp:forward page="hello.jsp">
對于請求轉發,轉發的源元件和目标元件可以共享request範圍内的資料
2.URL重定向
請求重定向類似與請求轉發,但有一些重要差別,Web元件可以将請求定向到任意的URL,而不僅僅是同一應用中URL。重定向的源元件和目标元件不能共享同一個
HttpServletRequest對象,是以不能共享request範圍内的共享資料
若目前應用的Servlet元件要把請求轉發給URL,如http://www.csdn.net/可以在Servlet中的service()方法中執行一下代碼
response.sendRedirect("http://www.csdn.net");
HttpServletResponse的sendRedirect()向浏覽器傳回包含重定向的資訊,浏覽器根據這一資訊迅速發出一個新的新Http請求,請求通路重定向内容
3.包含
包含關系允許一個web元件聚集來自同一個應用中其他Web元件的輸出資料,并使用被聚集的資料來建立響應結果,這種技術通常用于模版處理器,它可以控制網頁布局。模版中每個頁面區域的内容來自不同的URL,進而組成單個頁面,這種技術能夠為應用程式提供一緻的外觀和感覺
Servlet類使用javax.Servlet.RequestDispatcher.include()方法包含其他的web元件,如目前的Servlet元件包含3個jsp元件,header.jsp main.jsp footer.jsp則可以在service中執行一下代碼:
RequestDispatcher rd;
rd=response.getRequestDispatcher("\header.jsp");
rd.include(request,response);
rd=response.getRequestDispatcher("\main.jsp");
rd=response.getRequestDispatcher("\footer.jsp");
在jsp檔案中可以通過<include>指令來包含其他資源
<%@ include file="header.jsp"%>
<%@ include file="main.jsp"%>
<%@ include file="footer.jsp"%>