JAVA Web基礎2-JSP九大內置對象
阿新 • • 發佈:2018-06-17
上下文 inf AD 應對 版本號 提交 contex har post
4, pageContext ------頁面作用域//context:環境,上下文
內置對象:
5, response ------響應對象
6, out ------輸出流對象,主要的方法:out.println(a);效果等同於<%=a %>
7, page ------當前頁面對象的實例
8, exception ------異常對象
9, config------配置對象,主要分為 ServletConfig/FilterConfig
2、優先級(按照生命周期的長短):
application > session > request > pageContext
3.頁面中的form表單提交方式:
post:提交內容不可見, 沒有長度限制
get:有長度限制, 提交內容在地址欄可見
二.解析九大內置對象
1.request對象
request對象是javax.servlet.httpServletRequest類的實例,該對象代表了客戶端的請求信息,主要用於接受通過http協議傳送到服務器的數據,(包括頭信息、系統信息。請求方式及請求參數等),該對象的生命周期為一次請求。
常用方法:request.getParameter(String name)---獲取請求參數name的值,返回類型為String型;
request.getParameterValues(String name)---獲取請求參數為name的數組,返回類型為String[ ]型,類似於復選框;
request.setAttribute(String,Object)---設置請求作用域中的屬性;
request.getAttribute(String)---獲取請求作用域中的屬性,返回類型為Object型;
request.getContextPath()---獲取上下文路徑;例:/項目名
request.getRealPath("")---獲取傳入這個路徑的物理路徑,即從磁盤開始;
request.getRemoteAddr()---獲取發送此請求的客戶端IP地址;例:0:0:0:0:0:0:0:1
request.getServerName()---獲取請求服務器的主機名;例:localhost
request.getServerPort()---獲取服務器的端口號;例:8081
request.getProtocol()---獲取請求用的協議類型和版本號;例:HTTP/1.1
request.getContentLength()---獲取請求體的長度,以字節為單位;例:-1
request.getContentType()---獲取請求體的MIME類型;
解決request中出現中文亂碼的問題
post方式:通過使用request.setCharacterEncoding("utf-8")來設置(多采用這一種方式)
get方式:通過修改Tomcat服務器中的server.xml配置文件來設置:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="utf-8" />
2.response對象
是httpServletResponse類的實例,指對客戶端的相應,其作用域只在JSP頁面有效
常用方法:response.setCharactorEncording("utf-8")---設置相應頁面的字符編碼;
response.setContentType("text/html;charset:utf-8")---設置MIME類型請求頭;
response.getWriter().append(String)---向頁面輸出一段字符串;
3.out對象
可由pageContext.getOut()獲得,用於輸出信息
out.print 與 response.getWriter()的區別:
response.getWriter():是PrintWriter類(繼承自writer類),可直接輸出結果,優先於out對象,不會拋出異常;
out對象:是JspWriter類(抽象類),需要先將內容存到緩存區裏,當緩存區滿了或達到一定條件後才會調用輸出方法將內容輸出,可采用out.flush()方法刷新緩存區將內容提前輸出,會拋出異常;
4.application全局作用域
是servletContext類的實例,其作用周期從服務器的開始到結束,類似於系統的全局變量;
常用方法:setAttribute(String, Object)---設置某個屬性和屬性值
getAttribute(String)---獲得某個屬性的值
getAttributeNames()---獲取application對象中所有的屬性名
5.session對象
是httpSession類的實例,當用戶第一次訪問某個jsp或者servlet的時候, 服務器就會為當前的訪問創建一個session, 用於跟蹤用戶的操作狀態,並生成一個sessionId, 每次客戶端向服務器發送請求的時候, 都會將這個sessionId帶過去進行驗證。
生命周期:如果用戶不在頁面進行各種活動,如鏈接、增刪改查等,或瀏覽器關閉。session在系統默認30分鐘後會自動失效,此時再次訪問的時候會創建一個新的session,但是原來的session還會存在, 只不過沒有任何請求再帶著那個舊的sessionId讓服務器去驗證了。
常用方法:long getCreationTime()---返回session對象創建的時間
String getId()---返回一個sessionid, 是唯一的
void setAttribute()---設置一個屬性和一個屬性值
Object getAttribute()---獲取某個屬性的屬性值
String[] getValueNames()---以數組的形式獲取session對象中所有可用屬性的屬性名
setMaxInactiveInterval(int)---設置session經過多長時間之後失效(默認30分鐘)
getMaxInactiveInterval()---獲取session的失效時間(單位是秒)
3種銷毀session的方法:
1. 調用session.invalidate()方法;//invalidate:使失效
2, session自己過期了;
設置session過期時間也可以在web.xml中設置
<session-config>
<session-timeout>
10<!-- 單位是分鐘 -->
</session-timeout>
</session-config>
3, 服務器重新啟動;
6.config對象
config對象是在一個Servlet初始化時,JSP引擎向它傳遞信息用的,此信息包括Servlet初始化時所要用到的參數(通過屬性名和屬性值構成)以及服務器的有關信息(通過傳遞一個ServletContext對象)config 對象的主要作用是取得服務器的配置信息。通過 pageConext對象的 getServletConfig() 方法可以獲取一個config對象。當一個Servlet 初始化時,容器把某些信息通過 config對象傳遞給這個 Servlet。在web.xml 文件中為應用程序環境中的Servlet程序和JSP頁面提供初始化參數。
服務器開啟後會先加載WEB-INF(這裏面的文件無法直接訪問,比較安全)裏的web.xml文件
例:這個參數會被保存在application作用域中
<context-param>
<param-name>admin</param-name>
<param-value>1234</param-value>
</context-param>
7.pageContext對象
pageContext 對象的作用是取得任何範圍的參數,通過它可以獲取 JSP頁面的out、request、reponse、session、application 等對象。pageContext對象的創建和初始化都是由容器來完成的,在JSP頁面中可以直接使用 pageContext對象。
8.page對象
page 對象代表JSP本身,只有在JSP頁面內才是合法的。 page隱含對象本質上包含當前 Servlet接口引用的變量,類似於Java編程中的 this 指針。
9.exception對象
exception 對象的作用是顯示異常信息,只有在包含 isErrorPage="true" 的頁面中才可以被使用,在一般的JSP頁面中使用該對象將無法編譯JSP文件。excepation對象和Java的所有對象一樣,都具有系統提供的繼承結構。exception 對象幾乎定義了所有異常情況。在Java程序中,可以使用try/catch關鍵字來處理異常情況; 如果在JSP頁面中出現沒有捕獲到的異常,就會生成 exception 對象,並把 exception 對象傳送到在page指令中設定的錯誤頁面中,然後在錯誤頁面中處理相應的 exception 對象。
在jsp開發中會頻繁使用到一些對象,如ServletContext HttpSession PageContext等.如果每次我們在jsp頁面中需要使用這些對象都要自己親自動手創建就會特別的繁瑣.SUN公司因此在設計jsp時,在jsp頁面加載完畢之後自動幫開發者創建好了這些對象,開發者只需要使用相應的對象調用相應的方法即可.這些系統創建好的對象就叫做內置對象.
一.九大內置對象
1、內置對象/作用域:
1, application ------全局作用域
2, session ------會話作用域
3, request ------請求作用域
4, pageContext ------頁面作用域//context:環境,上下文
內置對象:
5, response ------響應對象
6, out ------輸出流對象,主要的方法:out.println(a);效果等同於<%=a %>
7, page ------當前頁面對象的實例
8, exception ------異常對象
9, config------配置對象,主要分為 ServletConfig/FilterConfig
2、優先級(按照生命周期的長短):
application > session > request > pageContext
3.頁面中的form表單提交方式:
post:提交內容不可見, 沒有長度限制
get:有長度限制, 提交內容在地址欄可見
二.解析九大內置對象
1.request對象
request對象是javax.servlet.httpServletRequest類的實例,該對象代表了客戶端的請求信息,主要用於接受通過http協議傳送到服務器的數據,(包括頭信息、系統信息。請求方式及請求參數等),該對象的生命周期為一次請求。
常用方法:request.getParameter(String name)---獲取請求參數name的值,返回類型為String型;
request.getParameterValues(String name)---獲取請求參數為name的數組,返回類型為String[ ]型,類似於復選框;
request.setAttribute(String,Object)---設置請求作用域中的屬性;
request.getAttribute(String)---獲取請求作用域中的屬性,返回類型為Object型;
request.getContextPath()---獲取上下文路徑;例:/項目名
request.getRealPath("")---獲取傳入這個路徑的物理路徑,即從磁盤開始;
request.getRemoteAddr()---獲取發送此請求的客戶端IP地址;例:0:0:0:0:0:0:0:1
request.getServerName()---獲取請求服務器的主機名;例:localhost
request.getServerPort()---獲取服務器的端口號;例:8081
request.getProtocol()---獲取請求用的協議類型和版本號;例:HTTP/1.1
request.getContentLength()---獲取請求體的長度,以字節為單位;例:-1
request.getContentType()---獲取請求體的MIME類型;
解決request中出現中文亂碼的問題
post方式:通過使用request.setCharacterEncoding("utf-8")來設置(多采用這一種方式)
get方式:通過修改Tomcat服務器中的server.xml配置文件來設置:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="utf-8" />
2.response對象
是httpServletResponse類的實例,指對客戶端的相應,其作用域只在JSP頁面有效
常用方法:response.setCharactorEncording("utf-8")---設置相應頁面的字符編碼;
response.setContentType("text/html;charset:utf-8")---設置MIME類型請求頭;
response.getWriter().append(String)---向頁面輸出一段字符串;
3.out對象
可由pageContext.getOut()獲得,用於輸出信息
out.print 與 response.getWriter()的區別:
response.getWriter():是PrintWriter類(繼承自writer類),可直接輸出結果,優先於out對象,不會拋出異常;
out對象:是JspWriter類(抽象類),需要先將內容存到緩存區裏,當緩存區滿了或達到一定條件後才會調用輸出方法將內容輸出,可采用out.flush()方法刷新緩存區將內容提前輸出,會拋出異常;
4.application全局作用域
是servletContext類的實例,其作用周期從服務器的開始到結束,類似於系統的全局變量;
常用方法:setAttribute(String, Object)---設置某個屬性和屬性值
getAttribute(String)---獲得某個屬性的值
getAttributeNames()---獲取application對象中所有的屬性名
5.session對象
是httpSession類的實例,當用戶第一次訪問某個jsp或者servlet的時候, 服務器就會為當前的訪問創建一個session, 用於跟蹤用戶的操作狀態,並生成一個sessionId, 每次客戶端向服務器發送請求的時候, 都會將這個sessionId帶過去進行驗證。
生命周期:如果用戶不在頁面進行各種活動,如鏈接、增刪改查等,或瀏覽器關閉。session在系統默認30分鐘後會自動失效,此時再次訪問的時候會創建一個新的session,但是原來的session還會存在, 只不過沒有任何請求再帶著那個舊的sessionId讓服務器去驗證了。
常用方法:long getCreationTime()---返回session對象創建的時間
String getId()---返回一個sessionid, 是唯一的
void setAttribute()---設置一個屬性和一個屬性值
Object getAttribute()---獲取某個屬性的屬性值
String[] getValueNames()---以數組的形式獲取session對象中所有可用屬性的屬性名
setMaxInactiveInterval(int)---設置session經過多長時間之後失效(默認30分鐘)
getMaxInactiveInterval()---獲取session的失效時間(單位是秒)
3種銷毀session的方法:
1. 調用session.invalidate()方法;//invalidate:使失效
2, session自己過期了;
設置session過期時間也可以在web.xml中設置
<session-config>
<session-timeout>
10<!-- 單位是分鐘 -->
</session-timeout>
</session-config>
3, 服務器重新啟動;
6.config對象
config對象是在一個Servlet初始化時,JSP引擎向它傳遞信息用的,此信息包括Servlet初始化時所要用到的參數(通過屬性名和屬性值構成)以及服務器的有關信息(通過傳遞一個ServletContext對象)config 對象的主要作用是取得服務器的配置信息。通過 pageConext對象的 getServletConfig() 方法可以獲取一個config對象。當一個Servlet 初始化時,容器把某些信息通過 config對象傳遞給這個 Servlet。在web.xml 文件中為應用程序環境中的Servlet程序和JSP頁面提供初始化參數。
服務器開啟後會先加載WEB-INF(這裏面的文件無法直接訪問,比較安全)裏的web.xml文件
例:這個參數會被保存在application作用域中
<context-param>
<param-name>admin</param-name>
<param-value>1234</param-value>
</context-param>
7.pageContext對象
pageContext 對象的作用是取得任何範圍的參數,通過它可以獲取 JSP頁面的out、request、reponse、session、application 等對象。pageContext對象的創建和初始化都是由容器來完成的,在JSP頁面中可以直接使用 pageContext對象。
8.page對象
page 對象代表JSP本身,只有在JSP頁面內才是合法的。 page隱含對象本質上包含當前 Servlet接口引用的變量,類似於Java編程中的 this 指針。
9.exception對象
exception 對象的作用是顯示異常信息,只有在包含 isErrorPage="true" 的頁面中才可以被使用,在一般的JSP頁面中使用該對象將無法編譯JSP文件。excepation對象和Java的所有對象一樣,都具有系統提供的繼承結構。exception 對象幾乎定義了所有異常情況。在Java程序中,可以使用try/catch關鍵字來處理異常情況; 如果在JSP頁面中出現沒有捕獲到的異常,就會生成 exception 對象,並把 exception 對象傳送到在page指令中設定的錯誤頁面中,然後在錯誤頁面中處理相應的 exception 對象。
JAVA Web基礎2-JSP九大內置對象