日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JspWriter与PrintWriter的关系

發(fā)布時(shí)間:2025/3/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JspWriter与PrintWriter的关系 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

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

JspWriter可以在JSP頁面中直接用out對(duì)象輸出.可以用pageContext.getOut();得到JspWriter對(duì)象.PrintWrietr在JSP頁面中必須用response.getWriter();方法得到其對(duì)象.二者作用域不同.

?

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

PrintWriter中的數(shù)據(jù)會(huì)輸出在JspWriter前面.如:? JspWriter out1 = pageContext.getOut(); //在JSP頁面中可以直接使用out對(duì)象,而不用像這樣用pageContext.getOut();來得到JspWriter對(duì)象.這樣做得到的out1和JSP頁面中封裝的out對(duì)象是同
一個(gè)對(duì)象.(可以用out == out1 來判斷兩個(gè)對(duì)象是否相等.)
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對(duì)象相當(dāng)于插入到了PrintWriter前面的緩沖區(qū)中.out對(duì)象滿足一定條件時(shí),才會(huì)調(diào)用PrintWriter對(duì)象的print()方法,把out緩沖區(qū)中的內(nèi)容輸出到瀏覽器端.如果想讓上面的代碼的按代碼的先后順序輸出可以寫成:

????????????? JspWriter out1 = pageContext.getOut();

????????????? out1.print("222");

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

????????????? PrintWriter pw = response.getWriter();
???????
????????????? pw.print("111");

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

?????????? ?^設(shè)置page指令的buffer屬性關(guān)閉了out對(duì)象的緩存功能
??????????? ^寫入到out對(duì)象中的內(nèi)容充滿了out對(duì)象的緩沖區(qū)
????????????^整個(gè)JSP頁面結(jié)束

??????????? ^JSP中調(diào)用了out.flush()或response.flushbuffer()

?

二、JSP九個(gè)隱含對(duì)象
?????????? 1.JSP九個(gè)隱含對(duì)象(內(nèi)置對(duì)象):直接在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.就可以得到其對(duì)應(yīng)的value;

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

???????????? 對(duì)頁出現(xiàn)的相同的錯(cuò)誤或異常不用在每個(gè)頁面的指令頭都追加errorPage="錯(cuò)誤頁面";指令.
???????????? 而可以在xml中配置全局錯(cuò)誤處理.(必須寫在xml文件的 <web-app></web-app>標(biāo)簽對(duì)中)

??????????? <error-page>
????????????????????? <error-code>404</error-code>
??????????????????????<location>/404Error.jsp</location>
????????????</error-page>

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

?????????? <error-page>
?????????????? <exception-type>java.lang.ArithmeticException</exception-type>
????????????? <location>/ArithmeticException.jsp</location>
?????????? </error-page>

?????????? //用于處理算術(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所對(duì)應(yīng)的value.而不會(huì)把兩個(gè)作用域中

?????????????? 的值都取出來.

?????????????? ${key}
?????????????? ${key.propertityName}
.

??????????? 2、取請(qǐng)求參數(shù)的值非常方便
???????????????? ${param.paramName} //取得URL后的參數(shù)名所對(duì)應(yīng)的參數(shù)值.如<jsp:forward page="2.jsp?name=aaa&age=14"></jsp:forward>

??????????????? 用${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"

轉(zhuǎn)載于:https://www.cnblogs.com/huangpeng1990/p/4364370.html

總結(jié)

以上是生活随笔為你收集整理的JspWriter与PrintWriter的关系的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。