`

JSP中的include的两种用法

    博客分类:
  • jsp
 
阅读更多

JSP中的include的两种用法

 

1.两种用法

<%@ include file=” ”%>

<jsp:include page=” ” flush=”true”/>

 

2.用法区别

(1)执行时间上区别

<%@ include file=”relativeURI”%>                   是在翻译阶段执行

<jsp:include page=”relativeURI” flush=”true” />  在请求处理阶段执行.

 

(2)引入内容的不同

 

<%@ include file=” ”%>

jsp的include指令元素读入指定页面的内容。并把这些内容和本来的页面融合到一起。(这个过程是在翻译阶段:也就是jsp被转化成servlet的阶段进行的。

<jsp:include page=”relativeURI” flush=”true” />引入执行页面或servlet所天生的应答文本.

 

3.如何使include页面携带入参

<jsp:include page=”<%=pageSelectedAtRuntime%>” flush=”true” >

<jsp:param name=”fitstParamer” value=”firstValue”>

<jsp:param name=”lastParamer” value=”lastValue”>

</jsp:include>

 

4. 说明:翻译阶段

翻译阶段:

jsp页面不能原封不动地被传送给浏览器,全部的jsp元素都必须首先由服务器进行处理。这是通过将jsp页面转达化成servlet,然后执行这个servlet来结束的。服务器需要一个jsp容器来处理jsp页面。jsp容器平常以servlet的情势来实现,这个servlet经过配置,可以处理对jsp页面的全部请求。

Jsp容器重视将jsp页面转化成servlet(称为jsp页面实现类—JSP Page implementation class),并编译这个servlet。这两步就组成了翻译阶段.

 

请求处理阶段:

Jsp容器除了上面提到的重视将jsp页面转化成servlet外,还重视调用jsp页面实现类以处理每个请求并产生应答.这个阶段我们就称为请求处理阶段.请求处理阶段仅执行类文档.

 

5.示例

服务器用tomcat,引入页面的jsp文档叫test.jsp。被引入的页面叫date.jsp.这个jsp文档里存放的是一个有关时间的jsp代码,当前的上下文根设为test

 

//======date.jsp的源文档=====//

<%@ page language=”java” contentType="text/html;charset=gb2312"%>

<%

  java.util.Date date=new java.util.Date();

  String date_cn ="";

  String dateStr = "";

  switch(date.getDay())

  {

      case 0:date_cn ="日"; break;

      case 1:date_cn ="一"; break;

      case 2:date_cn ="二"; break;

      case 3:date_cn ="三"; break;

      case 4:date_cn ="四"; break;

      case 5:date_cn ="五"; break;

      case 6:date_cn ="六"; break;

  }

   dateStr = (1900+date.getYear()) + "年" + (date.getMonth()+1) + "月" + date.getDate() + "日(星期" + date_cn + ")";

%>

  document.write("<%=dateStr%>");

//======以下是test.jsp的源文档=============//

<%@ page language=”java” contentType=”text/html;charset=gb2312”%>

<html>

<head>

<title>include的两种用法</title>

<jsp:include page=”date.jsp” flush=”true”/>

<%--@ include file=”date.jsp” %-->

<head>

<body>

<table><tr><td></td></tr></table>

</body>

</html>

 

先用<%@ include file=”date.jsp” %>这种情势引入date.jsp这个文档。此时出现了错误提示:

HTTP Status 500 –

org.apache.jasper.JasperException: /date.jsp(0,0) Page directive: can't have multiple occurrences of contentType

 

状况码为http 500服务器内部错误。再看下面的提示。在date.jsp页面中不能指定多个contentType.

原因就在这里了。是由于在翻译阶段,date.jsp文档的代码被原封不动地参加到了test.jsp页面从而合成一个文档。合成后的文档中就会雷同的:

<%@ page language=”java” contentType=”text/html;charset=gb2312”%>

 

这句代码。解决的办法是把date.jsp文档中的这句删掉。刷新后再请求test.jsp页面,正常。

 

查看tomcat下的临时文档,..\tomcat\work\Standalone\localhost\test目录下会看到test_jsp.java和test_jsp.class两个文档,

这里的java文档就是jsp容器将jsp转化成了servlet而得到的test_jsp.java这个文档。

相对应的test_jsp.class这个文档就是编译test_jsp.java这个servlet文档产生的类文档了。打开所产生的servlet文档(test_jsp.java)。此时我们会发觉,在test.jsp文档被转化成servlet文档时,在输出的<haed>中间参加了一些不是test.jsp页面里面的代码,新参加的内容就是date.jsp里面的代码.

 

将<%@ include file=”date.jsp”%>换成<jsp:include page=”dae.jsp” flush=”true”/>,然后请求test.jsp.此时会在页面上看见.我们所引入date.jsp输出的日期中中文出现了乱码. 

所以在我们作include行动元素引入页面时,实际只是引用了date.jsp这个文档被转化并被编译后产生的servlet类文档.既如此,date.jsp就是作为一个单独的文档在执行后才被test.jsp文档运行时调用.由于date.jsp文档中无指定字符编码.所以出现了乱码.解决办法是在date.jsp文档中重新把刚才去掉的

 <%@ page language=”java” contentType=”text/html;charset=gb2312”%>

再查看tomcat下的临时文档会发觉.此时多出了一个date_jsp.java文档和一个date_jsp.class文档.这两个文档得来的方法跟test_jsp.java和test_jsp.class文档得来的方法一样.再查看一下此时test_jsp.java文档的代码会发觉.此时只增加加了一句代码:

JspRuntimeLibrary.include(request, response, "date.jsp", out, true);

 它并无把date.jsp文档的代码引入到test.jsp.

分享到:
评论

相关推荐

    jsp的include的两种用法

    jsp的include的两种用法 jsp的include的两种用法

    include 两种用法的区别

    jsp include 两种用法的区别 主要有两个方面的不同; 1.执行时间上: 2.引入内容的不同:

    jsp include文件时的一个乱码解决方法.docx

    在 JSP 中,include 文件可以使用两种方式来包含,即 `@include` 方式和 `jsp:include` 方式。其中,`@include` 方式可以使得包含页面和被包含页面在编译时被编译成一个文件,从而使得变量可以相互通用。但是,这种...

    springMVC使用jsp:include嵌入页面的两种方法(推荐)

    下面小编就为大家带来一篇springMVC使用jsp:include嵌入页面的两种方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    javaweb开发JSP资料大全

    session对象和out对象、JSP中request属性的用法、用WebWork、JSP、Velocity建立注册页面、在JSP中使用JavaMail、用JSP操作Cookie、解决MVC下分页显示的问题、缓冲技术提高JSP程序性能和稳定性、jsp属性的保存范围、...

    JSP中的include有几种形式?都有什么区别?

    JSP中的include有哪些?有什么区别? 1、JSP中的include有哪些 ... 您可能感兴趣的文章:springMVC几种页面跳转方式小结JSP中include指令和include行为的区别springMVC使用jsp:include嵌入页面的两种方法(推荐)

    jsp页经典面试题java程序员面试经常考到的面试题总结.pdf

    jsp可以使用静态包含和动态包含两种方式来包含静态文件。静态包含使用 &lt;%@ include file="copyright.html" %&gt;,动态包含使用&lt;jsp:include page="copyright.html" flush="true"/&gt;。 5.jsp注释 jsp中有四种注释方式...

    servlet和JSP面试题答案.pdf

    在 JSP 中,有两种 INCLUDE 方式:动态 INCLUDE 和静态 INCLUDE。 动态 INCLUDE 使用 jsp:include 动作实现,总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。 静态 INCLUDE 使用 include ...

    jsp + severlet +中文api

    jsp 是一种基于 Java 的服务器端脚本语言,servlet 是 Java 中的一种服务器端组件,而中文 API 则是指基于 Java 的中文编程接口。 首先,jsp 是一种基于 Java 的服务器端脚本语言,它可以与 servlet 结合使用以提供...

    jsp servlet面试题总结

    跳转有两种方法: 1. RequestDispatcher.forward() 方法:仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址,不会改变 Request 的值。 2. HttpServletResponse.sendRedirect() 方法:完全的...

    《jsp程序的设计》_试卷.doc

    在jsp页面中,有两种类型的include标记,一种是指令标记,另一种是动作标记。include指令标记的作用是在jsp页面出现该指令的位置处,静态插入一个文件,即jsp页面和插入的文件合并成一个新的jsp页面,然后jsp引擎再...

    JSP API接口和返回的版本

    在 Java 客户端中,我们使用了接口来描述远程方法,之后我们通过 useService 方法返回一个远程代理对象,该对象实现了我们定义的接口,之后我们就可以直接调用远程方法 helloWorld 了。如果你比较细心的话,你还会...

    Java-Web简答题.docx

    JSP 中有两种 INCLUDE 方式:静态 INCLUDE 和动态 INCLUDE。 * 静态 INCLUDE:&lt;%@include %&gt;,指令元素;编译时包含;对所包含的文件进行语法分析。 * 动态 INCLUDE:&lt;jsp:include&gt;,动作元素;运行时包含;不对所...

    web实验:Web组件重用与JavaBeans

    我们可以使用两种方法来实现这个实验。方法一是使用 JSP 表达式直接输出变量 userName 的值。方法二是使用 pageContext 作用域属性,在主页面和子页面间共享 userName 的值,降低主页面和子页面的依赖性。 实验 2:...

    jsp内置对象的用法

    定义:可以不加声明就在JSP页面脚本(Java程序片和Java表达式)中使用的成员变量 JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应): 1.request对象 客户端的请求信息被封装在request对象中,通过它...

    两个JSP页面父页面获取子页面内容的两种方法

    需求说明:两个JSP页面,父页面需要子页面的内容,但子页面是隐藏的,具体来说,子页面是一系列的模板,父页面要通过id来获取这些模板,不愿意通过&lt;include&gt;方式导入,因为如果模板过多,就导致整个父页面太大,加载...

    JSP页面的静态包含和动态包含使用方法

    JSP中有两种包含:静态包含:&lt;&#37;@include file=”被包含页面”%&gt;和动态包含:&lt;jsp page=”被包含页面”flush&gt;。下面以一个例子来说明如何使用包含。 实例: 项目文件树: header.jsp文件中内容: &lt;...

    JSP高级编程

    通过这一部分的学习,读者可以掌握JSP的基本使用方法,学会如何使虽JSP来开发一般的中、小型Web应用。这一部分使用常见的Apache Group的Tomcat作为JSP引擎的例子。第二部分为JSP高级应用部分。这一部分主要讲述如何...

    java面试题web部分

    JSP中的INCLUDE有两种,动态INCLUDE和静态INCLUDE。动态INCLUDE用jsp:include动作实现,总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。静态INCLUDE用include伪码实现,定不会检查所含文件的...

    JS JSP ASP .NET J2AM API接口和返回的版本

    在 Java 客户端中,我们使用了接口来描述远程方法,之后我们通过 useService 方法返回一个远程代理对象,该对象实现了我们定义的接口,之后我们就可以直接调用远程方法 helloWorld 了。如果你比较细心的话,你还会...

Global site tag (gtag.js) - Google Analytics