1 聲明指令
格式:<%!聲明變量或函數 %>html
做用:會生成一個成員變量或成員方法,也可使用訪問修飾符修飾,public,private,protectedjava
2 註釋指令
格式:<%--註釋內容 --%>web
做用:會把jsp頁面內容註釋掉,當在頁面中想要註釋掉一些代碼時須要使用這種方法,而不能使用html形式的註釋。由於html格式的註釋不會註釋掉代碼。express
3 輸出jsp表達式
格式:<%= 表達式 %>
4 jsp腳本
<%腳本內容%>
5 jsp編譯指令
<%@ 編譯指令名 屬性名="屬性值"...%>數組
5.1 page指令瀏覽器
<%@page language="Java" extends="package.class" import="package.class|package.*,..." session="true|false" buffer="none|8kb|size kb" autoFlush="true|false" isThreadSafe="true|false" info="text" errorPage="relativeURL" contentType="mimeType;charset=characterSet"|"text/html;charSet=UTF-8" pageEncoding="utf-8" isErrorPage="true|false" %>
5.2 include指令
靜態的include編譯指令<%@include file="relativeURLSpec"%>
注意:靜態包含會將被包含頁面的編譯指令也包含進來,若是兩個頁面的編譯指令衝突,那麼頁面就會出錯。
動態的include編譯指令<jsp:include>tomcat
靜態包含和動態包含的區別服務器
靜態包含:cookie
原理:先合併再翻譯session
使用格式:<%@include file=""%>
參數傳遞:不能夠向目標地址傳遞參數
動態包含:
原理:先翻譯再合併
使用格式:<jsp:include page="/common/header.jsp"></jsp:include>
參數傳遞:能夠經過參數傳遞向目標地址傳遞參數
6 jsp7個動做指令
jsp:forward: 執行頁面轉向,將請求的處理轉發到下一個頁面
語法:
jsp:forward: 執行頁面轉向,將請求的處理轉發到下一個頁面 語法: <jsp:forward page="{relativeURL|<%=expression%>}"/> 或者 <jsp:forward page="{relativeURL|<%=expression%>}"> {<jsp:param .../>} </jsp:forward> forwad指令轉發請求時,客戶端的請求參數不會丟失。客戶端的url也不會改變,而內容變成了指定的轉向頁面。 實際上forwad指令並無從新向新頁面發送請求,只是採用了新頁面來對用戶生成響應,請求依然是一次請求, 因此請求參數、請求屬性都不會丟失 jsp:param: 用於傳遞參數,必須與其餘支持參數的標籤一塊兒使用 jsp:include: 用於動態引入一個jsp頁面 將目標頁的body內容插入到原來頁面,與forward的區別是:forward將目標頁替換掉原來頁面 jsp:plugin 用於下載JavaBean或Applet到客戶端執行 jsp:useBean 建立一個JavaBean的實例 語法:<jsp:useBean id="name" class="classname" scope="page|request|session|application" /> id是JavaBean實例名,class是JavaBean實現類,scope是JavaBean做用範圍 jsp:setProperty 設置JavaBean實例的屬性值 語法:<jsp:setProperty name="BeanName" property="propertyName" value="value"/> name是JavaBean實例名,property是屬性名,value是屬性值 jsp:getProperty 輸出JavaBean實例的屬性值 語法:<jsp:getProperty name="BeanName" property="propertyName"/>
7 jsp的config對象,若是但願jsp頁面能夠獲取web.xml配置文件中的配置信息,則必須經過爲該jsp配置的路徑來訪問該頁面,纔可讓配置參數起做用。
8 response對象的做用
1) 獲取輸出流,進而輸出一些圖片、pdf文檔
2) 重定向,response.sendRedirect()
3) 設置客戶端cookie,
添加cookie的方法
《1》生成cookie對象,Cookie構造器,Cookie(String name,String value)
《2》設置Cookie對象的生命週期setMaxAge()單位爲秒
《3》向客戶端寫cookie,response.addCookie()
讀取cookie方法,使用request對象的getCookies()會返回全部Cookie對象組成的數組。遍歷全部便可找到。cookie對象有getName(),getValue()兩個方法。
注意cookie對象不能夠存放中文,若是想要存放中文須要使用java.net.URLEncoder.encode(),java.net.URLDecoder.Decode()兩個方法。
9 jsp中重定向和轉發(forward)區別
forward
1) 執行forward後,依然是上一次請求
2) forward目標頁能夠訪問原請求的請求參數,由於依然是同一次請求,全部原請求的請求參數、request範圍的屬性所有存在(能夠經過request保存共享數據)
3) 地址欄裏的請求URL不會改變
4) 只能在當前應用內部進行轉發,即轉發不到應用外部資源
response.sendRedirect()
1) 執行redirect後生成第二次請求
2) redirect目標頁不能訪問原始請求的請求參數,由於是第二次請求了,原始請求的請求參數、request範圍屬性也會所有丟失(不能夠經過request對象共享數據)
3) 地址欄改成重定向的目標URL,至關於在瀏覽器地址欄裏輸入新的URL後按回車鍵。
4) 能夠重定向到當前應用外部,例如百度網站上。sendRedirect("www.baidu.com")
若是想要在servlet的響應中設置瀏覽器隔一段時間再重定向, 可使用設置響應頭信息的方式。好比:response.setHeader("refresh", "3;url=index.html");
就會在響應中停3秒後跳轉到index.html頁面上。若是不添加url則會定時刷新當前頁面。
注意:在 java web 應用中若是使用到 url 路徑一概使用絕對路徑比較好。其中開始的"/"表示的含義有所不一樣
若是URL是讓瀏覽器使用的,URL的開頭的「/」表示 webapps 目錄下,若是是讓服務器使用"/" 表示當前 web app 的根目錄。
「.」表示相對路徑,就是 java 命令的運行目錄。在java web項目中,「.」表示服務器的bin目錄,例如tomcat就是在 tomcat/bin 目錄中。
對於 java web 中的資源文件。src目錄下的文件在java web 目錄下的文件會轉移到 WEB-INF/classes 目錄下。
10 session對象
session對象是一個經常使用的對象,表明一次用戶會話。含義是從客戶端瀏覽器鏈接服務器開始,到客戶端瀏覽器與服務器斷開鏈接爲止,這個過程就是一次會話。
session一般用於跟中用戶會話信息,好比判斷是不是登陸用戶、購物車應用
session範圍的屬性能夠在多個頁面跳轉之間共享,一旦關閉瀏覽器,即session結束。
注意session的屬性值須要是可序列化的java對象。
11 jsp中9個內置對象,在servlet中獲取方法?
application:javax.servlet.ServletContext的實例,表明jsp所屬web應用自己,經常使用方法getAttribute(),setAttribute(),getInitParameter();在servlet中使用getServletConfig().getServletContext()方法獲取。
config:javax.servlet.ServletConfig的實例,表明jsp的配置信息,經常使用方法:getInitParameter(),getInitParameterNames();在servlet中使用getServletConfig()獲取。
exception:java.lang.Throwable的實例,表明頁面中的異常和錯誤。只有頁面是錯誤處理頁面,即編譯指令page的isErrorPage爲true時,該對象纔可使用。經常使用方法是getMessage(),printStackTrace().
out:javax.servlet.jsp.JspWriter的實例,表明jsp頁面輸出流,用於輸出內容,造成html頁面。在servlet中使用PrintWriter out = response.getWriter();來獲取
他們之間的區別是jspWriter 是一個帶緩衝的輸出,而PrintWriter對象是不帶緩衝的輸出。能夠經過page指令設置buffer的大小。
page:表明頁面自己,是Servlet實例。在Servlet中就是this。
pageContext:javax.servlet.jsp.PageContext的實例,表明jsp頁面上下文,能夠訪問頁面中的共享數據。經常使用方法有getServletContext(),getServletConfig()等。
做用:1)能夠獲取其餘8個內置對象,應用場景---常常應用於自定義標籤中
2) 是一個域對象,用於共享數據
session:javax.servlet.http.HttpSession實例,表明一次會話。經常使用方法getAttribute(),setAttribute()。在servlet中使用request.getSession();來獲取。
域對象有4個:page,request,session,context
page:
做用範圍:在當前頁中
request:
做用範圍:在同一次請求中
session:
做用範圍:同一次會話中。一次會話,是從打開瀏覽器訪問一個web應用,會話開始,到關閉瀏覽器,會話結束。
context
做用範圍:同一個web應用中。