Hello JSP Day06
<c:out default="" escapeXml="">
輸出el表達式的值。
default:指定一個缺省值,當找不到對應的值時
使用該值來輸出。
escapeXml: 當值為true,將>,<等用相應的實體來替換。
<c:set var="rs" value="${1+1}" scope="request"/>:
相當於request.setAttribute("rs",2);
<c:remove var="rs" scope="request"/>:
相當於request.removeAttribute("rs");
<c:catch var="msg">
處理異常
相當於pageContext.setAttribute("msg",描述錯誤
信息的字符串)。
<c:url value="">
作用1:當用戶禁止cookie以後,會在地址後添加
sessionId。value屬性指定一個地址。
作用2:在使用絕對路徑時,會自動在路徑前
添加應用名。
<a href="<c:url value='/a.jsp'/>"></a>
<form action="<c:url value='/abc.do'/>">
<c:import url="">
<c:redirect url="" >
重定向,url指定重寫向的地址。如果用戶禁止
cookie,會自動在地址後添加sessionId,如果使用
絕對路徑,會自動添加應用名。
2、自定義標籤
step1 寫一個java類,繼承SimpleTagSupport。
step2 override doTag方法,在該方法里,編寫
處理邏輯。
step3 描述標籤。在.tld文件當中描述。這個文件
實際上是一個xml文件,需要放到WEB-INF下或者
放到META-INF下。可以參考c.tld文件。
<body-content>值可以是:
empty:不能夠有標籤體。
scriptless:可以有標籤體,但是標籤體的內容不能
夠出現java代碼,即不能夠出現以下三種形式:
<% %>
<%= %>
<%! %>
JSP:可以有標籤體,而且標籤體的內容可以出現
java代碼。要求使用複雜標籤技術來開發,簡單
標籤技術只支持empty,scriptless。
練習:
寫一個標籤 <c1:date/>,輸出當前的系統日期
2012-05-07
3、el函數
1)el函數是如何執行的。
${fn:length(str)}
容器先查找str(依次從pageContext,
request,session,application進行查找),找到後,
調用length函數(其實就是一個方法),
進行計算,最後輸出計算的結果。
2)自定義el函數
step1 寫一個java類,要求提供public static
還要求有返回值的方法。
step2 將函數的處理邏輯寫在對應的public static
方法裡面。
step3 寫一個.tld文件,描述函數。
(參考 fn.tld)
練習: ${fn1:toUpperCase(str)}
${fn1:concat(str1,str2)}
4、javaee5.0(servlet2.5)如何使用jstl和el表達式。
a, 在jsp文件當中添加 <%@page isELIgnored="false"%>
作用是:告訴容器不要忽略el表達式。
b,將jstl1.2.jar文件拷貝到WEB-INFlib下。
5、mvc
1)什麼是mvc?
model,view,controller(模型、視圖、控制器)。
是一種軟件架構思想,將一個軟件的組成部分
劃分成三種不同類型的模塊,分別是模型、
視圖、控制器。
其中,模型用來封裝業務邏輯,封裝指的是
模型在實現的時候不用考慮誰來調用(比如,
模型開發完了以後,可以使用一個java程序去調用,
也可以通過瀏覽器向服務器發請求,服務器端通過
servlet來調用模型,都可以)。
業務邏輯,包括兩個方面,一個是為了保證
業務邏輯能夠正常執行的基礎服務(事務、安全、
日誌等等),另外一個是業務邏輯本身,即按照一定
的業務規則,對業務數據進行加工和處理。
視圖實現表示邏輯,將模型處理的結果以合適的
方式展現給用戶,另外,視圖還要提供合適的
操作界面方便用戶輸入相應的請求參數。
控制器用來協調模型和視圖,即視圖將請求發送
給控制器,控制器依據請求的不同調用合適的模型來
處理;另外,模型將處理的結果返回給控制器,控制
器要選擇合適的視圖將處理結果展示給用戶。
2)在web應用當中,如何使用mvc?
模型:使用java類來實現(或者是容器管理的
java類,比如ejb,spring javabean等等,容器會
提供一些基礎服務,這樣模型所需要的一些基礎
服務就不用寫了)。
視圖:使用jsp來實現(還可以使用模板技術,比如
freemarker,或者jsf,flex等等)。
控制器: 使用servlet來實現控制器(還可以使用
filter)。
[媒体不可用]
课堂内容