1.請說明cookie、request、session、application的做用域和聲明週期?java
並說明它們適用與什麼場景?數組
request的生命週期是一次請求。能夠用於JSP表單提交數據。瀏覽器
session會話能夠設置它的超時時間,Tomcat中的默認時間爲30分鐘,session對象的典型應用時用來對用戶的身份進行驗證,進而進行權限設置。服務器
cookie存放的載體在客戶端的瀏覽器中,生命週期默認時根據服務器返回的Set-Cookie頭設置的,共兩大類:cookie
會話cookie:瀏覽器一關閉就清除了。session
有過時時間:超過設定的過時時間纔會消失。app
cookie能使用戶在不輸入用戶名和密碼的狀況下進入曾經瀏覽過的一些站點。jsp
application生命週期在整個應用程序中。開始於應用啓動,應用中止時被銷燬。application對象的最多見的應用時用來統計頁面的訪問人數或者是記錄網站的在線人數。網站
2.在JSP頁面中,可否得到Servlet中request.setAttribute中的值,若是 能得到,能夠經過那種方式,若是不能,簡述爲何?this
Servlet經過轉發方式跳轉到JSP頁面,JSP頁面就能夠得到request中屬性的值。例如:
Servlet代碼以下:
request.setAttribute("name","xdl");
request.getRequestDispatcher("/index.jsp").forward(request,response);
JSP代碼以下:
<%=request.getAttribute("name") %>
3.JSP內置對象及方法
JSP有9個內置對象:request、response、out、session、pageContext、applicaton、config、page、exception。
(1)request表示javax.servlet.http.HttpServletRequest對象,用於獲取客戶端提供的數據,包括頭信息、客戶端地址、請求方式等。主要方法以下:
1)getCookies():返回客戶端全部Cookies對象,結果是—個Cookies數組。
2)getSession():返回與請求相關的session。
3)setAttribute(String key,Object obj):設置屬性的屬性值。
4)getAttribute(String name):返回指定屬性的屬性值。
5)request.getParameter(String name):得到客戶端傳送給服務器端的參數值。
6)getCharacterEncoding():返回字符編碼方式。
6)getContentType():獲得請求體的MIME類型
(2)response表示javax.servlet.http.HttpServletResponse對象,用於對客戶端的請求做出動態的響應,向客戶端發送數據。主要方法有:
1)addCookie(Cookies c):添加—個Cookie對象,用來保存客戶端的用戶信息。
2)sendRedirect(String location):把響應發送到另外一個位置進行處理。
3)sendError(int):向客戶端發送錯誤的信息。
4)getBufferSize():返回緩衝區的大小。
5)getOutputStream():返回客戶端的輸出流對象。
6)setContentType(String ContentType):設置相應的MIME類型。
7)setHeader(String name,String value):設置指定名字的HTTP文件頭的值若是已經存在則將覆蓋已經存在的值。
8)encodeURL(String url):使用sessionld封裝URL。若是沒有必要封裝URL,返回原值。
(3)out對象是javax.servlet.jsp.JspWriter的—個實例,用來向客戶端輸出各類數據。主要方法以下:
1)print()/println():根據參數類型輸出各類類型的數據。
2)flush():輸出緩衝區的數據。
3)close():關閉輸出流。
4)clear():清除緩衝區裏的數據,但不會把數據輸出到客戶端。
5)getBufferSize():得到緩衝區的大小。
6)clearBuffer():清除緩衝區裏的數據,並把數據輸出到客戶端。
7)getRemaining():得到緩衝區中沒有被佔用的空間的大小。
8)isAutoFlush():返回布爾值,若是AutoFlush爲真,返回true:反之,返回false。
(4)pageContext表示—個javax.servlet.jsp.PageContext對象。它是用於方便存取全部範圍的名字空間的對象,而且包裝了通用的servlet相關功能的方法。主要方法以下:
1)getOut():返回當前客戶端響應被使用的JspWriter流(out)。
2)getSession():返回當前頁中的HttpSession對象(session).
3)getPage():返回當前頁的Obj ect對象(page)。
4)getRequest():返回當前頁的ServletRequest對象(request).
5)getResponse():返回當前頁的ServletResponse對象(response)。
6)getException():運回當前頁的Exception對象(exception)。
7)getServletConfig():返回當前頁的ServletConfig對象(config).
8)getServletContext():返回當前頁的ServletContext對象(application).
9)setAttribute(String name,Object attribute):設置屬性及屬性值。
10)getAttribute(String name,int scope):在指定範圍內取屬性的值。
11)removeAttribute(String name):刪除某屬性。
12)release():釋放pageContext所佔用的資源。
13)forward(String relativeUrIPath):使當前頁面重導到另外一頁面。
14)include(String relativeUrIPath):在當前位置包含另外一文件。
(5)session表示—個請求的javax.servlet.http.HttpSession對象。Session用來保存用戶的會話信息和會話狀態。主要方法以下:
1)setAttribute(String name.Object obj):設置指定名字name的屬性值value,並存儲在session對象中。
2)getAttribute(String name):獲取與指定名字name相聯繫的屬性。
3)invaldate():取消SESSION,使SESSION不可用。
4)getld():返回SESSION建立時JSP引擎爲它設的唯-ID號。
5)getCreationTime():返回SESSION建立時間。
6)getLastAccessedTime():返回此SESSION裏客戶端最近一次請求時間。
7)getMaxlnactivelnterval():返回兩次請求間隔多長時間此SESSION被取消。
8)getValueNames():返回—個包含此Session中全部可用屬性的數組。
9)removeValue(String name):刪除Session中指定的屬性。
(6)application表示—個javax,servlet.ServletContext對象。用於用戶間的數據共享,能夠存放全局變量。主要方法以下:
1)getAttribute(String name):返回給定名的屬性值。
2)getAttributeNames():返回全部可用屬性名的枚舉。
3)setAttribute(String name,Object obj):設定屬性的屬性值。
4)removeAttribute(String name):刪除—屬性及其屬性值。
5)getServetInfo():返回JSP(Servlet)引擎名及版本號。
6)getReaIPath(String path):返回—虛擬路徑的真實路徑。
7)getContext(String uripath):返回指定WebApplication的application對象。
8)getResource(String path):返回指定資源(文件及目錄)的URL路徑。
9)getRequestDispatcher(String uripath):返回指定資源的RequestDispatcher。
(7)config表示—個javax.servlet.ServletConfig對象。該對象用於存取servlet實例的初始化參數。主要方法以下:
1)getServletContext():退回含有服務器相關信息的ServletContext對象。
2)getlnitParameter(String name):返回初始化參數的值。
3)getlnitParameterNames():返回Servlet初始化所需全部參數的權舉。
(8)page表示從該頁面產生的—個servlet實例,即this。
(9)exception用於處理JSP頁面發生的錯誤和異常。主要方法有:
1)getMessage():返回描述異常的消息。
2)toString():返回關於異常的簡短描述消息。
3)printStackTrace():顯示異常及其棧軌跡。
4)filllnStackTrace():重寫異常的執行棧軌跡。