java-servlet-EL運算式和java標籤,
1 Servlet安全執行緒問題
1st. 為什麼說servlet會有安全執行緒問題?
2nd. 如何解決?
2 Jsp基礎
1st. Jsp是什麼?
本質就是一個servlet
2nd. 如何寫jsp?
I) <% %>
II) <%=%>
III) Jsp聲明(a1.jsp)
<&! 變數或者方法 &>
聲明以後可以直接在程式碼片段中使用
I) 什麼是指令?
告訴容器執行的一些配置
II) Page指令
i. Import屬性:導包
ii. Pageencoding屬性:設定編碼集
iii. Contenttype屬性:設定輸出屬性編碼集
iv. Session屬性:true(預設)/false 當值為false時,不能夠直接使用session隱含對象了.(a2.jsp)
v. Errorpage屬性:指定一個異常處理頁面,當異常發生後,容器會調用異常處理頁面.(a3.jsp)
vi. Iserrorpage屬性:true/false(預設) 當值為true的時候,表示這是一個異常處理頁面,可以使用exeception隱含對象.(a4.jsp)
III) Incloud指令
i. File屬性:包含的檔案
IV) Taglib指令
i. 用於匯入jsp標籤.
I) 什麼是隱含對象…可以直接使用的對象
II) 為什麼可以直接使用
III) 有哪些隱含對象
out,request,response,session,application,
exeception,異常處理對象,只能在異常處理介面使用
pagecontext(a6.jsp a7.jsp)
a) 唯一性:jsp執行個體對應一個pagecontext
b) 持久性:只要jsp執行個體存在,pagecontext就在(不會銷毀)
a) 綁定資料 注:綁定在pagecontext上的資料只有對應的jsp可以訪問
b) 擷取其他所有隱含對象.
config(a5.jsp) servletconfig(jsp也可以設定配置資訊並擷取到)
page(從來不使用)jsp執行個體, 注:jsp先轉化成servlet,然後容器將這個servlet執行個體化.
I) <!—注釋內容 -->z注釋內容是java代碼會執行,但是因為外面是html注釋,所以不會將時間顯示到介面上
II) <%-- 注釋內容 --%>注釋內容是java代碼不會執行,在這個注釋中不論是不是java代碼都不會執行.
3 Jsp如何執行的?
a) 將jsp轉換為一個servlet類
htmlàservice方法,使用out輸出
<% %>à照搬
<%= %>àout輸出
<&! 變數或者方法 &> 添加新的屬性或者方法
b) 調用servlet
4 Jsp標籤和El運算式
1st. 什麼是jsp標籤?
jsp標籤類似於html標籤,用於替代jsp中的java代碼.
注:因為直接在jsp中寫java代碼,不方便jsp檔案的維護,比如講jsp檔案交給美工修改就很不方便,所以sun制定了jsp標籤技術規範.
2nd. 什麼是el運算式?
是一套簡單的運算規則,用於給jsp標籤的屬性賦值,也可以脫離標籤直接使用.
3rd. El運算式的基本使用
I) ${user.name} 容器依次從pagecontext,request,session,application中尋找綁定名為user的對象.接下來會調用這個對象的gername方法並輸出該方法的結果.
注:如果找不到對應的對象,會輸出””.
會將null轉換為””輸出.
可以使用pageScope,requestScope,sessionScope,applicationScope指定尋找範圍.
II) ${user[‘name’]}
注:
讀取請求參數值(e3.jsp)
4th. Jsp標籤 jstl (javastandard tag lib)àjava標準標籤庫
幾個核心標籤
I) If標籤
i. <c:iftest=””>
<c:if>
當test屬性值為true,容器執列標籤體的內容.可以使用el運算式給test賦值,
var屬性:指定一個綁定名
scope屬性:指定綁定範圍,page request session application
ii. Choose標籤(c2.jsp)
<c:choose>
<c:when test=””>
<c:otherwise>
<c:otherwise>
</c:choose>
when可以出現1次 otherwise可以出現0到1次
iii. ForEach標籤(c3.jsp)
<c:forEach items=”” var=”” varStatus=””></c:forEach>