jsp(2)
目录
1.Jsp指令
JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。
1.1 include指令
include指令用于引入其它JSP页面,如果使用include指令引入了其它JSP页面,那么JSP引擎将把这两个JSP翻译成一个servlet。所以include指令引入通常也称之为静态引入。 语法: <%@ include file="header.jsp" %>
注:1)原理就是把被包含的页面(header.jsp)的内容翻译到包含页面(index.jsp)中,合并翻译成一个java源文件,再编译运行!
- 如果使用静态引入,被包含页面中不需要出现全局的html标签了!(如html、head、body)。
- file属性用于指定被引入文件的相对路径。 file属性的设置值必须使用相对路径,如果以“/”开头,表示相对于当前WEB应用程序的根目录(注意不是站点根目录),否则,表示相对于当前文件。
例:在header.jsp文件中,写入:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%-- 被包含页面不需要出现全局的HTML标签,如:HTML、head、body等--%>
<h1>这是网页的头部</h1>
在index.jsp文件中,写入:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>jsp指令之 include</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%--导入 --%>
<%-- <%@include file="header.jsp" %> --%>
<%@include file="/header.jsp" %><!-- web应用程序的根目录,即webRoot -->
<h1>这是网页的主体</h1>
</body>
</html>
浏览器查看:
JSP引擎将把这两个JSP翻译成一个servlet,具体可以查看,index_jsp.java源文件
可以看到,header.jsp中的内容,被写到了index.jsp中的)_jspService方法中,即合并在了一起,通过out.write()方法写出到浏览器。
1.2 page指令
page指令用于定义JSP页面的各种属性,无论page指令出现在JSP页面中的什么地方,它作用的都是整个JSP页面,page指令最好是放在整个JSP页面的起始位置。