JSP Include 文件方式

2022-09-14 09:55:16 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

两种方式

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

0 人点赞