JAva基礎開発—jstlラベルライブラリ

5397 ワード

DRPプロジェクトでは、JSTLタグライブラリに触れています.Jstlを使用しない前に、JSPスクリプトを使用して宣言または式タスクを実装し、ビジネス関連の操作を行う場合は、ページにjavaコードを大量に埋め込む必要があります.DRPプロジェクトの開発前期に、jspページを使って私に感じたのは、jspページはどんな仕事でもできるし、権利が高すぎるということです.結果として、jspページはプログラムの複雑さを向上させ、コードメンテナンスの複雑さを強化し、コード読書の困難を強化し、プログラマーに対する要求も比較的高く、例えば、ページ設計に精通した開発者がjspを維持するにもかかわらず、経験豊富なプログラマーに依存することが多い.これらの問題を解決するには、jstlについて簡単に説明します.
Jstl(JSP Standard Tag Library)はSUN社が提案したJSPの標準ラベルライブラリである.カスタムタグライブラリセットに共通機能をパッケージします.これらのタグライブラリはHTMLタグとは異なり、主にサーバ側に適用されます.
JSTLには、コアライブラリ、フォーマットライブラリ、XMLライブラリ、SQLライブラリ、関数ライブラリの5種類の標準タグライブラリがあります.またJstlはEL式と併用されており、E L(Expression Language)の目的はJSPをより簡単に書くためである.個人的にはjstlではなくjstlがel式を使用しており、jspへのより便利なサービスを提供していると考えられる.
EL式
構文:$と{}
組み込みオブジェクト:pageScope,requestScope,sessionScope,applicationScope
Emptyオペレータ:オブジェクト、コレクション、または文字列変数が空またはnullであるかどうかを決定します.たとえば、次のようにします.
servletで定義:request.setAttribute("v2", "");
jsp:v1:${empty v1}

「.」と「[]」の2つの演算子がデータにアクセスします.たとえば、次のようになります.
${user.username}    
        ${users[5].username }
演算子:[===/eq!=/ne/gt&&/and|/or!/not//div%/mod]たとえば:
<li>el          </li><br>
	1+1=${1+1 }<br>
	10/5=${10/5 }<br>
	10 div 5=${10 div 5 }<br>
	10 % 3=${10 % 3 }<br>
	10 mod 3 = ${ 10 mod 3 }<br>

Jstlラベルライブラリ:
jstlを使用する前提でjstlを導入する必要がある.jarとstandard.jar 2つのjarパッケージ.
1.コアライブラリ:<%@taglib uri="を導入http://java.sun.com/jsp/jstl/functions"prefix="c"%>   
c:outラベル:hello(ラベルを使用):<c:choose> <c:when test="${v1 gt v2}"> v1大于v2<br> </c:when> <c:otherwise> v1小于v2<br> </c:otherwise> </c:choose> <c:choose> <c:when test="${empty userList}"> 没有符合条件的数据<br> </c:when> <c:otherwise> 存在用户数据<br> </c:otherwise> </c:choose>
ループコントロールラベル
<c:choose>
			<c:when test="${empty users}">
				<tr>
					<td colspan="3">         </td>
				</tr>
			</c:when>
			<c:otherwise>
				<c:forEach items="${users}" var="user">
					<tr>
						<td>${user.username }</td>
						<td>${user.age }</td>
						<td>${user.group.name }</td>
					</tr>
				</c:forEach>
			</c:otherwise>
		</c:choose>

2.関数ライブラリ:<%@taglib uri="を導入http://java.sun.com/jsp/jstl/functions"prefix="fn"%>   
<body>	
	hello.length(  JSTL length  ,       EL    ,  :  +  +    ):${fn:length(hello) }<br>
	<p>
	<c:forEach items="${fn:split(str, \"#\") }" var="v">
		${v }<br>
	</c:forEach>
	<p>
	     :${my:say("  ") }<br>
</body>

3.フォーマットライブラリ:<%@taglib uri="を導入http://java.sun.com/jsp/jstl/functions"prefix="fm"%>   
次は取得時間と日付の3つの形式です.
today(type="date"):<fmt:formatDate value="${today}" type="date"/><br>
	today(type="time"):<fmt:formatDate value="${today}" type="time"/><br>
	today(type="both"):<fmt:formatDate value="${today}" type="both"/><br>

DRPプロジェクトにおけるドロップダウン・ボックスの例の遍歴:
1.Jstl未使用
<tr>
						<td height="26">
							<div align="right">
								<font color="#FF0000">*</font>  : 
							</div>
						</td>
						<td>
						<%
							List<ItemCategory> itemCategoryList = (List)request.getAttribute("itemCategoryList");
						%>							
							<select name="category" class="select1" id="category">
							<%
								for(Iterator<ItemCategory> iter = itemCategoryList.iterator();iter.hasNext();){
									ItemCategory ic = iter.next();
							%>								
									<option value="<%=ic.getId()%>"><%=ic.getName()%></option>
								<%
									}
								%>
							</select>
						</td>
					</tr>

2.jstlの使用
<tr>
						<td height="26">
							<div align="right">
								<font color="#FF0000">*</font>  : 
							</div>
						</td>
						<td>											
							<select name="category" class="select1" id="category">
								<c:forEach items="${itemCategoryList }" var="itemCategory">
									<option value="${itemCategory.id }">${itemCategory.name }</option>
								</c:forEach>
							</select>
						</td>
					</tr>

まとめ:
プログラマーにとって、問題を発見する動力の源ではなく、どのような需要があれば、どのような技術とツールを創造することができます.Jstlはwebアプリケーションのいくつかの汎用機能をカプセル化しており、私たちが使用するときは、その内部がどのように実現されているかを理解する必要はありません.ラベルの各ラベルが表す機能を理解するだけでいいです.jstlの出現はjspページの高すぎる権利を弱め、jspページの階層をより明確にして現れる.