亚洲欧洲国产欧美一区精品,激情五月亚洲色五月,最新精品国偷自产在线婷婷,欧美婷婷丁香五月天社区

      java

      當(dāng)前位置:中華考試網(wǎng) >> java >> javaWeb >> 文章內(nèi)容

      JspWriter與PrintWriter的關(guān)系

      來源:中華考試網(wǎng)  [2020年10月28日]  【

        一.JspWriter與PrintWriter的關(guān)系:

        1.都是繼承自java.io.Writer類.

        JspWriter可以在JSP頁面中直接用out對象輸出.可以用pageContext.getOut();得到JspWriter對象.

        PrintWrietr在JSP頁面中必須用response.getWriter();方法得到其對象.二者作用域不同.

        2.在JSP頁面中同時(shí)調(diào)用兩種方法向頁面輸出數(shù)據(jù),PrintWriter中的數(shù)據(jù)會(huì)輸出在JspWriter前面.

        如:

        JspWriter out1 = pageContext.getOut(); //在JSP頁面中可以直接使用out對象,而不用像這

        樣用pageContext.getOut();來得到JspWriter對象.這樣做得到的out1和JSP頁面中封裝的out對象是同

        一個(gè)對象.(可以用out == out1 來判斷兩個(gè)對象是否相等.)

        out1.print("222");

        PrintWriter pw = response.getWriter();

        pw.print("111");

        *這樣做的結(jié)果,在瀏覽器端還是先顯示 "111",然后再顯示"222".說明不管JspWriter與PrintWriter在程序中的順序怎么樣,始終先會(huì)輸

        出PringWriter中的數(shù)據(jù)然后再輸出JspWriter中的數(shù)據(jù).這是因?yàn)閛ut對象相當(dāng)于插入到了PrintWriter前面的緩沖區(qū)中.out對象滿足一定條件時(shí)

        ,才會(huì)調(diào)用PrintWriter對象的print()方法,把out緩沖區(qū)中的內(nèi)容輸出到瀏覽器端.如果想讓上面的代碼的按代碼的先后順序輸出可以寫成:

        spWriter out1 = pageContext.getOut();

        out1.print("222");

        out1.flush(); //刷新緩沖區(qū)

        PrintWriter pw = response.getWriter();

        pw.print("111");

        *out對象調(diào)用PrintWriter對象的print( )方法輸出緩沖區(qū)中的內(nèi)容的條件:

        ^設(shè)置page指令的buffer屬性關(guān)閉了out對象的緩存功能

        ^寫入到out對象中的內(nèi)容充滿了out對象的緩沖區(qū)

        ^整個(gè)JSP頁面結(jié)束

        二、

        1.JSP九個(gè)隱含對象(內(nèi)置對象):直接在jsp文件里使用

        HttpServletRequest request

        HttpServletResponse response

        PageContext pageContext (頁面上下文)

        HttpSession session

        ServletContext application

        ServletConfig config

        JspWriter out

        Object page

        Throwable exception

        2、四個(gè)作用域

        application作用域 ServletContext

        session作用域 HttpSession

        request作用域 HttpServletRequest

        page作用域 PageContext //生命周期是JSP頁面編譯成JAVA文件時(shí)的service方法.方法結(jié)束,生命周期也結(jié)束

        3.pageContext的findAttribute方法會(huì)依次從四個(gè)作用域去找。是按什么先后順序找的?

        會(huì)按作用域由小到大的順序來查找.即(page-->request-->session-->application).用pageContext.findAttribute("key");

        的好處就是不用指定作用域的類型.只要這四個(gè)作用域中有指定的key.就可以得到其對應(yīng)的value;

        三.全局錯(cuò)誤處理

        對頁出現(xiàn)的相同的錯(cuò)誤或異常不用在每個(gè)頁面的指令頭都追加errorPage="錯(cuò)誤頁面";指令.

        而可以在xml中配置全局錯(cuò)誤處理.(必須寫在xml文件的 標(biāo)簽對中)

        

        404

        /404Error.jsp

        

        //用于處理404錯(cuò)誤的全局配置.所有404錯(cuò)誤都會(huì)轉(zhuǎn)到404Error.jsp頁面中.

        

        java.lang.ArithmeticException

        /ArithmeticException.jsp

        

        //用于處理算術(shù)異常的全局配置.所有算術(shù)異常都會(huì)轉(zhuǎn)到rithmeticException.jsp頁面中.

        四、EL表達(dá)式的簡單介紹:

        1、從四個(gè)作用域中取值,可屏蔽null值,如果得到的value為空,則輸出"",而不是null.而且不用指定作用域,從四個(gè)作用域的取值順

        序也是從小到大的順序.即(page-->request-->session-->application).如果有兩個(gè)作用域中有相同的"key".那么EL表達(dá)式取到的value是作用

        域較小的key所對應(yīng)的value.而不會(huì)把兩個(gè)作用域中的值都取出來.

        ${key}

        ${key.propertityName}

        .

        2、取請求參數(shù)的值非常方便

        ${param.paramName} //取得URL后的參數(shù)名所對應(yīng)的參數(shù)值.如

        用${param.name}就可以得到"aaa",${param.age}就可以得到"14"

        用EL表達(dá)式可以省略大量的代碼.不用再調(diào)用作用域的getAttribute()方法,判斷value是否為null的傳統(tǒng)方法.

        3.可以取出JavaBean中的屬性.

        如:

        class Person

        {

        private String name;

        public void setName(String name)

        {

        this.name = name;

        }

        public String getName()

        {

        return this.name;

        }

        }

        可以在JSP頁面寫入以下代碼,方便取出Bean中的屬性.

        Person person = new Person();

        person.setName("aa");

        request.setAttribute("per",person);

        ${per.name} //運(yùn)行結(jié)果為"aa"

       

      責(zé)編:fushihao
      • 會(huì)計(jì)考試
      • 建筑工程
      • 職業(yè)資格
      • 醫(yī)藥考試
      • 外語考試
      • 學(xué)歷考試