整jsp中包含两种包含指令
1、包含指令的意义:
一般正常的页面组成包含四个部分:上中下和左;
真正在改变的地方只是具体内容处,因为根据不同的用户浏览的不同,
那么肯定这个面会存在差异,现在基友两种做法实现以上的功能:
方法一:在每一个jsp页面中都包含工具栏,头部信息,尾部信息,具体内容:
方法二:将工具栏、头部信息,尾部信息都分成各个独立的文件,以后用的时候之间导入即可:
很明显第二种方法比第一种方法好,减少了代码的重复,以后修改方便;
包含分为动态包含和静态包含:
静态包含:
<%@ include file="要包含的文件路径"%>
·info.html文件的内容:
<h2><font color="red">info.html</font></h2>
·info.jsp文件的内容
<h2><font color="green"><%="info.jsp" %></font></h2>
·info_include.jsp文件的内容:
<%@ page contentType="text/html" pageEncoding="gbk"%>
<html>
<head><title>这是测试</title></head>
<body>
<h1>静态包含操作</h1>
<%@ include file="info.html"%>
<%@ include file="info.jsp"%>
</body>
</html>
静态包含就是将内容进行了直接的替换,就好比程序中定义了变量一样直接使用即可;
动态包含:
动态包含使用的是<jsp:include>指令完成的;与静态包含不同的是可以自动区分
被包含的页面是静态还是动态;
·不传参数:
<jsp:include page="{要包含的文件路径|<%=表达式%>}" flush="true|flase"/>
·传参数:
<jsp:include page="{要包含的文件路径|<%=表达式%>}" flush="true|flase">
<jsp:param name="参数名称" value="参数值">
……
</jsp:include>
只要是<>的代码都是标签代码,标签代码必须完结;
<%@ page contentType="text/html" pageEncoding="gbk"%>
<html>
<head><title>这是测试</title></head>
<body>
<h1>动态包含操作</h1>
<jsp:include page="info.html"/>
<jsp:include page="info.jsp"/>
</body>
</html>
标签指令必须完结:
<%@ page contentType="text/html" pageEncoding="gbk"%>
<h1> 参数一:<%=request.getParameter("name")%></h1>
<h1> 参数二:<%=request.getParameter("info")%></h1>
此时,接收的是从标签中传递过来的参数,可以根据自己的需要传递任意多个参数;
receive_param.jsp:
<%@ page contentType="text/html" pageEncoding="gbk"%>
<h1> 参数一:<%=request.getParameter("name")%></h1>
<h1> 参数二:<%=request.getParameter("info")%></h1>
include_demo03.jsp:
<%@ page contentType="text/html" pageEncoding="gbk"%>
<html>
<head><title>这是测试</title></head>
<body>
<h1>动态包含操作</h1>
<jsp:include page="receive_param.jsp">
<jsp:param name="name" value="lid"/>
<jsp:param name="info" value="yuj"/>
</jsp:include>
</body>
</html>
但是此时一个新的问题出现了,如果现在希望传递的参数内容是个变量
该如何?
<%@ page contentType="text/html" pageEncoding="gbk"%>
<html>
<head><title>这是测试</title></head>
<body>
<h1>动态包含操作</h1>
<%
String username="lid";
%>
<jsp:include page="receive_param.jsp">
<jsp:param name="name" value="<%=username%>"/>
<jsp:param name="info" value="yuj"/>
</jsp:include>
</body>
</html>
要传递变量,就是通过表单式完成;
2、该使用哪种语句:、
如果想要确定使用何种方式更容易,可以通过一段代码完成:
include.jsp:
<%
int x=10;
%>
<h1>include.jsp---><%=x%></h1>
以上为一个被包含的页面,这个页面中首先定义了一个x的变量,之后进行输出,
下面通过静态包含语句,包含以上的页面,并在页面中也定义一个变量x:
<%@ page contentType="text/html" pageEncoding="gbk"%>
<html>
<head><title>这是测试</title></head>
<body>
<h1>动态包含操作</h1>
<%
int x=0;
%>
<h1>这是info_include03中的x---》<%=x%></h1>
<%@ include file="include.jsp"%>
</body>
</html>
此时,程序运行时出现了500的HTTP状态码,那么很明显的就是表示程序的错误,
提示信息问x变量重复了;
之所以产生这个问题,主要的原因是静态包含的处理原则:
静态包含的处理原则就是相当于直接替换,就是被包含的页的代码相当于直接
放在了包含页中------先包含,后处理;
动态包含:
<%@ page contentType="text/html" pageEncoding="gbk"%>
<html>
<head><title>这是测试</title></head>
<body>
<h1>动态包含操作</h1>
<%
int x=0;
%>
<h1>这是info_include03中的x---》<%=x%></h1>
<jsp:include page="include.jsp"/>
</body>
</html>
以上运行没有错误,原因是动态包含是先处理后包含,包含的是处理后的结果;
很明显,第二种(动态)包含的操作更加容易使用,因为在开发中难免会出现重复变量的原因;