jsp中include的两种用法

匿名 (未验证) 提交于 2019-12-03 00:30:01

1.两种用法

第一种:include指令:通过file属性来指定被包含的页面,当JSP转换成Servlet时引入指定文件,一般不需要写头
<%@ pagecontentType="text/html;charset=GB2312" language="java"errorPage=""%>
<%@ include file="head.jsp"%>
<%@ include file="body.jsp"%>
<%@ include file="tail.jsp"%>
第二种:第二种:<jsp:include>动作元素:通过page属性来指定被包含的页面,当JSP页面被请求时引入指定文件,需要写头

<%@ page contentType="text/html; charset=GB2312"language="java" errorPage=""%>
<jsp:include page="head.jsp"/>
<jsp:include page="body.jsp"/>
<jsp:include page="tail.jsp"/>

注意:<jsp:include>动作通常是包含那些经常改动的文件,因为被包含的文件改动不会影响到包含文件,因此不需要对包含文件进行重新编译

2.用法区别

(1)引入内容的不同;执行时间上区别

include指令(静态包含)是在翻译阶段执行

<jsp:include> (动态包含) 在请求处理阶段执行.

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

<jsp:include>动作元素可以很方便的用<jsp:param>来向所包含页传递参数,方法如下:
<%@ page contentType="text/html; charset=GB2312"language="java" errorPage=""%>
<jsp:include page="head.jsp"/>
<jsp:includepage="body.jsp">
<jsp:param name="uid"value="username"/>
<jsp:param name="pwd"value="password"/>
</jsp:include>
<jsp:includepage="tail.jsp"/>

翻译阶段:

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

请求处理阶段:

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

5.示例

引入页面 date.jsp

//======date.jsp=====//

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

<%

%>


//======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

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.javatest_jsp.class两个文档,

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

打开所产生的servlet文档(test_jsp.java)。在test.jsp文档被转化成servlet文档时,在输出的<haed>中间新参加的内容就是date.jsp里面的代码.


将<%@ include file=”date.jsp”%>换成<jsp:include page=”dae.jsp” flush=”true”/>

原因:作include行动元素引入页面时,date.jsp就是作为一个单独的文档在执行后才被test.jsp文档运行时调用.

由于date.jsp文档中无指定字符编码.所以出现了乱码.解决办法是在date.jsp文档中重新把刚才去掉的

再查看tomcat下的临时文档,test_jsp.java只增加了一句代码:

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





易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!