包含指令包括静态包含和动态包含
静态包含
<%@ include file="要包含的文件路径"%>
属于先包含然后再进行集中编译。在<body></body>标签里面。包含不管后缀名是什么,都会将内容直接包含并显示。假如我们现在一个a.jsp要包含一个b.jsp
b.jsp里面不要包含<html></html><body></body><head></head>,在一个完整的页面中,如果重复出现这些,则可能会出现显示错误。例如b.jsp可以这样写
<h2><font color="green">
<%="info.jsp"%>
</font></h2>
动态包含
<jsp:include page="要包含的文件路径">
</jsp:include>
<jsp:include>属于标签指令,记得要结束记得结束有个include
动态包含可以传递参数,假如一个a.jsp包含一个b.jsp
a.jsp
<%@ page contentType="text/html" pageEncoding="utf-8"%>
<html>
<head></head>
<body>
<%
String username="ljs";
%>
<h1>动态包含并传递参数</h1>
<jsp:include page="receive_param.jsp">
<jsp:param name="name" value="<%=username%>"/>
<jsp:param name="info" value="www.ljs.cn"/>
</jsp:include>
</body>
</html>
b.jsp
<%@ page contentType="text/html;charset=utf-8"%>
<h1>参数一:<%=request.getParameter("name")%></h1>
<h1>参数二:<%=request.getParameter("info")%></h1>
记住是a把参数传递给了b,但是a有包含了b,显示了b的内容。
输入http://localhost:8888/ljs/a.jsp
但是输入http://localhost:8888/ljs/b.jsp
建议使用动态包含因为静态包含是先包含后处理,如果在包含页面和被包含页面都定义了一个变量x,他就会报错,而动态包含就不会,它是先处理后包含。
跳转指令
<jsp:forward page="要跳转页面的路径">
<jsp:forward>
跳转指令也是可以传递参数,不过是从该页面传递到要跳转的页面。假如输入a.jsp,然后跳转到b.jsp,显示b.jsp的内容,可以看到跳转后但是地址不变,说明是服务器跳转,服务器根本不知道请求的是什么资源。
a.jsp
<%@ page contentType="text/html;charset=utf-8"%>
<html>
<body>
<%
String ljs = "ljs2";
%>
<h1>跳转页</h1>
<jsp:forward page="b.jsp">
<jsp:param name="ljs" value="ljs"/>
<jsp:param name="ljs2" value="<%=ljs%>"/>
</jsp:forward>
</body>
</html>
b.jsp
<%@ page contentType="text/html;charset=utf-8"%>
<html>
<body>
<h1>跳转后的页面中进行参数的接受</h1>
<h2>参数一:<%=request.getParameter("ljs")%></h2>
<h2>参数二:<%=request.getParameter("ljs2")%></h2>
</body>
</html>