包含的概念
在一个项目中会出现多个页面,但是这些页面的头部信息和尾部信息可能是一样的,此时就需要在多个页面中编写相同的代码,这样就出现了代码的重复现象,最好的解决办法是将头部信息和尾部信息定义到独立的文件中,之后在需要的地方包含就行。
在JSP中有两种包含方式:
静态包含:<%@include file="被包含的文件路径"%>
动态包含:<jsp:include page="被包含的文件路径"/>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 公共的头部信息 -->
<%@ include file="header.jsp" %>
<h1>这是主题部分</h1>
<%@ include file="footer.jsp" %>
</body>
</html>
以上的程序设计到了三个JSP页面,那么会转换成多少个*.Java文件呢?
发现了使用静态包含最终生成一个*.class文件,证明了在编译之前先将需要导入的文件包含进来之后成为一个页面再进行转换,所有最终编译出一个*.class
观察动态包含
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 公共的头部信息 -->
<jsp:include page="header.jsp" />
<h1>这是主题部分</h1>
<jsp:include page="footer.jsp" />
</body>
</html>
发现使用动态包含生成了三个*.class文件,证明了使用动态包含会将需要导入的文件先编译成独立的*.class文件,再包含到目标页面
JSP页面参数传递
emp.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 将参数传递给header.jsp页面 -->
<jsp:include page="header.jsp">
<jsp:param value="red" name="color"/>
</jsp:include>
</body>
</html>
header.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>
<!-- 在jsp页面输出内容 -->
<%=request.getParameter("color") %>
<%
String color = request.getParameter("color");
System.out.print(color);
%>
</h1>
</body>
</html>
动态包含和静态包含的区别
静态包含:
-
语法:<%@ include file=“路径”%>
-
先将需要导入的文件包含之后在编译成一个*.class文件
动态包含:
-
语法:<jsp:include page=“路径”/>
-
如果被包含的文件是静态资源,就和静态包含一样
-
如果包含的是动态资源,则会先将被包含的资源编译成独立的class文件之后在进行包含