# 1/20 JSP 觀念 ###### tags: `JSP` # 5-60 errorpage與isErrorPage設定 ![](https://i.imgur.com/LZIxfSd.png) # 5-61.62 errorpage屬性 轉型有問題由這支errorpage="error.jsp"處理程式 ![](https://i.imgur.com/kPK0WfM.png) true exception這行印出顯示過程 ![](https://i.imgur.com/ky0HdRz.png) (errorHandler.jsp)(hello.jsp) 用chrome執行 eclipse用ie會有問題 # 5-63 web.xml設定錯誤時處理 web.xml可以用通用性設定 2邊都設通用性 會以jsp程式優先 jsp沒設就以xml優先 上面靜態 下面動態(error-code):![](https://i.imgur.com/LCvfajF.png) # 5-64 <jsp:include>標籤 include包page自行生成 add.jsp也會獨立生成 參考(5-121) ![](https://i.imgur.com/84KIsQZ.png) (paramTest1.jsp)(paramTest1.jsp) In paramTest1:->In paramTest2:->In paramTest1: http://localhost:8080/JSPDemo/paramTest1.jsp(?first=Harry&last=jjj) 看順序 ![](https://i.imgur.com/HdNwoRl.png) 參考(5-117) ![](https://i.imgur.com/GrSpEXV.png) # 5-65<jsp:forward>標籤 用forward出去就不會回來 ![](https://i.imgur.com/wd9367G.png) ![](https://i.imgur.com/iKL0V9y.png) # 5-66 jps pages XML語法化 ![](https://i.imgur.com/sjqgh70.png) # 5-67 類xml格式標籤 ![](https://i.imgur.com/kIhMlq1.png) (counter_xml.jps) # 5-68 範例(xml格式) ![](https://i.imgur.com/5634fer.png) # 5-69 Expression Language(EL) ![](https://i.imgur.com/kSSWlll.png) https://docs.oracle.com/javaee/6/tutorial/doc/gjddd.html ![](https://i.imgur.com/8Jbfqte.png) Immediate Evaluation:立即驗證 Deferred Evaluation:晚一點驗證 # 5-70 EL討論範例 黃色區塊=黃色區塊 一樣 ![](https://i.imgur.com/ZL9JWJa.png) ![](https://i.imgur.com/vDdDtxP.png) ![](https://i.imgur.com/DefH72f.png) (eldemo.jsp) ![](https://i.imgur.com/CQJL90g.png) # 5-71.72 Scripting VS.EL ![](https://i.imgur.com/M31n6RQ.png) 前面強迫轉型 context環境 上面動詞 下面名詞 字首大寫 ![](https://i.imgur.com/c7ue1C1.png) # 5-73~76 EL 對空值得處裡比較不會死當 ![](https://i.imgur.com/2SWxUMV.png) ![](https://i.imgur.com/RI5roCx.png) ![](https://i.imgur.com/PXUTOb2.png) 要強迫轉型request 才能叫出.getMethod方法 context.request算是一個子類 get動詞(動作) ![](https://i.imgur.com/Bd3Hvjx.png) 全部忽略:![](https://i.imgur.com/WMBVgFj.png) 參考5-40 ![](https://i.imgur.com/SSJk8Q4.png) ![](https://i.imgur.com/HfcmISo.png) # 5-77~83 使用EL取得屬性 我去抓一個javabean 物件:user get:proprety 取得某人的名子 登入成功 上面javabean 下面el寫法 屬性名稱.運算 ![](https://i.imgur.com/7G1NJMF.png) 陣列orlist用[] ![](https://i.imgur.com/qFiwhly.png) 泛型 變數=建構子 泛型 ![](https://i.imgur.com/gf7OuyI.png) ![](https://i.imgur.com/ZryHPCg.png) names多個名稱 ![](https://i.imgur.com/zXKAv4O.png) 索引值變數名稱 param.index getparamname 運算式 ![](https://i.imgur.com/UXIcn12.png) list name = 子類array ![](https://i.imgur.com/G2f0m4Q.png) # 5-84.85 EL的隱含物件 Implicit Objects https://www.javatpoint.com/EL-expression-in-jsp https://www.tutorialspoint.com/jsp/jsp_expression_language.htm 跟屬性有關![](https://i.imgur.com/8xpZmhI.png) # 5-86.87 EL運算子 ![](https://i.imgur.com/qV2lNHF.png) ![](https://i.imgur.com/L5AOF5g.png) # 5-89.90 Implicit Object Available in JSP Pages Implicit(隱性)<=>Explicit(顯性) exception特別的 ![](https://i.imgur.com/hMWm0dw.png) ![](https://i.imgur.com/80Crx4M.png) ![](https://i.imgur.com/uGhB71h.png) 白皮書 80 103頁 ![](https://i.imgur.com/jaYdgPU.png) ![](https://i.imgur.com/siBggbd.png) 原因:![](https://i.imgur.com/jIo4Fgf.png) # 5-91~94 Implicit Objects說明 ![](https://i.imgur.com/sCasM3k.png) 網頁看的到page scope 所在的執行環境 ![](https://i.imgur.com/g4jG5wT.png) application=context ![](https://i.imgur.com/X4d3FGC.png) ![](https://i.imgur.com/pYZeck1.png) page=this 就是自己本身 ![](https://i.imgur.com/UN8kQvJ.png) ![](https://i.imgur.com/bJ2Pq1t.png) # 5-95 Implicit Objects Available in Error Pages 選告變數 物件名稱少用這樣開頭 ![](https://i.imgur.com/TzAXOza.png) (implicit.jsp)(xml)(initTest.jsp) ![](https://i.imgur.com/uZdTNSC.png) # 5-96.97.(98) 程式碼練習 ![](https://i.imgur.com/jU89ibU.png) ![](https://i.imgur.com/SZ4ot8P.png) ![](https://i.imgur.com/9vtj8Fq.png) # 5-99 Jsp的scope物件 Application servletContext Session Session Request Request page pagecontext setAttribute() getAttribute() removeattribute() ![](https://i.imgur.com/Z27Rc5t.png) # 5-100 Scope物件 ![](https://i.imgur.com/Z8VA8ge.png) https://javaee.github.io/javaee-spec/javadocs/ ![](https://i.imgur.com/rsGffLp.png) 用靜態include 不能用同樣的宣告 # 5-102 JSP page就是servlet parse翻成java檔 ![](https://i.imgur.com/ZfQ0FtZ.png) # 5-103 JSP的life-cycle phases 七個階段 ![](https://i.imgur.com/cKj23Uc.png) # 5-104 JSP的Instance產生過程 ![](https://i.imgur.com/UJ2XSXI.png) # 5-105 JSP life-cycle中所呼叫的method 服務完實作 ![](https://i.imgur.com/GMo5dDc.png) https://javaee.github.io/javaee-spec/javadocs/ ![](https://i.imgur.com/uMYvj2Z.png) ![](https://i.imgur.com/SfebXZz.png) # 5-106.7.8 jsp to servlet ![](https://i.imgur.com/76kuWO8.png) ![](https://i.imgur.com/QV3CGzv.png) 樣板文字 out.write (visitorcounter.jsp) ![](https://i.imgur.com/4hQoEqQ.png) # 5-109 Translation units a includ b 不能重複宣告 ![](https://i.imgur.com/ikyQO9D.png) (參考5-114) # 5-110 JSP life-cycle範例 (persistent_visitorcounter.jsp) ![](https://i.imgur.com/E1oQLZA.png) # 5-111 使用request-time attribute expressions 把資訊帶進去 下面的程式要在執行階段才能執行 ![](https://i.imgur.com/30IiGup.png) # 5-113 Static inclusion 第一行 jsp寫法 第二行 xml ![](https://i.imgur.com/v6v19Gu.png) # 5-114 Static inclusion例 ![](https://i.imgur.com/aZbMPs9.png) # 5-115 Static inclusion的注意事項 上一張a跟b可擺pageContext ![](https://i.imgur.com/B9wPr9G.png) # 5-116 Dynamic inclusion page活的 flush='true'立即送出 ![](https://i.imgur.com/VmboksQ.png) # 5-117 Dynamic inclusion範例 各自有serv程式 ![](https://i.imgur.com/8EjqZpm.png) 白皮書 114(參考) ![](https://i.imgur.com/m60NhDF.png)![](https://i.imgur.com/gmavF7I.png) # 5-118.119 JSP include action說明 java語法 servlet語法 jsp include進來 include(StringrelativeUrlPath, boolean flush) include If the relativeUrlPath begins with a "/" then the URL specified is calculated relative to the DOCROOT https://javaee.github.io/javaee-spec/javadocs/ ![](https://i.imgur.com/Fu3ZTtp.png) 白皮書 ![](https://i.imgur.com/aFlk8IO.png) 靜態 ``` • A.jsp says <%@ include file=”dir/B.jsp”%> and dir/B.jsp says <%@ include file=”C.jsp”%>. In this case the relative specification C.jsp resolves to dir/C.jsp. • A.jsp says <jsp:include page=”dir/B.jsp”/> and dir/B.jsp says <jsp:include page=”C.jsp” />. In this case the relative specification C.jsp resolves to dir/ C.jsp. • A.jsp says <jsp:include page=”dir/B.jsp”/> and dir/B.jsp says <%@ include file=”C.jsp” %>. In this case the relative specification C.jsp resolves to dir/ C.jsp. • A.jsp says <%@ include file=”dir/B.jsp”%> and dir/B.jsp says <jsp:include page=”C.jsp”/>. In this case the relative specification C.jsp resolves to C.jsp. ``` 1.a->b<c=c 2.a>b>c 3.a->b=c(在b裡面) 4.a靜態->b b動態->c c=a ![](https://i.imgur.com/FkuUPsn.png) # 5-120 JSP forward action說明 forward pagecontext特異功能送出去 ![](https://i.imgur.com/7hGBQFD.png) # 5-121 傳遞參數給dynamically included compon 送參數 ![](https://i.imgur.com/wx02uwE.png) (參考5-64頁) # 5-122 與dynamically included components共享物件 (參考5-117圖) ![](https://i.imgur.com/TmBfSm2.png) # 5-124 甚麼是JavaBeans? 封裝:合法的方法,讓使用者來呼叫,做控管,跟邏輯判斷 ![](https://i.imgur.com/xApewlv.png) # 5-125 JavaBeans的設計規則 沒參數的建構子 建構子的宣告 要寫"沒有參數的建構子" 類別或成員都沒有公開的變數 JavaBean需要package player; ![](https://i.imgur.com/3HHIzuh.png)![](https://i.imgur.com/Z5z9wfZ.png) 1.![](https://i.imgur.com/PVUPwPJ.png)2.![](https://i.imgur.com/NeNr9Gq.png)3.只是一個宣告 實作implements![](https://i.imgur.com/ZWH0b6C.png) javaBeans可以把東西都包起來封裝 ![](https://i.imgur.com/CdXaAUC.png) # 5-126 Jsp tage設定JavaBeans ![](https://i.imgur.com/CWTDqbx.png)白皮書![](https://i.imgur.com/EAMN0g8.png) # 5-127.128 <jsp:useBean>的宣告項目(attribute) ![](https://i.imgur.com/iw6G2HA.png)![](https://i.imgur.com/dSCJ1z3.png) type跟class不能亂寫 type父類 ![](https://i.imgur.com/VRgM9Hu.png) # 5-129.130 <jsp:get(set)property>-讀取Bean的值 宣告 取得 property:轉化動作(參考131) siraple property index property ![](https://i.imgur.com/IWKKQWq.png)![](https://i.imgur.com/lgX36w6.png) # 5-131 範例討論 java.io.Serializable ![](https://i.imgur.com/Yh97971.png) # 5-132 ![](https://i.imgur.com/fca8lxa.png)程式碼去寫![](https://i.imgur.com/rlQGD9Q.png)javabean去寫![](https://i.imgur.com/IAP3CP2.png) # 5-133~135 範例討論 type沒寫 宣告變數名稱空的 ![](https://i.imgur.com/VvRm35k.png)![](https://i.imgur.com/V5pgJgJ.png) https://javaee.github.io/javaee-spec/javadocs/ ![](https://i.imgur.com/IpleaMs.png) # 5-136 <jsp:useBean> user.setPassword("123456") .方法 javabean沒有定義setPassword的方法javabean會當掉 大小寫要注意 ![](https://i.imgur.com/7qFWCqi.png) # 5-137 <jsp:setProperty> ![](https://i.imgur.com/WkfjMfS.png)![](https://i.imgur.com/AvvoTsf.png) # 5-138.139 <jsp:setProperty> 138跟139相對的 138 找步道user物件,則會建立一個新的物件並設定相關屬性內容,相反則會直接使用![](https://i.imgur.com/GbJG4I1.png)139 2條獨立的![](https://i.imgur.com/yzlmlql.png) # 5-140 <jsp:getProperty> 命名法則很重要 ![](https://i.imgur.com/kqTEBxH.png) # 5-141 Bean Class的安裝 第三方開發 通常擺lib底下 ![](https://i.imgur.com/vqjVteJ.png) (參考5-132)![](https://i.imgur.com/1hpFK4w.png) # 5-142~145 Bean範例 (StringBean.jsp)(StringBean.java) ![](https://i.imgur.com/I6Lgx0V.png) 3個不同的寫法![](https://i.imgur.com/UZB3H43.png)(SaleEntry.jsp)(SaleEntry1.java) import ![](https://i.imgur.com/DLbM6xo.png) ![](https://i.imgur.com/LSII7qy.png) http://localhost:8080/JSPDemo/SaleEntry1.jsp(?itemID=a1234&numltems=10&discountCode=0.8) (SaleEntry2.java) ![](https://i.imgur.com/wczDBR2.png)