今天在做一个项目时,运用到了<jsp:include page="" flush="true"/> 动作与<%@ include file=""%>指令.开始我没有注意到两者之间主要的区别. 经过这个项目之后,加深了对它们两者之间的理解.
现我来说一下:
我在一个jsp文件里插入了一个隐藏字段:
<input name="operator" type="hidden" id="operator" value="<%=manager%>"/>
这个value="<%=manager%>" 是保存在session里的. 于是我想引用这个session 的值.
写了如下代码:
<%
String manager = (String)session.getAttribute("manager");
if(manager == null){
response.sendRedirect("login.jsp");
}
%>
但是, 程序不能编译.因为在另一个jsp文件里包含了上面的代码; 这个jsp文件是banner.jsp
我是以<%@ include file=""%>指令 方式引入的. 后来我把它改为<jsp:include page="" flush="true"/> 动作就可以了.
当我删除了上面所说的代码:
<%
String manager = (String)session.getAttribute("manager");
if(manager == null){
response.sendRedirect("login.jsp");
}
%>
的时候, 发现又不能编译了.
我总结了一下:
<%@ include file=”relativeURI”%> 引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起。
<jsp:include page=”relativeURI” flush=”true” /> 引入执行页面或servlet所生成的应答文本。