在javaweb中有两个include指令
一个是编译指令<% @ include file=”fileName”%>,要知道JSP文件最终会被转换成Servlet执行,所以同一个jsp文件中可以使用多个include 编译指令,最终都会被转换成一个servelt执行。
要注意的是,被包含过后的文件最终会成为一个文件,所以在这几个文件中不能出现相同的变量名称,否则会出现报错。
另外一个是动作指令<jsp:include page="filePath" flush="true|false">
两者的区别,前者是静态包含,后者是动态包含。
先看<% @ include file=”filename” %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%@ include file="hello.jsp" %>
</body>
</html>
部署后的源码:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>HelloWorld</title>
</head>
<body>
hello world
<br>
hello world
</body>
</html>
</body>
</html>
在Tomcat部署后,在浏览器中查看源码,发现源码中是有两个文件组成的。在当前jsp文件代码中的body段中还有一个jsp文件的源码。这就说明,使用<%@ include file=”“filename%>是静态包含的。
看看使用<jsp:include page="pagePath">
既然使用了<jsp:include >
指令,就需要知道它是动态编译的。所以在使用这个指令包含其他文件之前,要确保这个页面里面的一些元素或者标签对和要包含的页面没有相同的元素,或者会出现错误。
被包含的正确文件:
<body>
<%="hello world" %>
</body>
正常的包含:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<jsp:include page="hello.jsp" flush="true"></jsp:include>
</html>
仔细查看,可以发现,在使用<jsp:include >
的页面,我删除了body标签对。如果不删除,则会出现以下报错。
下面说一下使用<jsp:include >
传递参数
在刚刚的jspinclude页面中,添加以下代码:
<jsp:include page="hello.jsp" flush="true">
<jsp:param name="bgcolor" value="green"></jsp:param>
</jsp:include>
要注意将<jsp:param>
包含在<jsp:include>
标签对中
在本包含的页面中,使用request获取参数值。
<%=request.getParameter("bgcolor") %>
目前本人的理解有限,有什么错误,请各位大神指出。