<%@include file="footer.jsp" %>
注:此时引入的是静态的jsp文件,它将引入的jsp中的源代码原封不动地附加到当前文件中,所以在jsp程序中使用这个指令的时候file里面的值(即要导入的文件)不能带多余的标签或是与当前jsp文件重复的东西。例如里面不要包含<html><body>这样的标签,因为是把源代码原封不动的附加过来,所以会与当前的jsp中的这样的标签重复导致出错
二、方式2
<jsp:include page=”/user/test”flush=”true”/>
此时引入执行页面或生成的应答文本.jsp:include标签导入一个重用文件的时候,这个文件是经过编译的.
flush 表示在读入包含内容之前是否清空任何现有的缓冲区。
注: 通俗点说就是附加这个要导入文件经过编译后的效果,所以可以含有与当前jsp程序中重复的内容,因为在附加过来之前就会被解析掉。
区别 |
include |
jsp:include |
执行时间 |
翻译阶段 |
在请求处理阶段执行 |
引入的内容 |
引入静态文本,先包含,后编译 |
引入执行页面或servlet所生成的应答文本. 被包含的文件先编译,后包含进来,然后显示 |
三、实际应用中的引用时的路径问题
相对路径
•不以"/"开头的路径。
方式1 硬编码形式-
<a href="../a2.jsp">点击访问a2.jsp</a> <!-- ../ 的用法为:向上跳一级 -->
注:相对路径较易出错,在实际开发中建议使用绝对路径。
方式2 防止硬编码
•使用String request.getContextPath()方法来即时获取应用名
<%String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>
<head>
<base href="<%=basePath%>">
</head>