大家好,又见面了,我是你们的朋友全栈君。
两种方式
JSP include 文件有两种方式:
1. 使用include 标签,像
<%@ include file=”include.jsp” %>
2. 使用jsp:include 标签,像
<jsp:include page=”include.jsp” flush=”true”> <jsp:param name=”age” value=”32″ /> </jsp:include>
使用的差异在于:
方式1 比较适合引入一些静态的,比较少改动的内容;比如网页的header 和 footer 的部分。
方式2 比较适合于引入改动较多的页面。
实例
两个jsp: main.jsp 和 include.jsp include.jsp 的内容都是一样:
代码语言:javascript复制<!-- include.jsp by oscar999-->
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ page language="java" import="java.util.*" %>
===begin include jsp===
<p>Include JSP: </p>
<p>CurDate <%=new Date()%></p>
<%
String str = request.getParameter("age");
%>
age:
<%=str%> <br>
===end include jsp===
main.jsp 导入方式不同: 方式1:
代码语言:javascript复制<!-- main.jsp by oscar999-->
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<body>
<div>
===begin main jsp===
<p> Main JSP request: </p>
===end main jsp===
</div>
<%@ include file="include.jsp" %>
</body>
</html>
方式二:
代码语言:javascript复制<!-- main.jsp by oscar999-->
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<body>
<div>
===begin main jsp===
<p> Main JSP request: </p>
===end main jsp===
</div>
<jsp:include page="include.jsp" flush="true">
<jsp:param name="age" value="32" />
</jsp:include>
</body>
</html>
差别的实质
JSP运行的实质是最终都会被web server 转成servlet 来执行。 tomcat 转化的.java 文件位于work/Catalina/local 的相关目录下。 比较一下两者的差别: 方式1产生后的Java的include部分:
代码语言:javascript复制 out.write("===begin include jsp=== rn");
out.write("<p>Include JSP: </p> rn");
String str = request.getParameter("age");
out.write("rn");
out.write("age:rn");
out.print(str);
out.write(" <br>rn");
out.write("rn");
out.write("===end include jsp=== ");
而方式2如下:
代码语言:javascript复制org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "include.jsp" (("include.jsp").indexOf('?')>0? '&': '?') org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode("age", request.getCharacterEncoding()) "=" org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode("32", request.getCharacterEncoding()), out, true);
可以看出方式1是直接输出,而方式二就是需要进行解释。
补充
开发的时候可能会给include的jsp 起一个比较容易区分的后缀名, 比如 .incjsp; 使用方式2 导入的话,使用Chrome 和Firefox 浏览器会有问题。会把include.incjsp 的源码文件输出,而不是产生后的html
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/158664.html原文链接:https://javaforall.cn