Jakarta Taglibs Sessionタグライブラリ

 Sessionタグライブラリは、 セッション(HttpSessionオブジェクト)をカスタムタグ化したライブラリです。 セッション変数が定義されているかどうかによる条件分岐も簡単にでき、 記述の簡素化に大変重宝します。
 以下の説明では、タグライブラリを使いたいWebアプリケーションの基点ディレクトリを $APP_HOME と表記します。

セットアップ手順

  1. Jakarta Taglibs のアーカイブから、 session ディレクトリの taglibs-session.jar を $APP_HOME/WEB-INF/lib にコピーします。
  2. jakarta-taglibs/session/jakarta-session.tld を $APP_HOME/WEB-INF にコピーします。
  3. $APP_HOME/WEB-INF/web.xmlを編集して、 次の記述を書き加えます。

    <taglib>
      <taglib-uri>http://jakarta.apache.org/taglibs/session-1.0</taglib-uri>
      <taglib-location>/WEB-INF/taglibs-session.tld</taglib-location>
    </taglib>
    

サンプル

<html><body>
<font color="#700040">Taglibsのセッション管理(1)</font><br>

<a href="session2.jsp">ページ2へ飛ぶ</a><br>

</body>
</html>

 まず、普通のHTML文書です。種も仕掛けもないというか、 次のページで、参照元(Referer)を取得するためにリンクを張ったページを作ってみただけです…

<%@ page language="java" contentType="text/html;charset=Shift_JIS" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="sess" uri="http://jakarta.apache.org/taglibs/session-1.0" %>
<html><body>
<font color="#700040">Taglibsのセッション管理(2)</font><br>
<p>
リンク元
<font color="red"><c:out value="${header.Referer}"/></font>
をセッション変数「mainMenuURL」に記憶します。

<sess:setAttribute name="mainMenuURL"><c:out value="${header.Referer}" /></sess:setAttribute>

<br>
OK? <sess:attribute name="mainMenuURL" />
</p>
<p>
<a href="session3.jsp">そしてページ3へ飛ぶ</a>
</p>
</body></html>

 上のリンクから飛んでくる、「session2.jsp」なるJSP文書であります。 セッションに属性値をセットするには setAttributeタグを使い、 属性値をその本体として囲みます。 改行を含むと改行文字も属性値に含まれるので注意して下さい。
 逆に、セッション変数から属性値を取得して、HTML出力ストリームに出力するには、 attributeタグを使います。

<%@ page language="java" contentType="text/html;charset=Shift_JIS" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="sess" uri="http://jakarta.apache.org/taglibs/session-1.0" %>
<html><body>
<font color="#700040">Taglibsのセッション管理(3)</font><br>
<p>
ページ3です。
</p>

<script language="JavaScript">
<!--
function jumpto(url){
  window.location.href = url;
}
//-->
</script>

<sess:existsAttribute name="mainMenuURL">
<input type="button" value="最初のページに戻る"
 onClick="javascript:jumpto('<sess:attribute name="mainMenuURL" />') >
</sess:existsAttribute>
<sess:existsAttribute name="mainMenuURL" value="false">
  おおっと!セッション変数が定義されていません。<br>
</sess:existsAttribute>

</body></html>

 そして、さらに飛んでくる「session3.jsp」です。 今度は、ある属性値がセッション変数にセットされているかどうかによって条件分岐を行う、 existsAttribute タグを使っています。 普通に「existsAttribute name="属性名"」 とすると、 「この属性名の値がセッション変数に存在するならば、 タグで囲まれた内部を処理してチョ」 という意味になります。 これに、2番目の例のようにvalue="false" が後ろにくっつくと、 「この属性名の値がセッション変数に存在しないならば、 タグで囲まれた内部を処理してチョ」 と逆の意味になります。

Server Side Java Index Top

(first uploaded 2003/03/23 last updated 2003/03/28, URANO398)

Gポイントポイ活 Amazon Yahoo 楽天

無料ホームページ 楽天モバイル[UNLIMITが今なら1円] 海外格安航空券 海外旅行保険が無料!