- 首頁|
- 網(wǎng)校|
- 焚題庫|
- APP |
-
微信公眾號(hào)
一.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文件的
//用于處理404錯(cuò)誤的全局配置.所有404錯(cuò)誤都會(huì)轉(zhuǎn)到404Error.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"
初級(jí)會(huì)計(jì)職稱中級(jí)會(huì)計(jì)職稱經(jīng)濟(jì)師注冊會(huì)計(jì)師證券從業(yè)銀行從業(yè)會(huì)計(jì)實(shí)操統(tǒng)計(jì)師審計(jì)師高級(jí)會(huì)計(jì)師基金從業(yè)資格稅務(wù)師資產(chǎn)評(píng)估師國際內(nèi)審師ACCA/CAT價(jià)格鑒證師統(tǒng)計(jì)資格從業(yè)
一級(jí)建造師二級(jí)建造師消防工程師造價(jià)工程師土建職稱房地產(chǎn)經(jīng)紀(jì)人公路檢測工程師建筑八大員注冊建筑師二級(jí)造價(jià)師監(jiān)理工程師咨詢工程師房地產(chǎn)估價(jià)師 城鄉(xiāng)規(guī)劃師結(jié)構(gòu)工程師巖土工程師安全工程師設(shè)備監(jiān)理師環(huán)境影響評(píng)價(jià)土地登記代理公路造價(jià)師公路監(jiān)理師化工工程師暖通工程師給排水工程師計(jì)量工程師
人力資源考試教師資格考試出版專業(yè)資格健康管理師導(dǎo)游考試社會(huì)工作者司法考試職稱計(jì)算機(jī)營養(yǎng)師心理咨詢師育嬰師事業(yè)單位教師招聘公務(wù)員公選考試招警考試選調(diào)生村官
執(zhí)業(yè)藥師執(zhí)業(yè)醫(yī)師衛(wèi)生資格考試衛(wèi)生高級(jí)職稱護(hù)士資格證初級(jí)護(hù)師主管護(hù)師住院醫(yī)師臨床執(zhí)業(yè)醫(yī)師臨床助理醫(yī)師中醫(yī)執(zhí)業(yè)醫(yī)師中醫(yī)助理醫(yī)師中西醫(yī)醫(yī)師中西醫(yī)助理口腔執(zhí)業(yè)醫(yī)師口腔助理醫(yī)師公共衛(wèi)生醫(yī)師公衛(wèi)助理醫(yī)師實(shí)踐技能內(nèi)科主治醫(yī)師外科主治醫(yī)師中醫(yī)內(nèi)科主治兒科主治醫(yī)師婦產(chǎn)科醫(yī)師西藥士/師中藥士/師臨床檢驗(yàn)技師臨床醫(yī)學(xué)理論中醫(yī)理論