📚
ITスクールのWEB開発授業~「CustomTag」まとめ~外部ライブラリー「jstl.jar」を利用した条件文、反復分例文
前書き
今回はCustomTagの中でも、基本的には使えず外部からライブラリー(.jar)があってから使えるCustomTag、そのなかでも「jstl.jar」を使った例文をまとめてみる。
「jstl.jar」を利用すると、jspで<% %>ブロックの中にjava言語を使ってできた条件文、反復文、Format[1]をよりHTMLに近い言語、つまりDOMインスタンスの形式で使うことができる。
今回のコードでは、最初のページで数字を1字入力すると、他のページでその数字を使って上記した文法を使ってみる。
今回の例文では、jstlを使うCustomTagのコードだけに注釈をつける。WEBページの間での移動を担当するコードが分からない場合は、前のまとめを参考しよう。
「jstl.jar」を使った、条件文、反復文、例外処理文まとめ
jstl.jarを使うには、jspファイルの上段に「jstl文法を、このキーワードで使います」という意味のコードを追加する。下記のjspコードの注釈を注目しよう。
とりあえず、最初に実行するServletと数字を入力するページのコードから見せて、最後にjstlを使うjspファイルのコードを見せる。
JSTLCController
@WebServlet("/JSTLCController")
public class JSTLCController extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if(!request.getParameterNames().hasMoreElements()) {
request.setAttribute("contentPage", "jstlc/input.jsp");
} else {
request.setAttribute("contentPage", "jstlc/output.jsp");
}
request.getRequestDispatcher("index.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
input.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action = "JSTLCController">
入力数字 : <input name = "n"><p>
<button>output.jspに伝送</button>
</form>
</body>
</html>
output.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!--jstlの「core」というものを「c」という名前で使うために、下のコードを入力。 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>${param.n}</h1>
<!-- if条件文-->
<c:if test="${param.n % 2 ==0}"> <!--input.jspからもらった値を2に割ったあまり値が2であるなら -->
偶数
</c:if>
<!-- if-else文とswitch-caseが混ざってある形-->
<c:choose>
<c:when test="${param.n > 10 }"><!-- input.jspからもらった値が10より大きいなら -->
10より大きいです。
</c:when>
<c:when test="${param.n>5 }"> <!--値が11よりは小さい場合、5よりは大きいなら-->
6~10の数字です。
</c:when>
<c:otherwise><!-- 上記の場合でないなら -->
5以下の数字です。
</c:otherwise>
</c:choose>
<!-- 反復文-->
<!--下記のコードはjava言語での反復文である。これを見ながらjstlの反復文を理解しよう。-->
<%
//for(int i=1; i<5; i+=2){
//System.out.print(i);
//}
%>
<c:forEach var="v" begin="1" end="${param.n}" step="2">
<!--「--var="v"」は「int i =」にあたる。反復文で使う変数を宣言する。-->
<!--「begin="1"」は 「i = 1」にあたる。反復を始まるときに初期化する値を表す。-->
<!--「end="${}"」は 「i <= ${}」にあたる。反復を終える条件になる値を表す。 -->
<!--「step=""」は 「i+=」にあたる。反復が繰り返すとき、変化する値を表す。 -->
<marquee>${v }</marquee>
</c:forEach>
<hr>
<!--Improved for文-->
<!--javaでの例文。これを見ながらjstlコードを見よう。 -->
<%
//for(int i :ar){
//System.out.print(i);
//}
%>
<!--「var=""」は「int i」に当たる。持ってきたインスタンスの要素を表す。-->
<!--「items=""」は 「:""」に当たる。要素を持ってくるインスタンスを表す。 -->
<c:forEach var="i" items="&{ar }" >
<marquee>${i }</marquee>
</c:forEach>
<hr>
<!--jstlで使うtry-catch文 -->
<c:catch var="myExcept"> <!--例外チェックの結果になる変数を宣言-->
<% int result =100/2; %><!--例外をチェックする変数を宣言-->
計算の結果 : <%=result %>
</c:catch>
<br>
<c:catch var="myExcept">
<% int result =100/0; %>
計算の結果 : <%=result %><!--例外が発生するコードを作成-->
</c:catch>
<c:if test="${myExcept!=null}"><!--100/0;コードでnull例外が発生した。-->
エラーが発生しました。: ${myExcept.message }
</c:if>
</body>
</html>
以上で、htmlに近いDOMインスタンスの形で反復文、条件文、例外文を作成してみた。まだJSPで<% %>を使うときと何が違うのかはまだ分からない。.jarファイルも追加することは不便であるが、あとで他のライブラリーを使うともっと様々な機能を使えると思うので、忘れないように頑張ってみる。
-
データを数字、文字列、日付形式に変換することをいう。 ↩︎
Discussion