<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-59  評論-31  文章-0  trackbacks-0

    JSP內(nèi)置對象:我們在使用JSP進行頁面編程時可以直接使用而不需自己創(chuàng)建的一些Web容器已為用戶創(chuàng)建好的JSP內(nèi)置對象。如request,session,response,out等。

    下面就JSP2.0給出的9個內(nèi)置對象:

     

    內(nèi)置對象類型作用域
    requestjavax.servlet.http.HttpServletRequestrequest
    responsejavax.servlet.http.HttpServletResponseresponse
    pageContextjavax.servlet.jsp.PageContextpage
    sessionjavax.servlet.http.HtpSessionsession
    applicationjavax.servlet.jsp.ServletContextapplication
    outjavax.servlet.jsp.JspWriterpage
    configjavax.servlet.ServletConfigpage
    pagejava.lang.Objectpage
    exceptionjava.lang.Throwablepage

     

    我們同樣可以根據(jù)它們的作用進行分類:

    第一類:與Servlet有關(guān):page和config

    第二類:與Input/Output有關(guān):out,request和response

    第三類:與Context有關(guān):application,session和pageContext

    第四類:與Error有關(guān):exception

     

    一、屬性保存范圍

    在JSP中可以通過setAttribute()和getAttribute()這兩個方法來設置和取得屬性。從而實現(xiàn)數(shù)據(jù)的共享。JSP提供了四種屬性保存范圍:response,request,session和application。

    1、page:就是設置的屬性只能在當前頁面有效。通過pageContext的setAttribute()和getAttribute()。

    2、request:指屬性在一次請求范圍內(nèi)有效。如果頁面從給一個頁面跳轉(zhuǎn)到另一個頁面,那么該屬性就失效了。這里所指的跳轉(zhuǎn)是指客戶端跳轉(zhuǎn),比如客戶單擊超鏈接跳轉(zhuǎn)到其他頁面或者通過瀏覽器地址欄瀏覽其他頁面。如果使用服務器端跳轉(zhuǎn)<jsp:forward>,則該屬性仍然生效。同理使用request對象的setAttribute()和getAttribute()。

    3、session:指客戶瀏覽器與服務器一次會話范圍內(nèi),如果服務器斷開連接,那么屬性就失效了。同理通過session對象的setAttribute()和getAttribute()。session范圍的例外比如重新打開一個瀏覽器。

    4、application:指在整個服務器范圍,知道服務器停止以后才會失效。同理通過application對象的setAttribute()和getAttribute()。application范圍就是保存的屬性只要服務器不重啟,就能在任意頁面中獲取,就算重新打開瀏覽器也是可以獲取屬性的。

     

    二、移除屬性:在屬性的作用域還未到就想清除相應的屬性時,必須編程清除。即調(diào)用相應對象的removeAttribute()方法就可以移除指定屬性。

    <%@ page language="java" contentType="text/html;charset=gb2312"%> <html> <head> <title>移除屬性</title> </head> <body> <%-- 在page范圍設置屬性 --%> <% pageContext.setAttribute("name","James"); //設置屬性name,其值為James pageContext.setAttribute("age","12"); //設置屬性age,其值為12 pageContext.setAttribute("sex","男"); //設置屬性sex,其值為男 %> <%-- 移除屬性--%> <% pageContext.removeAttribute("sex"); %> <%-- 取得page范圍屬性--%> <% String strName = (String)pageContext.getAttribute("name"); //取值屬性name的值 String strAge = (String)pageContext.getAttribute("age"); //取值屬性age的值 String strSex = (String)pageContext.getAttribute("sex"); //取值屬性sex的值 out.println("page范圍:name屬性值為" + strName + "<br>"); out.println("page范圍:age屬性值為" + strAge+ "<br>"); out.println("page范圍:sex屬性值為" + strSex); %> </body> </html>

      

     

     結(jié)果頁面輸出:page范圍:name屬性值為James
                            page范圍:age屬性值為 12

                            page范圍:sex屬性值為 null

    三、request對象:request對象不但可以用來設置和取得request范圍變量,還可以用來獲取客戶端請求參數(shù)、請求的來源、表頭、Cookies等。

    1、request獲取客戶端請求參數(shù)方法

     

     方法返回值類型 方法說明 
     getParameter(String name)String  獲取參數(shù)名為name的參數(shù)值
     getParameterNames()Enumeration  獲取所有參數(shù)的名稱,可與上一個方法合用獲取所有參數(shù)的值
     getParameterValues(String name) String[] 獲取參數(shù)名為name的所有參數(shù),比如參數(shù)是多個checkbox
     getParameterMap() Map 獲取所有參數(shù)封裝的Map實例,通過Map實例的String[] get("id")方法返回對應參數(shù)名為id的值數(shù)組

     

    2、request的其他方法

     

    方法返回值類型方法說明
    getHeader(String name)String獲取指定標題名稱為name的標頭
    getHeaderName()Enumeration獲取所有的標頭名稱
    getIntHeader(String name)int獲取標題名稱為name的標頭,內(nèi)容以整數(shù)類型返回
    getDateHeader(String name)long獲取標題名稱為name的標頭,內(nèi)容以日期類型返回
    getCookies()Cookie獲取相關(guān)的Cookie
    getContextPath()String獲取Context的路徑
    getMethod()String獲取客戶端的提交方式
    getProtocol()String獲取使用的HTTP協(xié)議
    getQueryString()String獲取請求的字符串
    getRequestSessionId()String獲取客戶端的Session ID
    getRequestURI()String獲取請求的URI
    getRemoteAddr()String獲取客戶端IP地址

     

    四、response對象:用來向客戶端傳送輸出信息。

     

    方法返回值方法說明
    addCookie(Cookie cookie)void 
    addDateHeader(String name,long date)void 
    addHeader(String name,String value)void 
    addIntHeader(String name,int value)void 
    setDateHeader(String name,long date)void 
    setHeader(String name,String value)void 
    setIntHeader(String name,int value)void 
    sendError(int sc)void傳送狀態(tài)碼
    sendError(int sc,String msg)void傳送狀態(tài)碼和錯誤信息
    setStatus(int sc)void設置狀態(tài)碼
    sendRedirect(String URL)void頁面重定向,用來實現(xiàn)頁面跳轉(zhuǎn)

     

    注:這里的response對象的sendRedirect(String URL)方法設置頁面重定向?qū)⒏淖優(yōu)g覽器地址欄信息,所以也稱客戶端跳轉(zhuǎn)。

    實例1:response對象實現(xiàn)頁面的自動刷新:只需要早JSP頁面中加上

    <%--使用response對象的setIntHeader設置屬性Refresh的值(單位為秒)來實現(xiàn)頁面自動刷新--%> <% response.addIntHeader("Refresh",10); %>

     

    實例2:實現(xiàn)頁面自動跳轉(zhuǎn):可以通過response對象的setHeader()方法添加一個標題為Refresh的標頭,并制定頁面跳轉(zhuǎn)時間及跳轉(zhuǎn)頁面,從而實現(xiàn)頁面自動跳轉(zhuǎn)。 <% response.setHeader("Refresh","10;URL=http://www.baidu.com"); %>

      這里使用setHeader方法添加一個標題為"Refresh",值為"10,URL=http://www.baidu.com"的標頭。

     

     

    五、out對象:用來向頁面輸出信息。

     

    方法返回值類型方法說明
    clear()void清除網(wǎng)頁上輸出內(nèi)容
    clearBuffer()void清除緩沖區(qū)內(nèi)容
    close()void關(guān)閉緩沖區(qū),清除所有內(nèi)容
    getBufferSize()int取得緩沖區(qū)大小
    getRemaining()int取得緩沖區(qū)剩余大小
    isAutoFulsh()boolean獲得緩沖區(qū)是否進行自動清除的信息
    print(String str)void進行頁面輸出
    println(String str)void進行頁面輸出并換行

     

     

     

    六、session對象:用來表示用戶的會話狀況,一般用于保存用戶的各種信息,直到生命周期超時或者被認為釋放掉為止。

     

    方法返回值類型方法說明
    getId()String獲取session的ID
    getCreationTime()long獲取session的生成時間
    getLashAccessedTime()long獲取用戶最后通過session發(fā)送請求時間
    getMaxInactiveInterval()long獲取session生命周期,如果超過這個時間則失效
    invalidate()void清空session內(nèi)容
    isNew()boolean判斷session是否為“新”的
    setMaxInactiveInterval()void設置session生命周期,如果超過這個時間則失效

     

    七、application對象:用來取得和設置Servlet的相關(guān)信息。

     

    方法返回值類型方法說明
    getMajorVersion()int獲取主要的Servlet API版本
    getMinorVersion()int獲取次要的Servlet API版本
    getServerInfo()String獲取服務器版本
    getMimeType()String獲取指定文件的MIME類型
    getContext()ServerContext獲取指定Local的Application context
    getRealPathString獲取指定path的絕對路徑

     

    八、pageContext對象:可以用來設置page范圍的屬性,還可以設置其他范圍屬性,不過需要指定范圍參數(shù),同時還可以獲取其他內(nèi)置對象。

     

    方法返回值方法說明
    getException()Exception獲取當前的exception內(nèi)置對象
    getOut()JspWriter 
    getPage()Object 
    getRequest()ServletRequset 
    getResponse()ServletResponse 
    getServletConfig()ServletConfig 
    getServeltContext()ServletContext 
    getSession()HttpSession 
    getAttribute(String name,int scope)Object獲取指定范圍的name屬性值
    getAttributeNamesInScope(int scope)Enumeration獲取指定范圍所有屬性名稱
    getAttributesScope(String name)int獲取屬性名稱為name的屬性范圍
    removeAttribute(String name)void移除屬性名稱為name的 屬性
    removeAttribute(String name,int scope)void移除指定范圍的屬性名稱為name的 屬性
    setAttribute(String name,Object value,int scope)void設置指定范圍的name屬性
    findAttribute(String name)Object尋找所有范圍的屬性名稱為name的屬性

     

    九、page對象:page對象代表JSP轉(zhuǎn)譯后的Servlet,通過page對象可以非常方便地調(diào)用Servlet類中定義的方法。

    實例1:通過page對象調(diào)用Servlet類中定義的方法 

    <%@ page language="java" contentType="text/html;charset=gb2312"%> <%@ page info="this is the page Object Practice" %> <html> <head> <title>page對象</title> </head> <body> <%--通過page對象調(diào)用Servlet中的getServletInfo()方法 --%> <% String info = ((javax.servlet.jsp.HttpJspPage)page).getServletInfo(); %> <%=info %> </body> </html>

      

    輸出:this is the page Object Practice.

     

    十、config對象:可以用來獲取Servlet的配置信息。

     

    方法返回值類型方法說明
    getInitParameter(name)String獲取Servlet初始化參數(shù)
    getInitParameterNames()Enumeration獲取Servlet所有初始化參數(shù)名稱
    getServletContext()ServletContext獲取當前Application context
    getServletName()String獲取Servlet名稱

     

    十一、exception對象:用來處理錯誤異常,如果要用exception對象,必須指定page中的isErrorPage屬性值為true。

    實例:exception用來處理錯誤異常

    1、包含錯誤的頁面:error.jsp

    <%@ page language="java" contentType="text/html;charset=gb2312" errorPage="ExceptionDemo01.jsp"%> <html> <head> <title>錯誤頁面</title> </head> <body> <% int[] arr = {1,2,3}; out.println(arr[3]); %> </body> </html>

     

     注:error.jsp中arr[3]數(shù)組下表越界.需在page指令中指定errorPage的屬性值為相應的異常處理程序。

    2、異常處理頁面:exceptionDo.jsp

    <%@ page language="java" contentType="text/html;charset=gb2312" isErrorPage="true"%> <%@page import="java.io.PrintStream"%> <html> <head> <title>處理錯誤異常</title> </head> <body> <%=exception%><br> <%=exception.getMessage()%><br> <%=exception.getLocalizedMessage()%><br> <% exception.printStackTrace(new java.io.PrintWriter(out)); %> </body> </html>

     

     注:必須在page指令中指定屬性isErrorPage屬性值為true。也就是說這個頁面可以用于異常處理。

    將會在exceptionDo.jsp中打印出error.jsp中的數(shù)組下標越界異常 信息

    posted on 2012-01-05 16:36 RoyPayne 閱讀(18587) 評論(1)  編輯  收藏 所屬分類: jsp相關(guān)

    評論:
    # re: JSP系列四:JSP9個內(nèi)置對象 2014-02-07 14:40 | struts自媒體
    這篇文章寫的不錯,我重新整理了一下,并且加深了分析,大家可以看:http://www.strutshome.com/index.php/archives/1  回復  更多評論
      
    主站蜘蛛池模板: 四虎AV永久在线精品免费观看| 亚洲中文字幕无码久久2020 | www.亚洲精品.com| 国产91色综合久久免费分享| eeuss免费天堂影院| 亚洲AV无码国产剧情| 亚洲国产精品张柏芝在线观看| 亚洲人精品午夜射精日韩| 国产小视频在线观看免费| 在人线av无码免费高潮喷水| 中文字幕免费观看| 成人久久免费网站| 久久久久女教师免费一区| 美女露100%胸无遮挡免费观看| 亚洲午夜理论片在线观看| 亚洲国产成人久久| 久久精品国产亚洲av水果派 | 色欲国产麻豆一精品一AV一免费| 一区二区视频免费观看| 羞羞漫画登录页面免费| 久久精品国产亚洲av天美18| 亚洲精品无码国产片| 亚洲妇女无套内射精| 亚洲色成人网站WWW永久四虎| 亚洲国产中文在线视频| 亚洲国产美女在线观看 | 最近中文字幕免费2019| 最近2019中文字幕免费直播| 91高清免费国产自产拍2021| 99久久精品国产免费| 久久久精品2019免费观看| 久久永久免费人妻精品| 99久热只有精品视频免费看| 亚洲免费福利视频| 99久久综合国产精品免费| 最近中文字幕无吗高清免费视频| 99re热免费精品视频观看| 女人毛片a级大学毛片免费| 成人黄动漫画免费网站视频| 日本一道综合久久aⅴ免费| 又大又粗又爽a级毛片免费看|