JAVA Web基礎2-JSP九大內建對象

來源:互聯網
上載者:User

標籤:exception   編程   pos   優先   引用   客戶   連結   無法   direct   

在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九大內建對象

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.