天天看點

Servlet技術-請求轉發,重定向和包含的關系

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"%>