內置對象:
JSP內置對象是Web容器創建一組對象,不用通過手動new就可以使用
JSP九大內置對象:
名稱 類型 作用域
session (用來保存會話信息,可以實現在同一-用戶的不同請求之間共享數) javax.servlet.http.HttpSession Session
application (代表了當前應用程序的上下文,可以在不同的用戶之間共享信息) javax.servlet.ServletContext Application
out (用戶向客戶端,瀏覽器你輸出數據) javax.servlet.jsp.JspWriter page
request (封裝了來自客戶端,瀏覽器的各種信息) javax.servlet.ServletRequest Request
response (封裝了服務器的響應信息) javax.servlet.SrvletResponse page
pageContext (提供了對JSP頁面所有對象以及命名空間的訪問) javax.servlet.jsp.PageContext page
page (指向了當前JSP程序本身) javax.lang.Object page
exception (封裝了JSP程序執行過程中發生的異常和錯誤信息) javax.lang.Throwable
config (封裝了應用程序的配置信息) javax.servlet.ServletConfig page
out對象:
方法名 說明
print或println 輸出數據
newLine 輸出換行字符
flush 輸出緩沖區數據
close 關閉輸出流
clear 清除緩沖區數據,但不輸出到客戶端
clearBuffer 清除緩沖區數據,輸出到客戶端
getBufferSize 獲得緩沖區大小
getRemaining 獲取緩沖區中沒有被占用的空間
isAutoFlush 是否為自動輸出
request對象:
方法名 說明
isUserRole 判斷認證后的用戶是否屬於某一成員組
getAttribute 獲取指定屬性的值,如該屬性不存在返回null
getAttributeNames 獲取所有屬性名的集合
getCookies 獲取所有Cookie對象
getCharacterEncoding 獲取請求的字符編碼方法
getContentLength 返回請求正文的長度,如不確定返回-1
getHeader 獲取指定名字報頭值
getHeaders 獲取指定名字報頭的所有值,一個枚舉
getHeaderNames 獲取所有報頭的名字,一個枚舉
getInputStream 返回請求輸入流,獲取請求中的數據
getMethod 獲取客戶端向服務器端傳送數據的方法
getParameter 獲取指定名字的參數值
getParameterNames 獲取所有參數的名字,一個枚舉
getParameterValues 獲取指定名字參數的所有值
getProtocol 獲取客戶端向服務器端傳送數據的協議名稱
getQueryString 獲取一get方法向服務器傳送的查詢字符串
getRequestURL 獲取發出請求字符串的客戶端地址
getRemoteAddr 獲取客戶端的IP地址
getRemoteHost 獲取客戶端的名字
getSession 獲取和請求相關的會話
getServerName 獲取服務器的名字
getServerPath 獲取客戶端請求問價的路勁
getServerPort 獲取服務器的端口號
removeAttribute 刪除請求中的一個屬性
setAttribute 設置指定名字參數值
response對象:
方法名 說明
addCookie 添加一個Cookie對象
addHeader 添加Http文件指定名字開頭信息
containHeader 判斷指定名字Http文件信息是否存在
encodeURL 使用sessionid封裝URL
flushBuffer 強制把當前緩沖區內容發送到客戶端
getBufferSize 返回緩沖區大小
getOutputStream 返回客戶端的輸出對象
sendError 向客戶端發送錯誤信息
sendRedirect 把響應發送到另一個位置進行處理
setContentType 設置響應的MIME類型
setHeader 設置指定名字的Http文件頭信息
session對象:
方法名 說明
getAttribute 獲取指定名字的屬性
getAttributeNames 獲取session中全部的屬性名字,一個枚舉
getCreationTime 返回色session的創建時間
getId 獲取回話標識符
getLastAccessedTime 返回最后發送請求的時間
getMaxInactiveInterval 返回session對象的生存時間單位千分之一秒
invalidate 銷毀session對象
isNew 每個請求是否會產生新的session對象
removeAttribute 刪除指定名字的屬性
setAttribute 設置指定名字的屬性值
application對象
方法名 說明
getAttribute 獲取應用對象中指定名字的屬性值
getAttributeNames 獲取應用對象中所有屬性的名字,一個枚舉
getInitParameter 返回應用對象中指定名字的初始參數值
getServletInfo 返回Servlet編譯器中當前版本信息
setAttribute 設置應用對象中指定名字的屬性值
config對象:
方法名 說明
getServletContext 返回執行的Servlet的環境對象
getServletName 返回所有執行的Servlet的名字
getInitParamter 返回執行名字的初始參數值
getInitParamterNames 返回該JSP中所有初始參數名,一個枚舉
page對象:
方法名 說明
toString 將當前項目的信息打印出來
getClass 返回當前Object類
hashCode 返回page對象的hashCode值
equals 用於比較對象是否與當前對象相同
pageContext對象:
方法名 說明
forword 重定向到另一頁面或Servlet組件
getAttribute 獲取某范圍中指定名字的屬性值
findAttribute 按范圍搜索指定名字的屬性
removeAttribute 刪除某范圍中指定名字的屬性
setAttribute 設定某范圍中指定名字的屬性值
getException 返回當前異常對象
getRequest 返回當前請求對象
getResponse 返回當前響應對象
getServleConfig 返回當前頁面的ServletConfig對象
getServletContext 返回所有頁面共享的ServletContext對象
getSession 返回當前頁面的會話對象
post和get的區別:
1.從安全角度考慮 post更安全一些 get不安全 ;
2.post方式提交數據可以提交大概幾GB的數據 get方式提交數據最大也就到幾KB;
解決亂碼的方案:
post亂碼解決:request.setCharacterEncoding("UTF-8");
get亂碼解決: hobbys[i]=new String(hobbys[i].getBytes("ISO-8859-1"),"UTF-8");
HTTP狀態碼:
1** 信息,服務器收到請求,需要請求者繼續執行操作
2** 成功,操作被成功接收並處理
3** 重定向,需要進一步的操作以完成請求
4** 客戶端錯誤,請求包含語法錯誤或無法完成請求
5** 服務器錯誤,服務器在處理請求的過程中發生了錯誤
404和500錯誤狀態碼配置頁面:
在當前項目的web.xml當中加入如下配置信息:
<error-page>
<error-code>500</error-code>
<location>/500.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
response:響應
轉發:(是在服務器內部進行,無法訪問到除內部以外的資源):request.getRequestDispatcher("/response/welcome.jsp").forward(request, response);
重定向:(全路徑):response.sendRedirect("/Chap02/response/Login.jsp");
contentType和pageEncoding區別:
contentType定義響應的資源類型,也可以包含JSP頁面和響應內容的字符集;
pageEncoding指定JSP文件的字符集及默認的contentType字符集;
轉發和重定向區別:
1.轉發是在服務器內部進行,重定向是客戶端完成的,需要寫入全路徑,地址xxxxxxx
2.轉發請求1次,其余的操作都是在服務器內部進行的;重定向請求至少2次,其余的請求命令客戶端再次請求一個URL
3.轉發可以攜帶這次請求的數據,重定向不帶數據