Posted on 2008-10-31 15:10
leekiang 閱讀(657)
評論(0) 編輯 收藏 所屬分類:
jsp,servlet
1,sendRedirect
寫法:response.sendRedirect(); 服務器根據邏輯,發送一個狀態碼,告訴瀏覽器重新去請求事先訪問過的那個地址,一般來說瀏覽器會用剛才請求的所有參數重新請求,所以session,request參數都可以獲取,request.setAttribute的內容沒有了
2,include
會同時包含本頁面和include頁面的內容,地址欄不變。
?request.setAttribute的內容可以正常使用
。
servlet寫法:request.getRequestDispatcher("jsp2.jsp").include(request,???response);?? jsp寫法:<jsp:include?page="include.jsp"/> 3,forward
頁面會是forward的頁面的內容,地址欄不變
request.setAttribute的內容,可以正常使用
servlet寫法:request.getRequestDispatcher("jsp2.jsp").forward(request,???response);
jsp寫法<jsp:forward?page="include.jsp"/>
以上內容主要來自
圖解sendRedirect,include,forward的區別
該文有形象的示意圖,值得一看。
4,<%@ include file="/bookshelf.jsp" %>和<jsp:include page="bookshelf.jsp" flush="true" />
是有區別的。前者主要用于靜態內容,后者主要用于動態內容(flush='true'必加?)。
?如果要傳遞參數,只能利用后者的<jsp:param name="" value=""/>標記,不能直接放在url后面。
參考:JSP 最佳實踐: 用 jsp:include 控制動態內容
<%@ page language="java" contentType="text/html" %>
<html>
<body>
<jsp:include page="header.jsp" flush="true">
<jsp:param name="pageTitle" value="newInstance.com"/>
<jsp:param name="pageSlogan" value=" " />
</jsp:include>
<%@ include file="/navigation.jsp" %>
<jsp:include page="bookshelf.jsp" flush="true" />
<jsp:include page="/mt-blogs/index.jsp" flush="true" />
<%@ include file="/footer.jsp" %>
</body>
</html>