1 聲明指令
格式:<%!聲明變量或函數 %>
作用:會生成一個成員變量或成員方法,也可以使用訪問修飾符修飾,public,private,protected
2 注釋指令
格式:<%--注釋內容 --%>
作用:會把jsp頁面內容注釋掉,當在頁面中想要注釋掉一些代碼時需要使用這種方法,而不能使用html形式的注釋。因為html格式的注釋不會注釋掉代碼。
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>
靜態包含和動態包含的區別
靜態包含:
原理:先合並再翻譯
使用格式:<%@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應用中。