JSP学习-------------包含指令

JSP学习记录:

九、包含指令
两种提供形式:
1.静态包含
<%@ include%>
语法:<%@ include file="包含文件路径"%>,可以包含任意的文件内容
范例:实现包含页面
<%@ page pageEncoding="UTF-8"%>
<%@ include file="partA.html"%>
<%@ include file="partB.jsp"%>
<%@ include file="partA.inc"%>

2.动态包含
<jsp:include>
静态包含只是将内容简单的包含进来,动态包含可以分为两种情况处理:
**被包含的页面属于静态文件,就像<%@ include%>一样直接包含
**被包含的页面属于动态页面,则要分贝处理后再进行包含
对于动态包含所给出的指令形式属于标签指令,所有的标签指令形式有一个最大的特点就是最后必须完结
**定义一:包含的时候不传参数
<jsp:include page="路径"/>
**定义二:包含的时候传递参数
<jsp:include page="路径">
    <jsp:param name="参数名称" value="参数内容"/>
    <jsp:param name="参数名称" value="参数内容"/>
    <jsp:param name="参数名称" value="参数内容"/>
    ...
</jsp:include>
所有接收的参数方式使用request.getParameter()完成
范例:
<%@ page pageEncoding="UTF-8"%>
<jsp:include page="partA.html"/>
<jsp:include page="partB.jsp"/>
<jsp:include page="partC.inc"/>
范例:定义一个可以接收参数的jsp页面param.jsp
<%@ page pageEncoding="UTF-8"%>
<h1>参数一:<%=request.getParameter("paramA")%></h1>
<h1>参数二:<%=request.getParameter("paramB")%></h1>
随后在包含此页面的位置上需要传递参数内容,所以使用动态包含操作
范例:包含数据
<%@ page pageEncoding="UTF-8"%>
<jsp:include page="param.jsp">
    <jsp:param name="paramA" value="hello"/>
    <jsp:param name="paramB" value="world"/>
</jsp:include>
标签指令不能够写在Scriptlet里面
<%@ page pageEncoding="UTF-8"%>
<%
    String str="world";
%>
<jsp:include page="param.jsp">
    <jsp:param name="paramA" value="hello"/>
    <jsp:param name="paramB" value="<%=str%>"/>
</jsp:include>
在标签指令中如果要使用Scriptlet里面定义的内容,那么必须使用表达式输出的方式

3.两种包含的区别(面试题)
范例:定义一个part.jsp
<%@ page pageEncoding="UTF-8">
<%
    int num=10;
%>
<h1>part.jsp,num=<%=num%></h1>
范例:使用静态导入include_demo.jsp
<%@ page pageEncoding="UTF-8">
<%
    int num=100;//与被包含页面的变量名重复
%>
<h1>include_demo.jsp,num=<%=num%></h1>
<%@ include file="part.jsp"%>
出错,重复的变量
静态包含的最大特点在于:将内容先包含到一起,而后一起进行处理
范例:使用动态包含
<%@ page pageEncoding="UTF-8">
<%
    int num=100;//与被包含页面的变量名重复
%>
<h1>include_demo.jsp,num=<%=num%></h1>
<jsp:include page="part.jsp"/>
此时没有错误,动态包含的特点是:如果被包含的页面是动态页面,先分别处理两个页面的操作,而后将结果包含进来
如果被包含的页面是静态页面,那么只是将内容简单的导入进来

总结:
静态:<%@ include file="路径"%>
先导入后一起处理
动态:<jsp:include page="路径"/>
先分别处理再导入结果
最好不要使用静态包含

猜你喜欢

转载自blog.csdn.net/amuist_ting/article/details/80989344