4.1 JSP基本語法
JSP (全稱Java Server Pages) 是由 Sun Microsystems 公司倡導和許多公司參與共同創建的一種使軟件開發者可以響應客戶端請求,而動態生成 HTML、XML 或其他格式文檔的Web網頁的技術標準。
JSP=HTML+Java
JSP的本質是Servlet
訪問JSP的時候,
(1)JSP轉換成Servlet(2)執行Servlet文件
(1)HTML模板數據
?
(2)JSP元素
一、Java部分-腳本:
(1)腳本段:<% 腳本 %>
(2)聲明: <%! 聲明 %>
(3)表達式:<%= 表達式 %> 注意:表達式后不能加分號
(4)注釋:<%-- JSP注釋 --%>
?
二、Java部分-指令
(1)page指令
語法:<%@ page 屬性1=值1 屬性2=值2... %>
<%@ page language=”java” import=”java.util.*” contentType="text/html;
charset=utf-8" session="true/false" errorPage="url"
isErrorPage="true/false" buffer="" %>
注意:在一個JSP頁面中可以使用多個<%@page %>指令,但其中的屬性只能用一次,不過import屬性例外,它可以多次出現,引入多個類和包,這和Java中的import語句差不多。
?
(2)include指令
語法:<%@ include file="相對的URL" %>
作用:靜態包含
注意:
被引入的文件必須遵循JSP語法。
被引入的文件可以使用任意的擴展名,但都會被JSP引擎按照JSP頁面的處理方式去處理,為了見名知意,建議使用“.jspf”(JSP fragment,即JSP片段)作為靜態引入文件的擴展名。
被引入的文件中不要包含<html></html>、<body></body>等標記,因為這樣會影響引入文件中同樣的標記。
引入和被引入文件中的指令不能沖突(page指令中的pageEncoding和import屬性除外)。
(3)taglib指令
<%@ taglib uri=”” prefix=”” %>
作用:是減少jsp頁面中的java代碼
三、Java部分-動作(了解)
(1)<jsp:include>
動作元素
語法:
<jsp:include page="relativeURL" flush="true|false" />page屬性用于指定被引入資源的相對路徑flush屬性用于指定是否將當前頁面的輸出內容刷新到客戶端。
作用:把其他資源的輸出內容插入到當前JSP頁面的輸出內容中。----動態包含
案例:
<%@-- include.jsp --%><%@ 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>include</title>
</head>
<body><%Thread.sleep(5000);%>included.jsp內的中文<br />
</body>
</html>
<%@-- dynamicInclude.jsp --%><%@ 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>dynamicInclude page</title>
</head>
<body>dynamicInclude.jsp內的中文<br><jsp:include page="included.jsp" flush="true" /><%--對比:flush為true和false的區別。--%><%--<jsp:include page="included.jsp" flush="false" />--%>dynamicInclude.jsp內的中文2
</body>
</html>
include指令和<jsp:include>
標簽有很大的區別:
-
<jsp:include>
標簽要引入的資源和當前JSP頁面是兩個彼此獨立的執行實體,即被動態引入的資源必須能夠被Web容器獨立執行。而include指令只能引入遵循JSP格式的文件,被引入文件與當前JSP文件需要共同合并才能翻譯成一個Servlet源文件。 -
<jsp:include>
標簽要引入的資源是在運行時才包含的。而include指令引入的資源是在編譯時期包含的,包含的是源代碼。 -
<jsp:include>
標簽運行原理與RequestDispatcher.include()方法類似,即被包含的頁面不能改變響應狀態碼或者設置響應頭,而include指令沒有這方面的限制。
(2)<jsp:forward>
動作元素
語法:
<jsp:forward page="relativeURL" />
類似:請求轉發