大家好,又见面了,我是你们的朋友全栈君。
两种方式
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 比较适合于引入改动较多的页面。
实例
include.jsp 的内容都是一样:
<!-- 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:
<!-- 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>
方式二:
<!-- 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部分:
out.write("===begin include jsp=== \r\n");
out.write("<p>Include JSP: </p> \r\n");
String str = request.getParameter("age");
out.write("\r\n");
out.write("age:\r\n");
out.print(str);
out.write(" <br>\r\n");
out.write("\r\n");
out.write("===end include jsp=== ");
而方式2如下:
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
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/158664.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...