Posted on 2008-10-31 15:10
leekiang 阅读(650)
评论(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>