<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2057191220162006657</id><updated>2011-11-28T09:46:07.570+09:00</updated><category term='Introduction'/><category term='基本メモ'/><category term='データソース'/><title type='text'>OCWCD (OJC-WC) とりたいな～！</title><subtitle type='html'>Java の資格 OJC-WC(SJC-WC)</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>59</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-8506621991934469906</id><published>2007-11-19T09:41:00.003+09:00</published><updated>2008-03-06T14:17:20.450+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='データソース'/><title type='text'>ResultSet の close</title><content type='html'>データソースによる接続で Connection / Statement /ResultSet を使用している場合、それぞれの close 処理を filnally ブロックで全て行うことが &lt;a href="http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html"&gt;JNDI Datasource HOW-TO&lt;/a&gt; では例として示されています。&lt;br /&gt;&lt;br /&gt;Javadoc によると ResultSet は Statement を閉じたり再実行したときなどに自動的に close されると書いてあります。人によっては ResultSet の close 処理を記述しない人もいるようです。私も冗長に思うので省略しています。ただし Statement は使い終わったらすぐに閉じるようにしています。&lt;br /&gt;&lt;br /&gt;____&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;下記の例では rs の close を記述していません。&lt;br /&gt;Connection con = null;&lt;br /&gt;PreparedStatement pst = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Context ctx = new InitialContext();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DataSource ds =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(DataSource)ctx.lookup("java:comp/env/jdbc/sample");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;con = ds.getConnection();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pst = con.prepareStatement("select * from mytable where name=?");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pst.setString(1, req.getParemeter("name"));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ResultSet rs = pst.executeQuery();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (rs.next()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pst = con.prepareStatement("....");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pst.setString(...);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pst.executeUpdate();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} catch (NamingException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} catch (SQLException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} finally {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (pst != null) {pst.close();}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (con != null) {con.close();}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} catch (SQLException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;______&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-8506621991934469906?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/8506621991934469906/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=8506621991934469906' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/8506621991934469906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/8506621991934469906'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/11/resultset-close.html' title='ResultSet の close'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-6226932608987947263</id><published>2007-11-18T11:50:00.000+09:00</published><updated>2007-11-18T18:54:17.505+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='データソース'/><title type='text'>PreparedStatement</title><content type='html'>　データベースへ接続して書き込みなどを行う際、SQL 命令文 「’」「”」などはエスケープ処理をする必要があります。&lt;br /&gt;　例えば下記のようなエスケープメソッドを定義して利用することができます。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;String&amp;nbsp;escape(String&amp;nbsp;s)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;StringBuilder&amp;nbsp;str&amp;nbsp;=&amp;nbsp;new&amp;nbsp;StringBuilder();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(int&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;s.length();&amp;nbsp;i++)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;switch&amp;nbsp;(s.charAt(i))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;'\''&amp;nbsp;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;str.append("\\\'");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;'"'&amp;nbsp;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;str.append("\\\"");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;'\\'&amp;nbsp;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;str.append("\\\\");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;default&amp;nbsp;:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;str.append(s.charAt(i));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;str.toString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;______&lt;br /&gt;&lt;br /&gt;　しかし、PreparedStatement の setString メソッドを使うとセットする文字列を自動でエスケープしてくれるのでエスケープメソッドは必要なくなります。&lt;br /&gt;　PreparedStatement には setString だけでなく setInt, setLong などのメソッドもあります。&lt;br /&gt;&lt;br /&gt;PreparedStatement pst = con.prepareStatement("select*from mytable where title=?");&lt;br /&gt;pst.setString(1, req.getParameter("title"));&lt;br /&gt;&lt;br /&gt;　などのように利用するだけで req.getParameter("title") に SQL 命令文に影響を与える文字があってもエスケープしてくれます。&lt;br /&gt;　&lt;br /&gt;　また、ステートメントを用意した後は setString メソッドなどを使ってパラメータを変えるだけで次のSQL 文を作成できるので高速に動作します。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-6226932608987947263?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/6226932608987947263/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=6226932608987947263' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/6226932608987947263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/6226932608987947263'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/11/preparedstatement.html' title='PreparedStatement'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-7927612353477539269</id><published>2007-11-18T11:35:00.003+09:00</published><updated>2008-11-15T15:45:35.784+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='データソース'/><title type='text'>データソース</title><content type='html'>　この時点では SJC-WC の出題範囲ではないですが、JSP/サーブレットアプリケーションでデータベースへ接続する際は JNDI データソースを利用することが推奨されます。&lt;br /&gt;　データソースはコネクションプーリングという仕組みで、あらかじめ確保してあるデータベースへのコネクションプーリングからコネクションを利用します。&lt;br /&gt;　設定方法は&lt;br /&gt;&lt;ul&gt;&lt;li&gt;コンテキストファイルを編集する&lt;/li&gt;&lt;li&gt;web.xml に resource-ref 要素を追加する&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;というようになります。これによりアプリケーション単位でデータベースへの接続を設定することができます。 Tomcat の server.xml に設定するとすべてのアプリケーションでデータソースを利用できます。&lt;/p&gt;&lt;p&gt;　詳しい設定方法は &lt;a href="http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html"&gt;JNDI Datasource HOW-TO&lt;/a&gt; に書かれています。&lt;/p&gt;&lt;p&gt;　設定がうまくいかない場合は Tomcat の Administration Tool を使うこともできます。このツールではわかりやすいユーザーインターフェースで設定できます。&lt;br /&gt;　&lt;a href="http://tomcat.apache.org/download-55.cgi"&gt;Administration Tool&lt;/a&gt; のインストールは Tomcat 5.5 のバージョンまでは提供されているようです。設定方法は zip を解答してファイルを配置するだけです。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-7927612353477539269?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/7927612353477539269/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=7927612353477539269' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/7927612353477539269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/7927612353477539269'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/11/blog-post_18.html' title='データソース'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-4023611100458860641</id><published>2007-11-09T21:47:00.002+09:00</published><updated>2011-01-11T15:52:01.608+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Introduction'/><title type='text'>試験の予約手順</title><content type='html'>&lt;ol&gt;&lt;li&gt;バウチャーチケットの購入&lt;br /&gt;&lt;a href="http://suned.sun.co.jp/JPN/certification/compdetails.html"&gt;Sun のチケット購入ページ&lt;/a&gt;からバウチャーチケットを購入します。&lt;br /&gt;バウチャーチケットの購入ルートは他にもあるようなので検索してみてください。&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.prometric-jp.com/"&gt;PROMETRIC のページ&lt;/a&gt;から申し込みます。&lt;/li&gt;&lt;/ol&gt;現時点で Sun の資格はバウチャーチケットでしか申し込めないのでバウチャーチケットを手に入れます。PROMETRIC で ID を取得して試験の日時、会場を指定します。&lt;br /&gt;&lt;br /&gt;EDIT(2010年): 2010年にOracleがSunを買収しました。それに伴い、今後はSJC-WCよりもOJC-WCという名前が浸透していくと考えられます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-4023611100458860641?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/4023611100458860641/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=4023611100458860641' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/4023611100458860641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/4023611100458860641'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/11/blog-post.html' title='試験の予約手順'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-2882958463074791020</id><published>2007-10-21T17:47:00.001+09:00</published><updated>2007-11-18T20:14:51.427+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>eclipse</title><content type='html'>&lt;a href="http://download.eclipse.org/eclipse/downloads/index.php"&gt;eclipse&lt;/a&gt;&lt;br /&gt;インストール&lt;br /&gt;任意のフォルダにインストールできます。&lt;br /&gt;&lt;br /&gt;設定&lt;br /&gt;立ち上げるとワークスペースを設定する必要があります。&lt;br /&gt;任意のフォルダでOKです。&lt;br /&gt;&lt;br /&gt;通常 Installed JREs で JRE を JDK に設定します。&lt;br /&gt;&lt;br /&gt;日本語の言語パックもダウンロードできます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-2882958463074791020?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/2882958463074791020/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=2882958463074791020' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/2882958463074791020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/2882958463074791020'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/eclipse.html' title='eclipse'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-7255347330287265060</id><published>2007-10-17T22:52:00.008+09:00</published><updated>2008-02-24T15:30:59.744+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>Tomcat</title><content type='html'>&lt;p&gt;Tomcat は代表的なサーブレットエンジンです。&lt;br /&gt;JSP や サーブレットのコンテナとして広く利用されています。&lt;/p&gt;&lt;p&gt;Tomcat のインストール&lt;br /&gt;&lt;a href="http://tomcat.apache.org/"&gt;http://tomcat.apache.org/&lt;/a&gt;　よりダウンロード&lt;/p&gt;&lt;p&gt;クラスパスの設定&lt;br /&gt;(例）&lt;br /&gt;CATALINA_HOME　→　C:\Program Files\Apache Software Foundation\Tomcat5.5&lt;br /&gt;CLASSPATH　→　.;%CATALINA_HOME%\common\lib\servlet-api.jar;%CATALINA_HOME%\common\lib\jsp-api.jar&lt;/p&gt;&lt;p&gt;Tomcat は Web サーバーとしても機能します。&lt;br /&gt;Web サーバーとして大きなシェアを持っている &lt;a href="http://httpd.apache.org/"&gt;Apache&lt;/a&gt; と組み合わせてTomcat をサーブレットコンテナ専用で使うのが現在の主流です。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-7255347330287265060?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/7255347330287265060/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=7255347330287265060' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/7255347330287265060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/7255347330287265060'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/60.html' title='Tomcat'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-8825808319627496828</id><published>2007-10-17T22:52:00.005+09:00</published><updated>2007-10-21T18:17:29.650+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>tomcatPlugin</title><content type='html'>eclipse に tomcatPlugin を組み合わせると Web アプリケーションの開発が便利になります。&lt;br /&gt;&lt;a href="http://www.eclipsetotale.com/tomcatPlugin.html"&gt;eclipsetotale.com&lt;/a&gt; より&lt;br /&gt;eclipse のバージョンに対応した tomcatPlugin をダウンロードして eclipse の plugins フォルダに配置します。&lt;br /&gt;eclipse を再起動すると完了です。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-8825808319627496828?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/8825808319627496828/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=8825808319627496828' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/8825808319627496828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/8825808319627496828'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/59.html' title='tomcatPlugin'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-1166236734754267161</id><published>2007-10-17T22:52:00.003+09:00</published><updated>2007-10-30T13:55:28.685+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>JSP/サーブレットプログラムの配置</title><content type='html'>基本的には Tomcat の webapps 以下にプロジェクトのルートを配置。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Tomcat&lt;br /&gt;+ webapps&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ プロジェクトルート&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ WEB-INF&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ classes&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ パッケージ&lt;br /&gt;     &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ クラスファイル&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ web.xml&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ lib&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ tlds&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ tags&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ HTML ファイルや JSP ファイルなど&lt;br /&gt;&lt;br /&gt;プロジェクトルート&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;アプリケーションのルート&lt;br /&gt;&lt;br /&gt;WEB-INF&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;クライアントからアクセスできない。&lt;br /&gt;&lt;br /&gt;&lt;a href="/2007/10/57.html"&gt;web.xml&lt;/a&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;アプリケーション配備記述子&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;サーブレットなどの情報を定義する&lt;br /&gt;&lt;br /&gt;lib フォルダ&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jar ファイルなどを配置する&lt;br /&gt;&lt;br /&gt;tlds &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href="/2007/10/18.html"&gt;TLD ファイル&lt;/a&gt;を配置する&lt;br /&gt;&lt;br /&gt;tags&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;タグファイルを配置する&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;WEB-INF 以外はクライアントからアクセスできる。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;コンテキストファイル&lt;br /&gt;コンテキストファイルは通常 Tomcat の　conf\Catalina\localhost 以下に配置します。&lt;br /&gt;コンテキストファイルの例&lt;br /&gt;&amp;lt;Context path="/sample" &lt;br /&gt;reloadable="true" &lt;br /&gt;docBase="・・・・・・・" &lt;br /&gt;workDir="・・・・・・・" /&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-1166236734754267161?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/1166236734754267161/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=1166236734754267161' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/1166236734754267161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/1166236734754267161'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/58.html' title='JSP/サーブレットプログラムの配置'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-8228864020695471075</id><published>2007-10-17T22:52:00.001+09:00</published><updated>2007-10-21T18:17:29.651+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>web.xml</title><content type='html'>web.xml&lt;br /&gt;配備記述子&lt;br /&gt;&lt;br /&gt;サーブレット 2.4 から&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8" ?&amp;gt;&lt;br /&gt;&amp;lt;web-app xmlns="http://java.sun.com/xml/ns/j2ee"&lt;br /&gt; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt; xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&lt;br /&gt; version="2.4"&amp;gt;&lt;br /&gt;&lt;br /&gt;配備記述子で定義する主な要素&lt;br /&gt;&lt;br /&gt;context-param&lt;br /&gt;welcom-file-list&lt;br /&gt;filter&lt;br /&gt;listener&lt;br /&gt;servlet&lt;br /&gt;session-config&lt;br /&gt;mime-mapping&lt;br /&gt;error-page&lt;br /&gt;taglib&lt;br /&gt;security-constraint&lt;br /&gt;login-config&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-8228864020695471075?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/8228864020695471075/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=8228864020695471075' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/8228864020695471075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/8228864020695471075'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/57.html' title='web.xml'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-7367233166704407633</id><published>2007-10-17T22:51:00.000+09:00</published><updated>2007-10-23T12:14:56.235+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>サーブレット</title><content type='html'>サーブレット&lt;br /&gt;&lt;br /&gt;サーブレットの基本インターフェース・クラスは javax.servlet パッケージにあります。&lt;br /&gt;&lt;a href="http://java.sun.com/javaee/5/docs/api/"&gt;Javadoc&lt;/a&gt; 参照下さい。&lt;br /&gt;&lt;br /&gt;ライフサイクル&lt;br /&gt;init メソッド　→　service メソッド　→　doXxxx メソッド　→　destroy メソッド&lt;br /&gt;&lt;br /&gt;service メソッド&lt;br /&gt;サーブレットへのリクエストは service メソッドを経由する。&lt;br /&gt;service は javax.servlet.Servlet インターフェースの定義されている。&lt;br /&gt;&lt;br /&gt;doXxxx メソッド&lt;br /&gt;javax.servlet.http.HttpServlet クラスに定義されています。&lt;br /&gt;サーブレットでリクエストに対応する以下のメソッドをオーバーライドします。&lt;br /&gt;&lt;br /&gt;doGet  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HTTP GET リクエスト&lt;br /&gt;doPost  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HTTP POST リクエスト&lt;br /&gt;doPut  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HTTP PUT リクエスト&lt;br /&gt;doHead  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HTTP HEAD リクエスト&lt;br /&gt;doDelete &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HTTP DELETE リクエスト&lt;br /&gt;doOptions &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HTTP OPTIONS リクエスト&lt;br /&gt;doTrace  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HTTP TRACE リクエスト&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-7367233166704407633?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/7367233166704407633/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=7367233166704407633' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/7367233166704407633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/7367233166704407633'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/56.html' title='サーブレット'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-4193116888536091578</id><published>2007-10-17T22:50:00.006+09:00</published><updated>2010-12-10T13:53:36.668+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>GET と POST</title><content type='html'>&lt;strong&gt;HTTP GET&lt;/strong&gt;ハイパーリンクから呼び出せる&lt;br /&gt;パラメーターはクエリ情報として追加できる&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;HTTP POST&lt;/strong&gt;&lt;br /&gt;パラメータはボディに格納して送信される。&lt;br /&gt;&lt;br /&gt;HTML ファイルからサーブレットへ送信&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ハイパーリンク（GET)&lt;/strong&gt;&lt;br /&gt;&amp;lt;a href="/SCWCD/Sample2?message=Hi everyone"&amp;gt;Sample2&amp;lt;/a&amp;gt;&lt;br /&gt;Hi everyone がサーブレットで表示される&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;form で送信（GET）&lt;/strong&gt;&lt;br /&gt;&amp;lt;form&amp;nbsp;action="/SCWCD/Sample2"&amp;gt;&lt;br /&gt;&amp;lt;input&amp;nbsp;type="text"&amp;nbsp;name="message"&amp;nbsp;size="30"&amp;nbsp;maxlength="15"&amp;nbsp;/&amp;gt;&amp;lt;br&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;lt;input&amp;nbsp;type="submit"&amp;nbsp;value="送信"/&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;form の method 属性のデフォルトは get&lt;br /&gt;入力したテキストがサーブレットで表示される&lt;br /&gt;&lt;br /&gt;次のサンプルはサーブレットで doGet メソッドを定義していませんが、&lt;br /&gt;service メソッドをオーバーライドして doPost を定義しています。&lt;br /&gt;全てのリクエストは service を通るのでそこから doPost が呼び出されるので正常に動く。 &lt;br /&gt;&lt;br /&gt;Sample2.java&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.*;&lt;br /&gt;import javax.servlet.http.*;&lt;br /&gt;&lt;br /&gt;public class Sample2 extends HttpServlet {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void service(ServletRequest req, ServletResponse res) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;doPost((HttpServletRequest)req, (HttpServletResponse)res);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} catch (ServletException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} catch (IOException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void doPost(HttpServletRequest req, HttpServletResponse res) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throws ServletException, IOException {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PrintWriter out = res.getWriter();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out.println("&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out.println(req.getParameter("message"));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out.println("&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-4193116888536091578?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/4193116888536091578/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=4193116888536091578' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/4193116888536091578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/4193116888536091578'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/54.html' title='GET と POST'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-9070541272296973998</id><published>2007-10-17T22:50:00.005+09:00</published><updated>2007-10-26T12:13:58.941+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>HttpServlet</title><content type='html'>サーブレットは javax.servlet.http.HttpServlet クラスを継承して&lt;br /&gt;リクエストに対応した doXxxx メソッドをオーバーライドします。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;プロジェクトの構成&lt;br /&gt;&lt;br /&gt;SCWCD&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ WEB-INF&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ src&lt;br /&gt;            &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ sample&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ classes&lt;br /&gt;           &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + sample&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;web.xml&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sample1.java&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.http.*;&lt;br /&gt;&lt;br /&gt;@SuppressWarnings("serial")&lt;br /&gt;public class Sample1 extends HttpServlet {&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void doGet(HttpServletRequest req, HttpServletResponse res)&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throws ServletException, IOException {&lt;br /&gt;&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PrintWriter out = res.getWriter();&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out.println("&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;");&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out.println("Hello");&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out.println("&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;");&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;web.xml&lt;br /&gt;&amp;lt;?xml&amp;nbsp;version="1.0"&amp;nbsp;encoding="UTF-8"&amp;nbsp;?&amp;gt;&lt;br /&gt;&amp;lt;web-app&amp;nbsp;xmlns="http://java.sun.com/xml/ns/j2ee"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;version="2.4"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;description&amp;gt;SCWCD&amp;lt;/description&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;display-name&amp;gt;SCWCD&amp;lt;/display-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;distributable&amp;nbsp;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;servlet&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;servlet-name&amp;gt;Sample1&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;servlet-class&amp;gt;sample.Sample1&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/servlet&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;servlet-name&amp;gt;Sample1&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/Sample1&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;&amp;lt;/web-app&amp;gt;&lt;br /&gt;&lt;br /&gt;http://localhost:8080/SCWCD/Sample1 へアクセス&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;Hello&lt;br /&gt;&lt;br /&gt;servlet タグ ：&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;サーブレットに関する情報を定義&lt;br /&gt;servlet-name ：&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;サーブレットの名前&lt;br /&gt;servlet-class ：&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;サーブレットの完全修飾名（パッケージ.サーブレット名）&lt;br /&gt;jsp ファイルを指定する場合は jsp-file タグを使用する&lt;br /&gt;&lt;br /&gt;servlet-mapping タグ ：&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;サーブレットと URI パターンをマッピングする&lt;br /&gt;url-pattern ：&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;サーブレットの URI パターンを定義する&lt;br /&gt;http://ドメイン/プロジェクトルート/サーブレット名&lt;br /&gt;でアクセスできるようになる。&lt;br /&gt;&lt;br /&gt;distributable タグ&lt;br /&gt;アプリケーションが分散環境で配備可能であることを定義する。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-9070541272296973998?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/9070541272296973998/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=9070541272296973998' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/9070541272296973998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/9070541272296973998'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/55.html' title='HttpServlet'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-3165308543837771222</id><published>2007-10-17T22:50:00.001+09:00</published><updated>2007-10-21T18:17:29.652+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>HttpServletRequest</title><content type='html'>HttpServletRequest インターフェースは ServletRequest インターフェースを継承しています。&lt;br /&gt;&lt;br /&gt;リクエスト文字エンコーディング&lt;br /&gt;javax.servlet.ServletRequest のメソッド&lt;br /&gt;void setCharacterEncoding(String env) &lt;br /&gt; &lt;br /&gt;パラメータの取得&lt;br /&gt;javax.servlet.ServletRequest のメソッド&lt;br /&gt;String getParameter(String name) &lt;br /&gt;Map getParameterMap()  &lt;br /&gt;Enumeration getParameterNames() &lt;br /&gt;String[] getParameterValues(String name) &lt;br /&gt;&lt;br /&gt;ヘッダーの取得&lt;br /&gt;String getHeader(String name) &lt;br /&gt;Enumeration getHeaderNames() &lt;br /&gt;Enumeration getHeaders(String name) &lt;br /&gt;&lt;br /&gt;リクエスト属性&lt;br /&gt;javax.servlet.ServletRequest のメソッド&lt;br /&gt;Object getAttribute(String name) &lt;br /&gt;Enumeration getAttributeNames()  &lt;br /&gt;void setAttribute(String name, Object o)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-3165308543837771222?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/3165308543837771222/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=3165308543837771222' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/3165308543837771222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/3165308543837771222'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/53.html' title='HttpServletRequest'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-5892197383145637270</id><published>2007-10-17T22:49:00.003+09:00</published><updated>2007-10-21T18:17:29.652+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>HttpServletResponse</title><content type='html'>HttpServletResponse インターフェースは ServletResponse インターフェースを継承しています。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;出力用 PrintWriter オブジェクトの取得&lt;/strong&gt;&lt;br /&gt;javax.servlet.ServletResponse のメソッド&lt;br /&gt;PrintWriter getWriter()&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;文字エンコーディング&lt;/strong&gt;&lt;br /&gt;javax.servlet.ServletResponse のメソッド&lt;br /&gt;void setCharacterEncoding(String charset) &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;getWriter より前に呼び出す&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;レスポンスがコミットされる前に呼び出す。&lt;br /&gt;void setContentType(String type)  &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;getWriter より前に呼び出す&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;レスポンスがコミットされる前に呼び出す。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;リダイレクト&lt;/strong&gt;&lt;br /&gt;void sendRedirect(String location) &lt;br /&gt;/ で始まるコンテナルートを基準とするパスを location に設定するか、相対パスを設定する。&lt;br /&gt;（例）/SCWCD/Sample1&lt;br /&gt;（例）Sample1&lt;br /&gt;sendRedirect メソッドは一旦レスポンスをクライアントに返してから location へリダイレクトする。&lt;br /&gt;リクエスト属性を利用できない。&lt;br /&gt;他のドメインにリダイレクトするには http://..... というように location を設定する。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;URL 書き換え&lt;/strong&gt;&lt;br /&gt;String encodeUrl(String url) &lt;br /&gt;String encodeRedirectURL(String url) &lt;br /&gt;Cookie をサポートしてないブラウザのセッションを構成するには URL 書き換えが使われる。&lt;br /&gt;sendRedirect メソッドへ送られる URL はこのメソッドを利用する。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import javax.servlet.ServletException;&lt;br /&gt;import javax.servlet.http.*;&lt;br /&gt;&lt;br /&gt;public class Sample3 extends HttpServlet {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void doPost(HttpServletRequest req, HttpServletResponse res) &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throws ServletException, IOException {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (req.getParameter("message").equals("")) {&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;res.sendRedirect("/SCWCD/index.html");&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PrintWriter out = res.getWriter();&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out.println("&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;");&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out.println(req.getParameter("message"));&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out.println("&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;");&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;index.html&lt;br /&gt;...&lt;br /&gt;&amp;lt;form&amp;nbsp;action="/SCWCD/Sample3"&amp;nbsp;method="post"&amp;gt;&lt;br /&gt;&amp;lt;input&amp;nbsp;type="text"&amp;nbsp;name="message"&amp;nbsp;size="30"&amp;nbsp;maxlength="15"&amp;nbsp;/&amp;gt;&amp;lt;br&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;lt;input&amp;nbsp;type="submit"&amp;nbsp;value="送信"/&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;入力した文字が出力される。文字を入力しないとリダイレクトされる。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-5892197383145637270?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/5892197383145637270/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=5892197383145637270' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/5892197383145637270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/5892197383145637270'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/52.html' title='HttpServletResponse'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-6228758659020265187</id><published>2007-10-17T22:49:00.001+09:00</published><updated>2007-10-30T13:58:29.174+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>sendError / setStatus</title><content type='html'>&lt;p&gt;&lt;a href="http://www.asahi-net.or.jp/~AX2S-KMTN/ref/status.html"&gt;HTTP ステータスコード一覧&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="/2007/10/52.html"&gt;HttpServletResponse&lt;/a&gt; インターフェースにはステータスコードが定数として定義されています。&lt;br /&gt;(例）&lt;br /&gt;404 : SC_NOT_FOUND &lt;br /&gt;500 : SC_INTERNAL_SERVER_ERROR &lt;br /&gt;&lt;br /&gt;sendError / setStatus メソッドを使用する際は定数の利用が推奨されます。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;sendError(int sc) &lt;br /&gt;sc で指定されたステータスコードを使用してクライアントにエラーレスポンスを返す&lt;br /&gt;&lt;br /&gt;sendError(int sc, String msg) &lt;br /&gt;メッセージをふかしてエラーレスポンスを返す&lt;br /&gt;&lt;br /&gt;setStatus(int sc) &lt;br /&gt;レスポンスに sc で指定したステータスコードをセットする。&lt;br /&gt;SC_OK (200) や SC_MOVED_TEMPORARILY (302)をセットする。&lt;br /&gt;エラーレスポンスの場合は sendError メソッドを使用すべき。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-6228758659020265187?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/6228758659020265187/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=6228758659020265187' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/6228758659020265187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/6228758659020265187'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/51.html' title='sendError / setStatus'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-3378934891653190115</id><published>2007-10-16T17:07:00.002+09:00</published><updated>2009-01-04T13:50:46.076+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>エラーページの設定</title><content type='html'>エラーが起こった場合に移動するページを web.xml で定義することが出来ます。&lt;br /&gt;&lt;br /&gt;404 エラーが起こった場合（存在しないページをリクエストした場合）に error.html へリダイレクトする。&lt;br /&gt;    &amp;lt;error-page&amp;gt;&lt;br /&gt;        &amp;lt;error-code&amp;gt;404&amp;lt;/error-code&amp;gt;&lt;br /&gt;        &amp;lt;location&amp;gt;/error.html&amp;lt;/location&amp;gt;&lt;br /&gt;    &amp;lt;/error-page&amp;gt;&lt;br /&gt;&lt;br /&gt;error-code のほかに　exception-type が使える。&lt;br /&gt;&amp;lt;exception-type&amp;gt;java.io.IOException&amp;lt;/exception-type&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-3378934891653190115?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/3378934891653190115/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=3378934891653190115' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/3378934891653190115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/3378934891653190115'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/50.html' title='エラーページの設定'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-1988678958686556777</id><published>2007-10-16T17:06:00.017+09:00</published><updated>2009-01-07T20:33:24.631+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>ServletContext</title><content type='html'>javax.servlet.ServletContext オブジェクトは Web アプリケーション単位で作成される。&lt;br /&gt;distributable タグを web.xml に定義した分散環境 Web アプリケーションでは、&lt;br /&gt;それぞれの JVM につき一つの ServletContext オブジェクトが作成される。&lt;br /&gt;分散環境ではグローバル情報をコンテキストオブジェクトの属性などに頼るべきではなくデータベースなどに頼るべき。&lt;br /&gt;&lt;br /&gt;ServletContext オブジェクトは ServletConfig オブジェクトから取得する。&lt;br /&gt;&lt;br /&gt;ServletConfig#getServletContext メソッドで取得できる。&lt;br /&gt;＜サンプル＞&lt;br /&gt;public void doGet(HttpServletRequest req, HttpServletResponse res)&lt;br /&gt;    throws ServletException, IOException {&lt;br /&gt;        String formatParam =&lt;br /&gt;            this.getServletConfig().getServletContext()&lt;br /&gt;            .getInitParameter("dateformat");&lt;br /&gt;        SimpleDateFormat fmt = new SimpleDateFormat(formatParam);&lt;br /&gt;        PrintWriter out = res.getWriter();&lt;br /&gt;        out.println("&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;");&lt;br /&gt;        out.println(fmt.format(new Date()));&lt;br /&gt;        out.println("&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;");&lt;br /&gt;       &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;JSP では&lt;a href="http://www.blogger.com/2007/10/25.html"&gt;暗黙オブジェクト&lt;/a&gt; application として利用できる。&lt;br /&gt;＜サンプル＞&lt;br /&gt;    application.getInitParameter("dateformat");&lt;br /&gt;&lt;br /&gt;ServletContextListener 実装クラスでは ServletContextEvent から取得できる&lt;br /&gt;＜サンプル＞&lt;br /&gt;    public void contextInitialized(ServletContextEvent sce) {&lt;br /&gt;        ServletContext context = sce.getServletContext();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;コンテキスト初期化パラメータの設定&lt;br /&gt;コンテキスト初期化パラメータを web.xml に定義することが出来ます。&lt;br /&gt;context-param タグは複数定義できます。&lt;br /&gt;&lt;br /&gt;&amp;lt;context-param&amp;gt;&lt;br /&gt;    &amp;lt;param-name&amp;gt;dateformat&amp;lt;/param-name&amp;gt;&lt;br /&gt;    &amp;lt;param-value&amp;gt;yyyy/MM/dd&amp;lt;/param-value&amp;gt;&lt;br /&gt;&amp;lt;/context-param&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-1988678958686556777?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/1988678958686556777/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=1988678958686556777' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/1988678958686556777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/1988678958686556777'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/48.html' title='ServletContext'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-3745415459319303420</id><published>2007-10-16T17:06:00.016+09:00</published><updated>2008-10-28T20:41:45.975+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>HttpSession</title><content type='html'>&lt;strong&gt;セッション追跡&lt;/strong&gt;&lt;br /&gt;HTTP にはセッションはありませんので HTTP だけではセッションを追跡でいない。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;セッション追跡のメカニズム&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;クッキーの使用&lt;br /&gt;&lt;br /&gt;URL 書き換え&lt;br /&gt;    クッキーを無効にしているブラウザへの対応。&lt;br /&gt;&lt;br /&gt;SSL（Secure Sockets Layer） セッション&lt;br /&gt;&lt;br /&gt;Java では javax.servlet.http.HttpSession インターフェースを使ってセッションを構成します。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;セッションオブジェクトの取得&lt;/strong&gt;&lt;br /&gt;    HttpServletRequest#getSession&lt;br /&gt;        現在のセッションを返す。&lt;br /&gt;        現在のセッションがなければ新たに作成する。&lt;br /&gt;    HttpServletRequest#getSession(boolean create)&lt;br /&gt;        現在のセッションを返す。&lt;br /&gt;        現在のセッションがなくて create が true なら新たに作成する。&lt;br /&gt;        false を指定すると新たにセッションを作成しない。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;セッションと属性&lt;/strong&gt;&lt;br /&gt;    セッションにオブジェクトをセット&lt;br /&gt;    HttpSession#setAttribute(String name, Object value)&lt;br /&gt;    セッションからオブジェクトを所得&lt;br /&gt;    HttpSession#getAttribute(String name)&lt;br /&gt;    HttpSession#getAttributeNames() は String オブジェクトの Enumeration を返す&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;セッションタイムアウト&lt;/strong&gt;&lt;br /&gt;    HttpSession#setMaxInactiveInterval(int interval)&lt;br /&gt;    タイムアウト値を秒で設定する。&lt;br /&gt;    -（ネガティブ）を設定するとタイムアウトしない。&lt;br /&gt;又は&lt;br /&gt;    web.xml の設定。タイムアウト値を分で設定。&lt;br /&gt;   &amp;lt;session-config&amp;gt;&lt;br /&gt;        &amp;lt;session-timeout&amp;gt;&lt;br /&gt;            20&lt;br /&gt;        &amp;lt;/session-timeout&amp;gt;&lt;br /&gt;    &amp;lt;/session-config&amp;gt;&lt;br /&gt;-（ネガティブ）または 0 を設定するとタイムアウトしない。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;セッションオブジェクトの削除&lt;/strong&gt;&lt;br /&gt;HttpSession#invalidate メソッドを呼び出します。関連付けられているオブジェクトも削除します。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;セッションが作成、破棄されたときに通知を受ける&lt;/strong&gt;&lt;br /&gt;    &lt;a href="http://www.blogger.com/2007/10/42.html"&gt;javax.servlet.http.HttpSessionListener&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;HttpSession オブジェクトはスレッドセーフではない。&lt;/strong&gt;&lt;br /&gt;    HttpSession オブジェクトはスレッドセーフではありません。&lt;br /&gt;    &lt;br /&gt;参照 &lt;a href="http://sjcp-geek.blogspot.com/2007/10/blog-post_992.html"&gt;スレッドの同期化&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-3745415459319303420?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/3745415459319303420/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=3745415459319303420' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/3745415459319303420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/3745415459319303420'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/47.html' title='HttpSession'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-7255801440095300404</id><published>2007-10-16T17:06:00.014+09:00</published><updated>2008-02-09T11:11:26.921+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>RequestDispatcher</title><content type='html'>javax.servlet.RequestDispathcer インターフェースは&lt;br /&gt;リクエストを別のリソースに転送できる。&lt;br /&gt;&lt;br /&gt;RequestDispatcher オブジェクトの取得&lt;br /&gt;ServletRequest#getRequestDispatcher(String path)&lt;br /&gt;相対パスが使用できるが、/ で始まる path はコンテキストルートが基準&lt;br /&gt;(例）/Sample1&lt;br /&gt;(例) Sample1&lt;br /&gt;&lt;br /&gt;ServletContext#getRequestDispatcher(String path)&lt;br /&gt;/ で始まるコンテキストルートを基準とした path を使用。&lt;br /&gt;(例）/Sample1&lt;br /&gt;&lt;br /&gt;void forward(ServletRequest request, ServletResponse response)&lt;br /&gt;    リクエストを別のリソースへ転送する&lt;br /&gt;&lt;br /&gt;void include(ServletRequest request, ServletResponse response)&lt;br /&gt;    別のリソースをインクルードする&lt;br /&gt;&lt;br /&gt;forward メソッドはサーバー側で直接転送するところが HttpServletResponse#sendRedirect メソッドと異なる。&lt;br /&gt;転送された後の URL バーは依然サーブレットの URL パターンが表示されている。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-7255801440095300404?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/7255801440095300404/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=7255801440095300404' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/7255801440095300404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/7255801440095300404'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/49.html' title='RequestDispatcher'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-3008475553644041514</id><published>2007-10-16T17:06:00.009+09:00</published><updated>2007-10-21T19:53:11.275+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>Cookie</title><content type='html'>javax.servlet.http.Cookie&lt;br /&gt;&lt;br /&gt;クライアントがサーバーにアクセス&lt;br /&gt;↓&lt;br /&gt;サーバーがレスポンスにクッキーを添付&lt;br /&gt;↓&lt;br /&gt;クライアントがクッキーを保存&lt;br /&gt;↓&lt;br /&gt;サーバーへ再度アクセス&lt;br /&gt;↓&lt;br /&gt;クッキー情報からクライアントを特定&lt;br /&gt;&lt;br /&gt;レスポンスにクッキーを添付する&lt;br /&gt;HttpServletResponse#addCookie&amp;nbsp;メソッド&lt;br /&gt;&lt;br /&gt;Cookie&amp;nbsp;cok&amp;nbsp;=&amp;nbsp;new&amp;nbsp;Cookie(name,&amp;nbsp;value);&lt;br /&gt;cok.setMaxAge(60*60*24*180);&lt;br /&gt;res.addCookie(cok);&lt;br /&gt;&lt;br /&gt;Cookie&amp;nbsp;オブジェクトの取得&lt;br /&gt;HttpServletRequest#getCookies&amp;nbsp;メソッド&lt;br /&gt;クライアントがこのリクエストで送った全てのクッキーが配列に格納される。&lt;br /&gt;&lt;br /&gt;Cookie&amp;nbsp;のコンストラクタに渡す&amp;nbsp;value&amp;nbsp;は&amp;nbsp;java.net.URLEncoder#encode(String&amp;nbsp;s,&amp;nbsp;String&amp;nbsp;enc)&amp;nbsp;メソッドで&lt;br /&gt;エンコードします。&lt;br /&gt;リクエスト先では&amp;nbsp;java.net.URLDecoder#decode(String&amp;nbsp;s,&amp;nbsp;String&amp;nbsp;enc)&amp;nbsp;メソッドでデコードします。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Cookie&amp;nbsp;cok&amp;nbsp;=&amp;nbsp;new&amp;nbsp;Cookie("message",&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;URLEncoder.encode("あいうえお",&amp;nbsp;"UTF-8"));&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;str&amp;nbsp;=&amp;nbsp;null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Cookie[]&amp;nbsp;cok&amp;nbsp;=&amp;nbsp;request.getCookies();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(cok&amp;nbsp;!=&amp;nbsp;null)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(int&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;cok.length;&amp;nbsp;i++)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(cok[i].getName().equals("message"))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;str&amp;nbsp;=&amp;nbsp;URLDecoder.decode(cok[i].getValue(),&amp;nbsp;"UTF-8");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-3008475553644041514?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/3008475553644041514/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=3008475553644041514' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/3008475553644041514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/3008475553644041514'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/46.html' title='Cookie'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-8512539770214552838</id><published>2007-10-16T17:06:00.007+09:00</published><updated>2007-10-21T19:55:06.320+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>フィルタ</title><content type='html'>javax.servlet.Filter&amp;nbsp;はリクエストをインターセプトして&amp;nbsp;ServletRequest&amp;nbsp;や&amp;nbsp;ServletResponse&amp;nbsp;に処理を行うことが出来る。&lt;br /&gt;主なフィルタの使い方&lt;br /&gt;・アプリケーションへのリクエストをインターセプトして文字エンコーディングを設定する。&lt;br /&gt;・フィルタでセキュリティを一括管理する&lt;br /&gt;&lt;br /&gt;web.xml&amp;nbsp;への定義&lt;br /&gt;&lt;br /&gt;フィルタは配備記述子&amp;nbsp;web.xml&amp;nbsp;へ定義します。&lt;br /&gt;&lt;br /&gt;(例）&lt;br /&gt;&amp;lt;filter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;filter-name&amp;gt;MyFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;filter-class&amp;gt;filter.MyFilter&amp;lt;/filter-class&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;init-param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;param-name&amp;gt;EncodeName&amp;lt;/param-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;param-value&amp;gt;Shift_JIS&amp;lt;/param-value&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/init-param&amp;gt;&lt;br /&gt;&amp;lt;/filter&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;filter-mapping&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;filter-name&amp;gt;MyFilter&amp;lt;/filter-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;dispatcher&amp;gt;REQUEST&amp;lt;/dispatcher&amp;gt;&lt;br /&gt;&amp;lt;/filter-mapping&amp;gt;&lt;br /&gt;&lt;br /&gt;filter-name&amp;nbsp;:&amp;nbsp;フィルタクラスの名前&lt;br /&gt;fiter-class&amp;nbsp;:&amp;nbsp;フィルタクラスの完全修飾名&lt;br /&gt;init-param&amp;nbsp;:&amp;nbsp;初期化パラメータ。FilterConfig&amp;nbsp;オブジェクトから取得できる。&lt;br /&gt;url-pattern&amp;nbsp;:&amp;nbsp;フィルタを適用する&amp;nbsp;URL&amp;nbsp;を指定する。&amp;nbsp;*（ワイルドカード）&amp;nbsp;が使用できる。&lt;br /&gt;dispatcher&amp;nbsp;:&amp;nbsp;REQUEST,FORWARD,INCLUDE,ERROR&amp;nbsp;を指定。デフォルトは&amp;nbsp;REQUEST&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Filter&amp;nbsp;インターフェースのメソッド&lt;br /&gt;public&amp;nbsp;void&amp;nbsp;init(FilterConfig&amp;nbsp;config)&lt;br /&gt;&lt;br /&gt;public&amp;nbsp;void&amp;nbsp;doFilter(ServletRequest&amp;nbsp;request,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ServletResponse&amp;nbsp;response,&amp;nbsp;FilterChain&amp;nbsp;chain)&lt;br /&gt;&lt;br /&gt;public&amp;nbsp;void&amp;nbsp;destroy()&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;public&amp;nbsp;class&amp;nbsp;MyFilter1&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;FilterConfig&amp;nbsp;config&amp;nbsp;=&amp;nbsp;null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;void&amp;nbsp;init(FilterConfig&amp;nbsp;config)&amp;nbsp;throws&amp;nbsp;ServletException&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.config&amp;nbsp;=&amp;nbsp;config;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;void&amp;nbsp;doFilter(ServletRequest&amp;nbsp;req,&amp;nbsp;ServletResponse&amp;nbsp;res,&amp;nbsp;FilterChain&amp;nbsp;chain)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throws&amp;nbsp;IOException,&amp;nbsp;ServletException&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HttpServletRequest&amp;nbsp;request&amp;nbsp;=&amp;nbsp;(HttpServletRequest)req;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;url&amp;nbsp;=&amp;nbsp;request.getRequestURI();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;データベース等でなんらかのカウントアップ処理&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;次のフィルターへ&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;chain.doFilter(req,res);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;void&amp;nbsp;destroy()&amp;nbsp;{}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;filter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;filter-name&amp;gt;MyFilter1&amp;lt;/filter-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;filter-class&amp;gt;filter.MyFilter1&amp;lt;/filter-class&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/filter&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;filter-mapping&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;filter-name&amp;gt;MyFilter1&amp;lt;/filter-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/MyFilter1&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;dispatcher&amp;gt;REQUEST&amp;lt;/dispatcher&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;dispatcher&amp;gt;FORWARD&amp;lt;/dispatcher&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;dispatcher&amp;gt;INCLUDE&amp;lt;/dispatcher&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;dispatcher&amp;gt;ERROR&amp;lt;/dispatcher&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/filter-mapping&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-8512539770214552838?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/8512539770214552838/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=8512539770214552838' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/8512539770214552838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/8512539770214552838'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/45.html' title='フィルタ'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-1570729661056210922</id><published>2007-10-16T17:06:00.005+09:00</published><updated>2007-10-24T21:48:39.558+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>リスナー</title><content type='html'>JSP/サーブレット&amp;nbsp;Web&amp;nbsp;アプリケーションにおいてはイベントを感知するリスナーを使用できます。&lt;br /&gt;リスナーは&amp;nbsp;web.xml&amp;nbsp;に&amp;nbsp;listener&amp;nbsp;タグで定義します。&lt;br /&gt;&lt;a href="/2007/10/39.html"&gt;HttpSessionBindingListener&lt;/a&gt;&amp;nbsp;と&amp;nbsp;&lt;a href="/2007/10/41.html"&gt;HttpSessionActivationListener&lt;/a&gt;&amp;nbsp;インターフェースを実装するリスナークラスは定義しなくても良い。&lt;br /&gt;&lt;br /&gt;リスナーの定義&lt;br /&gt;web.xml&lt;br /&gt;&amp;lt;listener&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;listener-class&amp;gt;sample.MyListener1&amp;lt;/listener-class&amp;gt;&lt;br /&gt;&amp;lt;/listener&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-1570729661056210922?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/1570729661056210922/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=1570729661056210922' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/1570729661056210922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/1570729661056210922'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/44.html' title='リスナー'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-8205411071071875720</id><published>2007-10-16T17:06:00.003+09:00</published><updated>2007-10-24T18:31:13.959+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>ServletContextListener</title><content type='html'>ServletContextListener は ServletContextEvent をハンドルします。&lt;br /&gt;ServletContextEvent はコンテキストの生成、削除を通知します。&lt;br /&gt;下記のメソッドがあります。&lt;br /&gt;contextInitialized(ServletContextEvent sce)&lt;br /&gt;contextDestroyed(ServletContextEvent sce)&lt;br /&gt;&lt;br /&gt;アプリケーション共通の情報をセットする出来ます。&lt;br /&gt;各ページで共通の情報を利用できます。&lt;br /&gt;分散環境では各 JVM に１つずつ SevletContext がつくられるのでグローバル情報を ServletContext 属性などにセットすべきではないといわれます。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;web.xml&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;listener&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;display-name&amp;gt;Context&amp;nbsp;Listener&amp;lt;/display-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;listener-class&amp;gt;listener.ListenerSample1&amp;lt;/listener-class&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/listener&amp;gt;&lt;br /&gt;_________&lt;br /&gt;&lt;br /&gt;ListenerSample1.java&lt;br /&gt;public&amp;nbsp;class&amp;nbsp;ListenerSample1&amp;nbsp;implements&amp;nbsp;ServletContextListener&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;void&amp;nbsp;contextInitialized(ServletContextEvent&amp;nbsp;sce)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ServletContext&amp;nbsp;context&amp;nbsp;=&amp;nbsp;sce.getServletContext();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;context.setAttribute("message",&amp;nbsp;"Hello");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;void&amp;nbsp;contextDestroyed(ServletContextEvent&amp;nbsp;sce)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ServletContext&amp;nbsp;context&amp;nbsp;=&amp;nbsp;sce.getServletContext();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;context.removeAttribute("message");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;_________&lt;br /&gt;&lt;br /&gt;sample.jsp&lt;br /&gt;&amp;lt;%@&amp;nbsp;taglib&amp;nbsp;prefix="c"&amp;nbsp;uri="http://java.sun.com/jsp/jstl/core"&amp;nbsp;%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;c:out&amp;nbsp;value="${applicationScope.message}"&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;http://localhost:8080/SCWCD/sample.jsp&lt;br /&gt;Hello&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-8205411071071875720?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/8205411071071875720/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=8205411071071875720' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/8205411071071875720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/8205411071071875720'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/43.html' title='ServletContextListener'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-5507679058136532517</id><published>2007-10-16T17:06:00.001+09:00</published><updated>2007-10-24T18:29:28.211+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>HttpSessionListener</title><content type='html'>HttpSessionListener は HttpSessionEvent をハンドルします。&lt;br /&gt;HttpSessionEvent はセッションの生成、削除を通知します。&lt;br /&gt;メソッドは２つあります。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;public class MySessionListener2 implements HttpSessionListener {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void sessionCreated(HttpSessionEvent hse) {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ServletContext sc = &lt;br /&gt;            &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hse.getSession().getServletContext();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sc.log("Session created");&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void sessionDestroyed(HttpSessionEvent hse) {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ServletContext sc = &lt;br /&gt;            &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hse.getSession().getServletContext();&lt;br /&gt;       &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sc.log("Session destroyed");  &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;ログは通常 %CATALINA_HOME%\log\localhost.XXXX-XX-XX.log ファイルの記録されます。&lt;br /&gt;&lt;br /&gt;参照 &lt;a href="/2007/10/44.html"&gt;リスナーの配備&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-5507679058136532517?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/5507679058136532517/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=5507679058136532517' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/5507679058136532517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/5507679058136532517'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/42.html' title='HttpSessionListener'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-721370306962176306</id><published>2007-10-16T17:05:00.020+09:00</published><updated>2007-10-24T21:44:17.980+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>HttpSessionActivationListener</title><content type='html'>HttpSessionActivationListener インターフェースを実装するクラスのオブジェクトがセッション属性としてバインドされている場合、セッションの「退避」、「回復」が行われるとバインドされているオブジェクトに HttpSessionEvent が通知されます。&lt;br /&gt;&lt;br /&gt;＜メソッド＞&lt;br /&gt;void sessionDidActivate(HttpSessionEvent se)&lt;br /&gt;void sessionWillPassivate(HttpSessionEvent se)&lt;br /&gt;&lt;br /&gt;オブジェクトは直列化するため Serialazable インターフェースを実装するべきでしょう。&lt;br /&gt;JVM 間でのセッションの移動の際、セッションの｢退避」「回復」が発生します。&lt;br /&gt;&lt;br /&gt;HttpSessionActivationListener を実装するリスナークラスは &lt;br /&gt;web.xml に定義する必要はありません。&lt;br /&gt;&lt;br /&gt;＜サンプル＞&lt;br /&gt;public class MyActivationListener implements &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HttpSessionActivationListener, Serializable {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void sessionDidActivate(HttpSessionEvent arg0) {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.....&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void sessionWillPassivate(HttpSessionEvent arg0) {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.....&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-721370306962176306?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/721370306962176306/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=721370306962176306' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/721370306962176306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/721370306962176306'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/41.html' title='HttpSessionActivationListener'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-2598923178525216510</id><published>2007-10-16T17:05:00.019+09:00</published><updated>2007-10-24T18:41:17.152+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>HttpSessionAttributeListener</title><content type='html'>HttpSessionAttributeListener は&lt;br /&gt;セッション属性の変化を通知します。&lt;br /&gt;メソッドは３つあります。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;public class MySessionListener implements &lt;br /&gt;                &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HttpSessionAttributeListener {&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void attributeAdded(HttpSessionBindingEvent sbe) {&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ServletContext sc= &lt;br /&gt;            &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sbe.getSession().getServletContext();&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;......&lt;br /&gt;   &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;    public void attributeRemoved(HttpSessionBindingEvent sbe) {&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ServletContext sc= &lt;br /&gt;            &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sbe.getSession().getServletContext();&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.....&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void attributeReplaced(HttpSessionBindingEvent sbe) {&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ServletContext sc= &lt;br /&gt;            &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sbe.getSession().getServletContext();&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.....&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-2598923178525216510?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/2598923178525216510/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=2598923178525216510' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/2598923178525216510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/2598923178525216510'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/40.html' title='HttpSessionAttributeListener'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-6561923466539138063</id><published>2007-10-16T17:05:00.017+09:00</published><updated>2007-10-24T21:45:13.453+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>HttpSessionBindingListener</title><content type='html'>セッション属性にセットされいる HttpSessionBindingListener インターフェースを実装するオブジェクトは、HttpSessionBindingEvent を受け取る。&lt;br /&gt;メソッドは３つあります。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;public class MySessionListener2 implements HttpSessionBindingListener {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void valueBound(HttpSessionBindingEvent arg0) {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// .....  &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public void valueUnbound(HttpSessionBindingEvent arg0) {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// .....  &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-6561923466539138063?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/6561923466539138063/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=6561923466539138063' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/6561923466539138063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/6561923466539138063'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/39.html' title='HttpSessionBindingListener'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-6873186227811878839</id><published>2007-10-16T17:05:00.015+09:00</published><updated>2007-10-26T14:34:36.413+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>セキュリティ</title><content type='html'>&lt;strong&gt;認証&lt;/strong&gt;（Authentication）&lt;br /&gt;自身の身元を明らかにしシステムにアクセスする権利があることを証明するメカニズム。&lt;br /&gt;JSP/Servlet アプリケーションでは &lt;a href="/2007/10/37.html"&gt;BASIC 認証&lt;/a&gt;、&lt;a href="/2007/10/36.html"&gt;FORM ベース認証&lt;/a&gt;、DIGEST 認証、CLIENT-CERT 認証が使われます。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;許可&lt;/strong&gt;（Authorization）&lt;br /&gt;保護されたシステムへのアクセスをアクセスする人の権限によって管理するメカニズム。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;データ完全性&lt;/strong&gt;（Data Integrity）&lt;br /&gt;データ完全性とはクライアントからサーバーまでの通信経路でデータが修正されていないことをあらわします。&lt;br /&gt;&lt;br /&gt;______&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;セキュリティ制約条件&lt;/strong&gt;&lt;br /&gt;JSP / Servlet アプリケーションではリソースを保護するためにセキュリティ制約条件を設定します。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;web.xml の設定&lt;/strong&gt;&lt;br /&gt;アプリケーション配備記述子に security-constraint タグでセキュリティ制約条件を設定します。&lt;br /&gt;&lt;br /&gt;&amp;lt;security-constraint&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;web-resource-collection&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;web-resource-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;http-method&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;auth-constraint&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;user-data-constraint&amp;gt;&lt;br /&gt;&lt;br /&gt;url-pattern で定義した URL がセキュリティ制約条件の対象となります。&lt;br /&gt;http-method は GET や POST などを指定します。省略した場合はすべての方式に対応します。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;セキュリティロール&lt;/strong&gt;&lt;br /&gt;アクセス権のあるユーザーを設定します。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;auth-constraint&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;role-name&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ユーザーデータの制約条件&lt;/strong&gt;&lt;br /&gt;データ転送に関する定義。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;user-data-constraint&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;transport-guarantee&amp;gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;NONE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;転送中の保障必要なし&lt;/li&gt;&lt;br /&gt;&lt;li&gt;INTEGRAL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;転送中にデータが修正された場合それを識別できる方法で転送する。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;CONFIDENTIAL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;転送中にデータを読み取ることができない方式&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-6873186227811878839?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/6873186227811878839/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=6873186227811878839' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/6873186227811878839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/6873186227811878839'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/38.html' title='セキュリティ'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-8575650745067189802</id><published>2007-10-16T17:05:00.013+09:00</published><updated>2007-10-26T12:36:34.687+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>BASIC 認証</title><content type='html'>BASIC 認証はユーザー名とパスワードをクリアテキストでサーバーに送信する認証方式。&lt;br /&gt;&lt;br /&gt;BASIC&amp;nbsp;認証を行うには配備記述子&amp;nbsp;web.xml&amp;nbsp;に&amp;nbsp;security-constraint&amp;nbsp;タグと&amp;nbsp;login-config&amp;nbsp;タグを定義します。&lt;br /&gt;url-pattern&amp;nbsp;に指定した&amp;nbsp;URL&amp;nbsp;にアクセスするとログイン認証が求められます。&lt;br /&gt;url-pattern&amp;nbsp;には&amp;nbsp;*&amp;nbsp;（ワイルドカード）が使用できます。&lt;br /&gt;role-name&amp;nbsp;には&amp;nbsp;%CATALINA_HOME%\conf\tomcat-users.xml&amp;nbsp;に設定してあるユーザー名を指定します。&lt;br /&gt;新たにユーザーを登録する場合は&amp;nbsp;tomcat-users.xml&amp;nbsp;を編集する必要があります。&lt;br /&gt;&lt;br /&gt;web.xml&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;security-constraint&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;web-resource-collection&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;web-resource-name&amp;gt;SercretResourse&amp;lt;/web-resource-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;url-pattern&amp;gt;/secret/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/web-resource-collection&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;auth-constraint&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;role-name&amp;gt;guest&amp;lt;/role-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/auth-constraint&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/security-constraint&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;login-config&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;auth-method&amp;gt;BASIC&amp;lt;/auth-method&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;realm-name&amp;gt;Secure&amp;nbsp;Realm&amp;lt;/realm-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/login-config&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/secret&amp;nbsp;以下のリソースにアクセスすると認証が開始されます。&lt;br /&gt;認証はリソースにアクセスするたびに求められるのが基本ですが、ほとんどのブラウザでは約３分間は認証をパスしてページ移動が出来るようです。これは&amp;nbsp;HttpSession&amp;nbsp;の力を借りているのではなくブラウザ側の機能です。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-8575650745067189802?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/8575650745067189802/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=8575650745067189802' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/8575650745067189802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/8575650745067189802'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/37.html' title='BASIC 認証'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-3372689328216878073</id><published>2007-10-16T17:05:00.011+09:00</published><updated>2007-10-26T14:36:03.428+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>FORM ベース認証</title><content type='html'>FORM ベース認証は機能的には BASIC 認証と同じです。&lt;br /&gt;html ファイルなどでログインフォームをカスタマイズできます。&lt;br /&gt;配備記述子 web.xml の login-config タグに下記のように追加設定します。&lt;br /&gt;&lt;br /&gt;web.xml&lt;br /&gt;&amp;lt;login-config&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;auth-method&amp;gt;FORM&amp;lt;/auth-method&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;form-login-config&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;form-login-page&amp;gt;/login.html&amp;lt;/form-login-page&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;form-error-page&amp;gt;/error.html&amp;lt;/form-error-page&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/form-login-config&amp;gt;&lt;br /&gt;&amp;lt;/login-config&amp;gt;&lt;br /&gt;&lt;br /&gt;login.html はログインフォーム。&lt;br /&gt;error.html はログインが出来なかったときに転送されるページです。エラーメッセージなどを表示します。&lt;br /&gt;&lt;br /&gt;login.html には下記のようなフォームを配置します。&lt;br /&gt;&amp;lt;form&amp;nbsp;method="post"&amp;nbsp;action="j_security_check"&amp;gt;&lt;br /&gt;Name&amp;nbsp;:&amp;nbsp;&amp;lt;input&amp;nbsp;type="text"&amp;nbsp;name="j_username"&amp;gt;&amp;lt;br&amp;nbsp;/&amp;gt;&lt;br /&gt;Password&amp;nbsp;:&amp;nbsp;&amp;lt;input&amp;nbsp;type="password"&amp;nbsp;name="j_password"&amp;gt;&amp;lt;br&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;lt;input&amp;nbsp;type="submit"&amp;nbsp;value="ログインする"&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&lt;br /&gt;j_security_check&lt;br /&gt;j_username&lt;br /&gt;j_password&lt;br /&gt;は変更できません。&lt;br /&gt;&lt;br /&gt;____&lt;br /&gt;&lt;br /&gt;BASIC 認証、FORM ベース認証のほかにパスワードを暗号化して送信する DIGEST 認証、SSL を使った CLIENT-CERT 認証があります。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-3372689328216878073?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/3372689328216878073/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=3372689328216878073' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/3372689328216878073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/3372689328216878073'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/36.html' title='FORM ベース認証'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-3597140395835176780</id><published>2007-10-16T17:05:00.009+09:00</published><updated>2007-10-28T19:28:31.272+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>スレッドセーフ</title><content type='html'>＜スレッドセーフ＞&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;リクエストオブジェクト&lt;br /&gt;リクエスト属性&lt;br /&gt;&lt;br /&gt;ローカル変数&lt;br /&gt;&lt;br /&gt;シングルスレッドモデルにおけるインスタンス変数&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;以外は synchronized などを使って適切なプログラムを書く。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-3597140395835176780?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/3597140395835176780/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=3597140395835176780' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/3597140395835176780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/3597140395835176780'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/35.html' title='スレッドセーフ'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-6149175389806395373</id><published>2007-10-16T17:05:00.007+09:00</published><updated>2007-10-21T20:01:35.030+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>JSP (Java Server Pages)</title><content type='html'>拡張子&amp;nbsp;は&amp;nbsp;.jsp&amp;nbsp;です。JSP&amp;nbsp;ファイルは&amp;nbsp;.java&amp;nbsp;ファイルに変換されて&amp;nbsp;.class&amp;nbsp;ファイルにコンパイルされます。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;JSP&amp;nbsp;ファイルの構成&lt;br /&gt;&lt;br /&gt;ディレクティブ（指令）&lt;br /&gt;&amp;lt;%@&amp;nbsp;指令&amp;nbsp;属性....%&amp;gt;&lt;br /&gt;&lt;br /&gt;宣言部&lt;br /&gt;&amp;lt;%!&amp;nbsp;....&amp;nbsp;%&amp;gt;&lt;br /&gt;&lt;br /&gt;スクリプトレット&lt;br /&gt;&amp;lt;%&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...&lt;br /&gt;%&amp;gt;&lt;br /&gt;&lt;br /&gt;式&lt;br /&gt;&amp;lt;%=....%&amp;gt;&lt;br /&gt;&lt;br /&gt;コメント&lt;br /&gt;&amp;lt;%--&amp;nbsp;....&amp;nbsp;--%&amp;gt;&lt;br /&gt;&lt;br /&gt;アクションタグ&lt;br /&gt;&lt;br /&gt;式言語（EL)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-6149175389806395373?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/6149175389806395373/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=6149175389806395373' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/6149175389806395373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/6149175389806395373'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/34.html' title='JSP (Java Server Pages)'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-2839230388023382561</id><published>2007-10-16T17:05:00.005+09:00</published><updated>2007-10-21T20:03:04.192+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>ディレクティブ（指令）</title><content type='html'>使用できるディレクティブ要素&lt;br /&gt;@include　（外部ファイルのインクルード）&lt;br /&gt;@page　（ページに関する情報を定義）&lt;br /&gt;@taglib　（タグライブラリに関する情報を定義）&lt;br /&gt;&lt;br /&gt;タグファイルで使用できるディレクティブ&lt;br /&gt;@attribute&lt;br /&gt;@tag&lt;br /&gt;@variable&lt;br /&gt;&lt;br /&gt;（例）&lt;br /&gt;&amp;lt;%@&amp;nbsp;page&amp;nbsp;contentType="text/html;charset=Shift_JIS"&amp;nbsp;%&amp;gt;&lt;br /&gt;&lt;br /&gt;ディレクティブ要素をまとめて記述する場合&lt;br /&gt;&amp;lt;%@&amp;nbsp;page&amp;nbsp;contentType="text/html;charset=Shift_JIS"&lt;br /&gt;&amp;nbsp;import="java.io.*"&amp;nbsp;%&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;@page&lt;br /&gt;autoFLush　（デフォルト&amp;nbsp;true)&lt;br /&gt;buffer　（デフォルト&amp;nbsp;8kb)&lt;br /&gt;contentType　（ex.&amp;nbsp;text/html;charset=Shift_JIS)&lt;br /&gt;errorPage　（エラー時に表示するページを指定）&lt;br /&gt;extends　（スーパークラスを定義）&lt;br /&gt;import&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;（パッケージのインポートを宣言）&lt;br /&gt;info　（ページ情報）&lt;br /&gt;isELIgnored　（式言語を無視するかどうか。デフォルト&amp;nbsp;false）&lt;br /&gt;isErrorPage　（このページがエラーページかどうか。デフォルト&amp;nbsp;false）&lt;br /&gt;isThreadSafe　（スレッドセーフ。デフォルト&amp;nbsp;true）&lt;br /&gt;language　（Java）&lt;br /&gt;pageEncoding　（文字エンコーディング）&lt;br /&gt;session　（セッションを有効にするかどうか。デフォルト&amp;nbsp;true）&lt;br /&gt;&lt;br /&gt;@include&lt;br /&gt;&amp;lt;%@&amp;nbsp;include&amp;nbsp;file="header.jsp"&amp;nbsp;%&amp;gt;&lt;br /&gt;インクルードされてからコンパイルされる&lt;br /&gt;&lt;br /&gt;アクションタグ&lt;br /&gt;&amp;lt;jsp:include&amp;nbsp;page="header.jsp"&amp;nbsp;flush="true"&amp;nbsp;/&amp;gt;&lt;br /&gt;別々にファイルがコンパイルされた後にインクルードされる。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;a.jsp&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;%!&amp;nbsp;int&amp;nbsp;x;&amp;nbsp;%&amp;gt;&lt;br /&gt;&amp;lt;%@include&amp;nbsp;file="b.jsp"&amp;nbsp;%&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;b.jsp&lt;br /&gt;&amp;lt;%=x&amp;nbsp;%&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;0&lt;br /&gt;&lt;br /&gt;（注）jsp:include&amp;nbsp;を使うと&amp;nbsp;b.jsp&amp;nbsp;の&amp;nbsp;x&amp;nbsp;が宣言されていないのでコンパイルできない。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-2839230388023382561?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/2839230388023382561/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=2839230388023382561' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/2839230388023382561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/2839230388023382561'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/33.html' title='ディレクティブ（指令）'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-7728890389659584668</id><published>2007-10-16T17:05:00.003+09:00</published><updated>2007-10-21T20:04:07.795+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>宣言部</title><content type='html'>宣言部で変数の宣言などを行います。&lt;br /&gt;宣言部の変数は&amp;nbsp;.java&amp;nbsp;ファイルではインスタンス変数またはクラス変数となります。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;%!&amp;nbsp;int&amp;nbsp;x;&amp;nbsp;%&amp;gt;&lt;br /&gt;&amp;lt;%&amp;nbsp;x&amp;nbsp;=&amp;nbsp;100;&amp;nbsp;%&amp;gt;&lt;br /&gt;The&amp;nbsp;number&amp;nbsp;is&amp;nbsp;&amp;lt;%=x%&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;The&amp;nbsp;number&amp;nbsp;is&amp;nbsp;100&lt;br /&gt;&lt;br /&gt;宣言部には&amp;nbsp;jspInit&amp;nbsp;と&amp;nbsp;jspDestroy&amp;nbsp;メソッドを記述できます。&lt;br /&gt;jspInit&amp;nbsp;と&amp;nbsp;jspDestroy&amp;nbsp;メソッドは&amp;nbsp;.java&amp;nbsp;ファイルにそのまま変換されます。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;%!&amp;nbsp;&lt;br /&gt;int&amp;nbsp;x;&amp;nbsp;&lt;br /&gt;public&amp;nbsp;void&amp;nbsp;jspInit()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x&amp;nbsp;=&amp;nbsp;100;&lt;br /&gt;}&lt;br /&gt;%&amp;gt;&lt;br /&gt;The&amp;nbsp;number&amp;nbsp;is&amp;nbsp;&amp;lt;%=x%&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;The&amp;nbsp;number&amp;nbsp;is&amp;nbsp;100&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-7728890389659584668?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/7728890389659584668/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=7728890389659584668' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/7728890389659584668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/7728890389659584668'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/32.html' title='宣言部'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-5277537826286382863</id><published>2007-10-16T17:05:00.001+09:00</published><updated>2007-10-21T20:04:57.724+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>スクリプトレット</title><content type='html'>スクリプトレットは Java のプログラムを記述できます。&lt;br /&gt;.java ファイルへ変換されると _jspService メソッドに記述されます。&lt;br /&gt;&lt;br /&gt;&amp;lt;% x = 100; %&amp;gt;&lt;br /&gt;↓&lt;br /&gt;public void _jspService(HttpServletRequest request, HttpServletResponse response)&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throws java.io.IOException, ServletException {&lt;br /&gt;...&lt;br /&gt;x = 100;&lt;br /&gt;...&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-5277537826286382863?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/5277537826286382863/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=5277537826286382863' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/5277537826286382863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/5277537826286382863'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/31.html' title='スクリプトレット'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-5408785449274839913</id><published>2007-10-16T17:04:00.021+09:00</published><updated>2007-10-21T20:05:39.334+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>式</title><content type='html'>&amp;lt;%= .... %&amp;gt;&lt;br /&gt;&lt;br /&gt;（例）&lt;br /&gt;&amp;lt;%=request.getParameter("name")%&amp;gt;&lt;br /&gt;&lt;br /&gt;単純な式を出力できます。&lt;br /&gt;変数の宣言はできません。&lt;br /&gt;サーブレットの out.print にあたります。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-5408785449274839913?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/5408785449274839913/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=5408785449274839913' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/5408785449274839913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/5408785449274839913'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/30.html' title='式'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-8070291264435687361</id><published>2007-10-16T17:04:00.019+09:00</published><updated>2007-10-21T20:13:06.797+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>アクションタグ useBean</title><content type='html'>JSP&amp;nbsp;では標準で使えるアクションタグがあります。&lt;br /&gt;アクションタグを使うことで&amp;nbsp;Java&amp;nbsp;のコードを減らして可読性、保守性を高める。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;jsp:useBean&lt;/strong&gt;&lt;br /&gt;JSP&amp;nbsp;ページ内で&amp;nbsp;JavaBean&amp;nbsp;クラスのインスタンスを取得または生成する。&lt;br /&gt;&lt;br /&gt;＜構文＞&lt;br /&gt;&amp;lt;jsp:useBean&amp;nbsp;id="obj"&amp;nbsp;class="sample.SCWCDBean"&amp;nbsp;scope="request&amp;nbsp;/&amp;gt;&lt;br /&gt;obj&amp;nbsp;という&amp;nbsp;SCWCD&amp;nbsp;のオブジェクトを&amp;nbsp;JSP&amp;nbsp;ページで利用できる。&lt;br /&gt;&lt;br /&gt;＜useBean&amp;nbsp;の属性＞&lt;br /&gt;id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;オブジェクト名&lt;br /&gt;class&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;オブジェクトのクラス&lt;br /&gt;type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;オブジェクトの型（インターフェース使用可）&lt;br /&gt;beanName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;オブジェクトの名前&lt;br /&gt;scope&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;スコープ（デフォルト&amp;nbsp;page）&lt;br /&gt;&lt;br /&gt;＜scope&amp;nbsp;について＞&lt;br /&gt;page&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;現在のページ&lt;br /&gt;request&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;現在のページ&amp;nbsp;＋&amp;nbsp;include&amp;nbsp;先&amp;nbsp;+&amp;nbsp;forward&amp;nbsp;先&lt;br /&gt;session&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;セッション領域&lt;br /&gt;application&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;アプリケーション全域&lt;br /&gt;&lt;br /&gt;＜ルール＞&lt;br /&gt;・class&amp;nbsp;属性を使うとスコープにそのクラスのオブジェクトが見つかるとそれを利用し、見つからないと新しく作成する。&lt;br /&gt;・type&amp;nbsp;属性を使うとスコープにそのクラスのオブジェクト、またはそのインターフェース型にキャストできるオブジェクトを見つけてその「型」で利用します。&lt;br /&gt;見つからない場合はインスタンスを作成せず、InstantiationException&amp;nbsp;が投げられる。&lt;br /&gt;・type&amp;nbsp;属性と&amp;nbsp;class&amp;nbsp;属性を同時に使うと&amp;nbsp;オブジェクトが&amp;nbsp;type&amp;nbsp;属性の型にキャストされる。&lt;br /&gt;・beanName&amp;nbsp;属性は&amp;nbsp;type&amp;nbsp;属性との組み合わせのみで使用できる。&lt;br /&gt;・beanName&amp;nbsp;属性はオブジェクトを作成する際に&amp;nbsp;class&amp;nbsp;属性の代わりとなるので&amp;nbsp;class&amp;nbsp;属性と組合すことはできない。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;index.jsp&lt;br /&gt;&amp;lt;%@&amp;nbsp;page&amp;nbsp;contentType="text/html;charset=Shift_JIS"%&amp;gt;&lt;br /&gt;&amp;lt;jsp:useBean&amp;nbsp;id="obj"&amp;nbsp;class="beans.SCWCDBean"&amp;nbsp;scope="session"&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;a&amp;nbsp;href="/SCWCD/usebeanSample.jsp"&amp;gt;usebeanSample.jsp&amp;lt;/a&amp;gt;&amp;lt;br&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;________&lt;br /&gt;&lt;br /&gt;usebeanSample.jsp&lt;br /&gt;&amp;lt;%@&amp;nbsp;page&amp;nbsp;contentType="text/html;charset=Shift_JIS"%&amp;gt;&lt;br /&gt;&amp;lt;jsp:useBean&amp;nbsp;id="obj"&amp;nbsp;type="beans.SJCPCertified"&amp;nbsp;scope="session"&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;SCJP&amp;nbsp;獲得&amp;nbsp;:&amp;nbsp;&amp;lt;%=obj.status()%&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;________&lt;br /&gt;&lt;br /&gt;SJCPCertified.java&lt;br /&gt;package&amp;nbsp;beans;&lt;br /&gt;public&amp;nbsp;interface&amp;nbsp;SJCPCertified&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;boolean&amp;nbsp;SJCPCERTIFIED&amp;nbsp;=&amp;nbsp;true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;boolean&amp;nbsp;status();&lt;br /&gt;}&lt;br /&gt;________&lt;br /&gt;&lt;br /&gt;SCWCDBean.java&lt;br /&gt;package&amp;nbsp;beans;&lt;br /&gt;import&amp;nbsp;java.io.Serializable;&lt;br /&gt;@SuppressWarnings("serial")&lt;br /&gt;public&amp;nbsp;class&amp;nbsp;SCWCDBean&amp;nbsp;implements&amp;nbsp;Serializable,&amp;nbsp;SJCPCertified&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;SCWCDBean()&amp;nbsp;{}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;String&amp;nbsp;name;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;int&amp;nbsp;score;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;String&amp;nbsp;getName()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;name;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;void&amp;nbsp;setName(String&amp;nbsp;name)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.name&amp;nbsp;=&amp;nbsp;name;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;int&amp;nbsp;getScore()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;score;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;void&amp;nbsp;setScore(int&amp;nbsp;score)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.score&amp;nbsp;=&amp;nbsp;score;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;boolean&amp;nbsp;status()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;SJCPCERTIFIED;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;SCJP&amp;nbsp;獲得&amp;nbsp;:&amp;nbsp;true&lt;br /&gt;&lt;br /&gt;usebeanSample.jsp&amp;nbsp;で&amp;nbsp;SJCPCertified&amp;nbsp;型のオブジェクトが獲得されている。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-8070291264435687361?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/8070291264435687361/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=8070291264435687361' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/8070291264435687361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/8070291264435687361'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/29.html' title='アクションタグ useBean'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-895353766553477232</id><published>2007-10-16T17:04:00.017+09:00</published><updated>2007-10-21T20:20:37.333+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>setProperty / getProperty</title><content type='html'>&lt;strong&gt;jsp:getProperty&lt;br /&gt;jsp:setProperty&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;これらは&amp;nbsp;useBean&amp;nbsp;タグと組み合わせて使用します。&lt;br /&gt;Bean&amp;nbsp;のプロパティの取得と設定を行います。&lt;br /&gt;Bean&amp;nbsp;にある&amp;nbsp;setter&amp;nbsp;/&amp;nbsp;getter&amp;nbsp;メソッドが利用されます。&lt;br /&gt;setter&amp;nbsp;/&amp;nbsp;getter&amp;nbsp;メソッドは&amp;nbsp;setプロパティ名&amp;nbsp;/&amp;nbsp;getプロパティ名&amp;nbsp;にします。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;SCWCDBean.java&lt;br /&gt;package&amp;nbsp;beans;&lt;br /&gt;import&amp;nbsp;java.io.Serializable;&lt;br /&gt;@SuppressWarnings("serial")&lt;br /&gt;public&amp;nbsp;class&amp;nbsp;SCWCDBean&amp;nbsp;implements&amp;nbsp;Serializable,&amp;nbsp;SJCPCertified&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;SCWCDBean()&amp;nbsp;{}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;String&amp;nbsp;name;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;int&amp;nbsp;score;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;String&amp;nbsp;getName()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;name;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;void&amp;nbsp;setName(String&amp;nbsp;name)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.name&amp;nbsp;=&amp;nbsp;name;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;int&amp;nbsp;getScore()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;score;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;void&amp;nbsp;setScore(int&amp;nbsp;score)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.score&amp;nbsp;=&amp;nbsp;score;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;boolean&amp;nbsp;status()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;SJCPCERTIFIED;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;＜JSP&amp;nbsp;ページからプロパティをセット＞&lt;br /&gt;&lt;em&gt;jsp:setProperty&amp;nbsp;の属性&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;name&lt;/strong&gt;&amp;nbsp;:&amp;nbsp;useBean&amp;nbsp;で&amp;nbsp;id&amp;nbsp;で指定したオブジェクト名になります。&lt;br /&gt;&lt;strong&gt;propetry&lt;/strong&gt;&amp;nbsp;:&amp;nbsp;Bean&amp;nbsp;のプロパティ名&lt;br /&gt;&lt;strong&gt;param&lt;/strong&gt;&amp;nbsp;:&amp;nbsp;リクエストパラメータの名前。*&amp;nbsp;を使用すると&amp;nbsp;property&amp;nbsp;名と同名のパラメータがセットされる。&lt;br /&gt;&lt;strong&gt;value&lt;/strong&gt;&amp;nbsp;:&amp;nbsp;プロパティに値をセットする&lt;br /&gt;&lt;br /&gt;＜JSP&amp;nbsp;ページからプロパティを取得＞&lt;br /&gt;&lt;em&gt;jsp:getProperty&amp;nbsp;の属性&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;name&lt;/strong&gt;&amp;nbsp;:&amp;nbsp;useBean&amp;nbsp;で&amp;nbsp;id&amp;nbsp;で指定したオブジェクト名になります。&lt;br /&gt;&lt;strong&gt;property&lt;/strong&gt;&amp;nbsp;:&amp;nbsp;Bean&amp;nbsp;のプロパティ名&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;index.jsp&lt;br /&gt;&amp;lt;a&amp;nbsp;href="property.jsp?name=MrScwcd&amp;amp;score=62"&amp;gt;property&amp;lt;/a&amp;gt;&amp;lt;br&amp;nbsp;/&amp;gt;&lt;br /&gt;&lt;br /&gt;property.jsp&lt;br /&gt;&amp;lt;jsp:useBean&amp;nbsp;id="obj"&amp;nbsp;class="beans.SCWCDBean"&amp;gt;&lt;br /&gt;&amp;lt;&lt;strong&gt;jsp:setProperty&lt;/strong&gt;&amp;nbsp;name="obj"&amp;nbsp;property="*"&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;lt;/jsp:useBean&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;Name&amp;nbsp;:&amp;nbsp;&amp;lt;&lt;strong&gt;jsp:getProperty&lt;/strong&gt;&amp;nbsp;name="obj"&amp;nbsp;property="name"&amp;nbsp;/&amp;gt;&amp;lt;br&amp;nbsp;/&amp;gt;&lt;br /&gt;Score&amp;nbsp;:&amp;nbsp;&amp;lt;&lt;strong&gt;jsp:getProperty&lt;/strong&gt;&amp;nbsp;name="obj"&amp;nbsp;property="score"&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;Name&amp;nbsp;:&amp;nbsp;MrScwcd&lt;br /&gt;Score&amp;nbsp;:&amp;nbsp;62&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-895353766553477232?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/895353766553477232/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=895353766553477232' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/895353766553477232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/895353766553477232'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/28.html' title='setProperty / getProperty'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-4951105609494068201</id><published>2007-10-16T17:04:00.015+09:00</published><updated>2007-10-21T20:28:43.953+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>XML ベース JSP で使うアクションタグ</title><content type='html'>JSP&amp;nbsp;ファイルは完全な&amp;nbsp;XML&amp;nbsp;形式で記述できます。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;XML&amp;nbsp;宣言&lt;/strong&gt;&lt;br /&gt;&amp;lt;?xml&amp;nbsp;version="1.0"&amp;nbsp;encoding="Shift_JIS"?&amp;gt;&lt;br /&gt;を記述します。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ルート&lt;/strong&gt;&lt;br /&gt;&amp;lt;jsp:root&amp;gt;&lt;br /&gt;xmlns:jsp="http://java.sun.com/JSP/Page"&amp;nbsp;version="2.0"&amp;nbsp;を指定します（JSP&amp;nbsp;2.0&amp;nbsp;の場合）。&lt;br /&gt;jsp:root&amp;nbsp;は必須です。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ディレクティブ（指令）&lt;/strong&gt;&lt;br /&gt;&amp;lt;jsp:directive.要素&amp;nbsp;属性&amp;nbsp;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;宣言部&lt;/strong&gt;&lt;br /&gt;&amp;lt;jsp:declaration&amp;gt;&amp;lt;/jsp:declaration&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;スクリプトレット&lt;/strong&gt;&lt;br /&gt;&amp;lt;jsp:scriptlet&amp;gt;&amp;lt;/jsp:scriptlet&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;式&lt;/strong&gt;&lt;br /&gt;&amp;lt;jsp:expression&amp;gt;&amp;lt;/jsp:expression&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;テキスト&lt;/strong&gt;&lt;br /&gt;&amp;lt;jsp:text&amp;gt;&amp;lt;/jsp:text&amp;gt;&lt;br /&gt;&lt;br /&gt;XML&amp;nbsp;&lt;strong&gt;予約文字の処理&lt;/strong&gt;&lt;br /&gt;XML&amp;nbsp;予約文字は&amp;nbsp;CDATA&amp;nbsp;セクションで囲みます。&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;その他&lt;/strong&gt;&lt;br /&gt;&amp;lt;jsp:element&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;要素の定義&lt;br /&gt;&amp;lt;jsp:attribute&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;属性の定義&lt;br /&gt;&amp;lt;jsp:body&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;属性に対するボディの定義&lt;br /&gt;&amp;lt;jsp:output&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;出力形式の定義&lt;br /&gt;&amp;lt;jsp:forward&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;転送&lt;br /&gt;&amp;lt;jsp:include&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;インクルード&lt;br /&gt;&amp;lt;jsp:plugin&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;アップレットなどの実行&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;&amp;lt;?xml&amp;nbsp;version="1.0"&amp;nbsp;encoding="Shift_JIS"?&amp;gt;&lt;br /&gt;&amp;lt;jsp:root&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xmlns:jsp="http://java.sun.com/JSP/Page"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;version="2.0"&amp;gt;&lt;br /&gt;&amp;lt;jsp:directive.page&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;contentType="text/html;&amp;nbsp;charset=Shift_JIS"&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;lt;jsp:text&amp;gt;&amp;lt;&amp;amp;#33;[CDATA[&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;body&amp;gt;&lt;br /&gt;]]&amp;gt;&amp;lt;/jsp:text&amp;gt;&lt;br /&gt;&amp;lt;jsp:declaration&amp;gt;int&amp;nbsp;x;&amp;lt;/jsp:declaration&amp;gt;&lt;br /&gt;&amp;lt;jsp:scriptlet&amp;gt;x&amp;nbsp;=&amp;nbsp;100;&amp;lt;/jsp:scriptlet&amp;gt;&lt;br /&gt;&amp;lt;jsp:text&amp;gt;The&amp;nbsp;number&amp;nbsp;is&amp;nbsp;&amp;lt;/jsp:text&amp;gt;&lt;br /&gt;&amp;lt;jsp:expression&amp;gt;x&amp;lt;/jsp:expression&amp;gt;&lt;br /&gt;&amp;lt;jsp:text&amp;gt;&amp;lt;&amp;amp;#33;[CDATA[&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/html&amp;gt;&lt;br /&gt;]]&amp;gt;&amp;lt;/jsp:text&amp;gt;&amp;nbsp;&lt;br /&gt;&amp;lt;/jsp:root&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;The&amp;nbsp;number&amp;nbsp;is&amp;nbsp;100&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-4951105609494068201?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/4951105609494068201/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=4951105609494068201' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/4951105609494068201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/4951105609494068201'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/27.html' title='XML ベース JSP で使うアクションタグ'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-3611992762807131924</id><published>2007-10-16T17:04:00.013+09:00</published><updated>2007-10-21T20:25:50.211+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>その他のアクションタグ</title><content type='html'>その他のアクションタグ&lt;br /&gt;&lt;br /&gt;タグファイルで使用するアクションタグ&lt;br /&gt;&lt;br /&gt;jsp:doBody&lt;br /&gt;jsp:invoke&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-3611992762807131924?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/3611992762807131924/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=3611992762807131924' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/3611992762807131924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/3611992762807131924'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/26.html' title='その他のアクションタグ'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-3986045986626091810</id><published>2007-10-16T17:04:00.011+09:00</published><updated>2007-10-21T20:29:55.350+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>暗黙オブジェクト</title><content type='html'>JSP&amp;nbsp;では宣言しなくても使用できるオブジェクトがあります。&lt;br /&gt;これにより記述がシンプルになります。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;＜主な暗黙オブジェクト＞&lt;br /&gt;pageContext　（javax.servlet.ServletContext）&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;アプリケーション共通の情報を管理&lt;br /&gt;config　（javax.servlet.ServletConfig）&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;初期化パラメータへアクセスできる&lt;br /&gt;exception　（java.lang.Throwable）&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@page&amp;nbsp;ディレクティブで&amp;nbsp;isErrorPage&amp;nbsp;が&amp;nbsp;true&amp;nbsp;の場合のみ使用可能&lt;br /&gt;out　（javax.servlet.jsp.JspWriter）&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;出力手段&lt;br /&gt;page　（java.lang.Object）&lt;br /&gt;application　（javax.servlet.ServletContext）&lt;br /&gt;request　（javax.servlet.http.ServletRequest）&lt;br /&gt;response　（javax.servlet.http.ServletResponse）&lt;br /&gt;session　（javax.servlet.http.HttpSession）&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;下記はコンパイルエラーになります。&lt;br /&gt;&lt;br /&gt;&amp;lt;%@&amp;nbsp;page&amp;nbsp;session="false"&amp;nbsp;%&amp;gt;&lt;br /&gt;&amp;lt;%&amp;nbsp;session.setAttribute("test",&amp;nbsp;"test");&amp;nbsp;%&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-3986045986626091810?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/3986045986626091810/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=3986045986626091810' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/3986045986626091810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/3986045986626091810'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/25.html' title='暗黙オブジェクト'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-3793752413723314407</id><published>2007-10-16T17:04:00.009+09:00</published><updated>2007-11-09T21:28:32.094+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>式言語（EL）</title><content type='html'>式言語は英語では Expression Language といいます。&lt;br /&gt;比較的簡易な記述で式を出力できるメリットがあります。&lt;br /&gt;${ } の形式で記述する。&lt;br /&gt;&lt;br /&gt;式言語では下記の暗黙オブジェクトが利用できます。&lt;br /&gt;pageContext&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;         pageContext を参照できます。&lt;br /&gt;pageScope&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;         page スコープ属性の Map を返します。&lt;br /&gt;requestScope&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;         request スコープ属性の Map を返します。&lt;br /&gt;sessionScope&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;         session スコープ属性の Map を返します。&lt;br /&gt;applicationScope&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;         applicaton スコープ属性の Map を返します。&lt;br /&gt;param&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;requestパラメータの Map を返します。&lt;br /&gt;paramValues&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;requestパラメータの Map を返します。&lt;br /&gt;                                      &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value は String 型配列。&lt;br /&gt;header        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;request ヘッダーの Map を返します。&lt;br /&gt;headerValues&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;request ヘッダーの Map を返します。&lt;br /&gt;                               &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value は String 型配列&lt;br /&gt;cookie&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Cookie の Map。&lt;br /&gt;                    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;同じ名前が共有されている場合&lt;br /&gt;                     &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HttpServletRequest#getCookies の配列の&lt;br /&gt;                    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;最初の要素をvalue として格納する。&lt;br /&gt;initParam&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;アプリケーション初期化パラメータの Map を返します。&lt;br /&gt;&lt;br /&gt;Map へのアクセス方法&lt;br /&gt;（例）&lt;br /&gt;${requestScope.key}        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;request.getAttribute("key")&lt;br /&gt;${requestScope['key']}        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;request.getAttribute("key")&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-3793752413723314407?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/3793752413723314407/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=3793752413723314407' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/3793752413723314407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/3793752413723314407'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/24.html' title='式言語（EL）'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-4278984549312928569</id><published>2007-10-16T17:04:00.007+09:00</published><updated>2007-10-21T20:50:50.564+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>式言語の演算子</title><content type='html'>式言語ではエイリアス（別名）を持つ演算子を使用できる&lt;br /&gt;（例）/&amp;nbsp;は&amp;nbsp;div&lt;br /&gt;&lt;br /&gt;下記は式言語で使用できる演算子とその優先順位です。&lt;br /&gt;&lt;br /&gt;[]&amp;nbsp;.&amp;nbsp;&lt;br /&gt;()&amp;nbsp;（優先順位の変更）&amp;nbsp;&amp;nbsp;&lt;br /&gt;-&amp;nbsp;(単項)&amp;nbsp;not&amp;nbsp;!&amp;nbsp;empty&amp;nbsp;&amp;nbsp;&lt;br /&gt;*&amp;nbsp;/&amp;nbsp;div&amp;nbsp;%&amp;nbsp;mod&amp;nbsp;&amp;nbsp;&lt;br /&gt;+&amp;nbsp;-&amp;nbsp;(2&amp;nbsp;項)&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;lt;&amp;nbsp;&amp;gt;&amp;nbsp;&amp;lt;=&amp;nbsp;&amp;gt;=&amp;nbsp;lt&amp;nbsp;gt&amp;nbsp;le&amp;nbsp;ge&amp;nbsp;&lt;br /&gt;==&amp;nbsp;!=&amp;nbsp;eq&amp;nbsp;ne&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;amp;&amp;amp;&amp;nbsp;and&amp;nbsp;&amp;nbsp;&lt;br /&gt;||&amp;nbsp;or&amp;nbsp;&amp;nbsp;&lt;br /&gt;?&amp;nbsp;:&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;&amp;lt;%@&amp;nbsp;taglib&amp;nbsp;prefix="c"&amp;nbsp;uri="http://java.sun.com/jsp/jstl/core"&amp;nbsp;%&amp;gt;&lt;br /&gt;&amp;lt;%!&amp;nbsp;int&amp;nbsp;x&amp;nbsp;=&amp;nbsp;5;&amp;nbsp;String&amp;nbsp;s&amp;nbsp;=&amp;nbsp;"5";&amp;nbsp;%&amp;gt;&lt;br /&gt;&amp;lt;%&amp;nbsp;int&amp;nbsp;a&amp;nbsp;=&amp;nbsp;5;&amp;nbsp;%&amp;gt;&lt;br /&gt;&amp;lt;c:set&amp;nbsp;var="v"&amp;nbsp;value="5"&amp;nbsp;/&amp;gt;&lt;br /&gt;${5&amp;nbsp;+&amp;nbsp;5}&amp;lt;br&amp;nbsp;/&amp;gt;&lt;br /&gt;${'5'&amp;nbsp;+&amp;nbsp;5}&amp;lt;br&amp;nbsp;/&amp;gt;&lt;br /&gt;${x&amp;nbsp;+&amp;nbsp;5}&amp;lt;br&amp;nbsp;/&amp;gt;&lt;br /&gt;${s&amp;nbsp;+&amp;nbsp;5}&amp;lt;br&amp;nbsp;/&amp;gt;&lt;br /&gt;${v&amp;nbsp;+&amp;nbsp;5}&amp;lt;br&amp;nbsp;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;10&lt;br /&gt;10&lt;br /&gt;5&lt;br /&gt;5&lt;br /&gt;10&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-4278984549312928569?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/4278984549312928569/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=4278984549312928569' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/4278984549312928569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/4278984549312928569'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/23.html' title='式言語の演算子'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-5114568111248926895</id><published>2007-10-16T17:04:00.005+09:00</published><updated>2007-10-27T14:54:35.324+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>式言語から静的メソッドの呼び出し</title><content type='html'>JSP&amp;nbsp;2.0&amp;nbsp;以降では式言語から静的メソッドを呼び出せます。&lt;br /&gt;しかし、複雑な処理を行うにはサーブレットの使用が断然推奨されます。&lt;br /&gt;式言語から呼び出す静的メソッドはあくまでシンプルな機能が推奨されます。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜静的メソッドの配備＞&lt;/strong&gt;&lt;br /&gt;package&amp;nbsp;scwcd;&lt;br /&gt;&lt;br /&gt;public&amp;nbsp;class&amp;nbsp;ScwcdFunction&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;&lt;strong&gt;static&lt;/strong&gt;&amp;nbsp;String&amp;nbsp;message(String&amp;nbsp;name)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;"You&amp;nbsp;are&amp;nbsp;SCWCD,&amp;nbsp;"&amp;nbsp;+&amp;nbsp;name&amp;nbsp;+&amp;nbsp;"!";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜TLD&amp;nbsp;ファイルの配置＞&lt;/strong&gt;&lt;br /&gt;WEB-INF/tlds&amp;nbsp;以下に&amp;nbsp;scwcdTaglib.tld&amp;nbsp;ファイルを配置する&lt;br /&gt;scwcdTaglib.tld&lt;br /&gt;&amp;lt;taglib&amp;gt;&lt;br /&gt;&amp;lt;short-name&amp;gt;certified&amp;lt;/short-name&amp;gt;&lt;br /&gt;&amp;lt;function&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;name&amp;gt;message&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;function-class&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;scwcd.ScwcdFunction&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/function-class&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;function-signature&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;java.lang.String&amp;nbsp;message(java.lang.String)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/function-signature&amp;gt;&lt;br /&gt;&amp;lt;/function&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜このメソッドの呼び出し方＞&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;%@&amp;nbsp;taglib&amp;nbsp;prefix="certified"&amp;nbsp;uri="/WEB-INF/tlds/scwcdTaglib.tld"&amp;nbsp;%&amp;gt;&lt;br /&gt;${certified:message("Takashi")}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;You&amp;nbsp;are&amp;nbsp;SCWCD,&amp;nbsp;Takashi!&lt;br /&gt;&lt;br /&gt;taglib&amp;nbsp;uri&amp;nbsp;を相対&amp;nbsp;URI&amp;nbsp;にするには&amp;nbsp;web.xml&amp;nbsp;で下記のように設定してその&amp;nbsp;URI&amp;nbsp;を使います。&lt;br /&gt;web.xml&lt;br /&gt;&amp;lt;taglib&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;taglib-uri&amp;gt;/scwcdTaglib&amp;lt;/taglib-uri&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;taglib-location&amp;gt;/WEB-INF/tlds/scwcdTaglib.tld&amp;lt;/taglib-location&amp;gt;&lt;br /&gt;&amp;lt;/taglib&amp;gt;&lt;br /&gt;&lt;br /&gt;これで&lt;br /&gt;&amp;lt;%@&amp;nbsp;taglib&amp;nbsp;prefix="certified"&amp;nbsp;uri="/scwcdTaglib"&amp;nbsp;%&amp;gt;&lt;br /&gt;とすることができます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-5114568111248926895?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/5114568111248926895/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=5114568111248926895' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/5114568111248926895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/5114568111248926895'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/22.html' title='式言語から静的メソッドの呼び出し'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-8229885455946451131</id><published>2007-10-16T17:04:00.003+09:00</published><updated>2007-10-21T21:00:06.981+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>JSTL</title><content type='html'>JSP&amp;nbsp;Standard&amp;nbsp;Tag&amp;nbsp;Library&amp;nbsp;は&amp;nbsp;JSP&amp;nbsp;の汎用的な機能を実装するタグライブラリです。&lt;br /&gt;式言語やアクションタグと組み合わせて使うとより一層&amp;nbsp;JSP&amp;nbsp;を簡易に記述できます。&lt;br /&gt;&lt;br /&gt;JSTL&amp;nbsp;には下記の５つのタグライブラリがあります。&lt;br /&gt;&lt;br /&gt;Core&lt;br /&gt;Database&lt;br /&gt;l18n&lt;br /&gt;Xml&lt;br /&gt;Function&lt;br /&gt;&lt;br /&gt;＜JSTL&amp;nbsp;の設定&amp;nbsp;-&amp;nbsp;Windows&amp;nbsp;XP&amp;nbsp;編＞&lt;br /&gt;jar&amp;nbsp;ファイルの入手&lt;br /&gt;現時点の最新バージョンは&amp;nbsp;1.1.2&amp;nbsp;&lt;br /&gt;&lt;a href='http://jakarta.apache.org/site/downloads/downloads_taglibs-standard.cgi' target='_blank'&gt;http://jakarta.apache.org/site/downloads/downloads_taglibs-standard.cgi&lt;/a&gt;&lt;br /&gt;zip&amp;nbsp;ファイルを解凍すると&amp;nbsp;lib&amp;nbsp;フォルダに&amp;nbsp;jstl.jar&amp;nbsp;と&amp;nbsp;standard.jar&amp;nbsp;がある。&lt;br /&gt;&lt;br /&gt;jar&amp;nbsp;ファイルの配置&lt;br /&gt;jar&amp;nbsp;ファイルは&amp;nbsp;WEB-INF/lib&amp;nbsp;フォルダに配置します。&lt;br /&gt;&lt;br /&gt;＜JSP&amp;nbsp;から&amp;nbsp;JSTL&amp;nbsp;を使用する＞&lt;br /&gt;@taglib&amp;nbsp;&lt;a href="/2007/10/33.html"&gt;ディレクティブ&lt;/a&gt;を宣言する。&lt;br /&gt;&lt;br /&gt;Core&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;lt;@&amp;nbsp;taglib&amp;nbsp;prefix="c"&amp;nbsp;uri="http://java.sun.com/jsp/jstl/core"&amp;nbsp;%&amp;gt;&lt;br /&gt;l18n&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;lt;@&amp;nbsp;taglib&amp;nbsp;prefix="fmt"&amp;nbsp;uri="http://java.sun.com/jsp/jstl/fmt"&amp;nbsp;%&amp;gt;&lt;br /&gt;Database&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;lt;@&amp;nbsp;taglib&amp;nbsp;prefix="sql"&amp;nbsp;uri="http://java.sun.com/jsp/jstl/sql"&amp;nbsp;%&amp;gt;&lt;br /&gt;XML&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;lt;%@&amp;nbsp;taglib&amp;nbsp;prefix="x"&amp;nbsp;uri="http://java.sun.com/jsp/jstl/xml"&amp;nbsp;%&amp;gt;&amp;nbsp;&lt;br /&gt;Function&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;lt;@&amp;nbsp;taglib&amp;nbsp;prefix="fn"&amp;nbsp;uri="http://java.sun.com/jsp/jstl/functions"&amp;nbsp;%&amp;gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;以上で&amp;nbsp;JSTL&amp;nbsp;は使用できるようになります。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-8229885455946451131?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/8229885455946451131/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=8229885455946451131' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/8229885455946451131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/8229885455946451131'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/21.html' title='JSTL'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-441676830578052576</id><published>2007-10-16T17:04:00.001+09:00</published><updated>2007-10-21T21:13:26.046+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>JSTL Core</title><content type='html'>JSTL&amp;nbsp;Core&amp;nbsp;タグライブラリで使用できる主なタグ&lt;br /&gt;&lt;strong&gt;&amp;lt;c:set&amp;nbsp;var="obj"&amp;nbsp;value="value"&amp;nbsp;/&amp;gt;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;変数の設定&lt;br /&gt;&lt;strong&gt;&amp;lt;c:remove&amp;nbsp;var"obj"&amp;nbsp;scope="page"&amp;nbsp;/&amp;gt;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;変数の削除&lt;br /&gt;&lt;strong&gt;&amp;lt;c:out&amp;nbsp;value="${obj}"&amp;nbsp;/&amp;gt;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;変数の出力&lt;br /&gt;&lt;strong&gt;&amp;lt;c:import&amp;nbsp;var="page1"&amp;nbsp;url="/header.jsp"&amp;nbsp;charEncoding="UTF-8"&amp;nbsp;/&amp;gt;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;外部ファイルのインポート&lt;br /&gt;&lt;strong&gt;&amp;lt;c:redirect&amp;nbsp;url="/index.jsp"&amp;nbsp;/&amp;gt;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;リダイレクト。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/&amp;nbsp;で始まる&amp;nbsp;url&amp;nbsp;はコンテキストルート基準。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;属性&amp;nbsp;context&amp;nbsp;でコンテキストを変更する。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;c:redirect&amp;nbsp;context="/sjcp"&amp;nbsp;url="/index.html"&amp;nbsp;/&amp;gt;&lt;br /&gt;&lt;strong&gt;&amp;lt;c:url&amp;gt;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;URL&amp;nbsp;エンコード&lt;br /&gt;&lt;strong&gt;&amp;lt;c:catch&amp;nbsp;var="message"&amp;gt;...&amp;lt;/c:catch&amp;gt;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;例外のキャッチ&lt;br /&gt;&lt;strong&gt;&amp;lt;c:forEach&amp;nbsp;var="name"&amp;nbsp;items="${paramValues.names}"&amp;gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&amp;lt;c:forEach&amp;nbsp;var="i"&amp;nbsp;begin="0"&amp;nbsp;end="5"&amp;nbsp;step="1"&amp;gt;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;繰り返し処理&lt;br /&gt;&lt;strong&gt;&amp;lt;c:choose&amp;gt;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;分岐処理&lt;br /&gt;&lt;strong&gt;&amp;lt;c:when&amp;nbsp;test=${i&amp;nbsp;==&amp;nbsp;5}&amp;gt;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;条件&lt;br /&gt;&lt;strong&gt;&amp;lt;c:otherwise&amp;gt;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;条件&lt;br /&gt;&lt;strong&gt;&amp;lt;c:forTokens&amp;nbsp;item="Hello!&amp;nbsp;World"&amp;nbsp;delimms="!"&amp;gt;....&amp;lt;/c:forTokens&amp;gt;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;文字列分割&lt;br /&gt;&lt;strong&gt;&amp;lt;c:if&amp;nbsp;test="${a&amp;nbsp;==&amp;nbsp;b}"&amp;nbsp;var="result"&amp;nbsp;/&amp;gt;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;条件&lt;br /&gt;&lt;strong&gt;&amp;lt;c:param&amp;nbsp;name="takashi"&amp;nbsp;value="male"&amp;nbsp;/&amp;gt;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;パラメータ&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;test.jsp&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;%@&amp;nbsp;taglib&amp;nbsp;prefix="c"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uri="http://java.sun.com/jsp/jstl/core"&amp;nbsp;%&amp;gt;&lt;br /&gt;&amp;lt;c:if&amp;nbsp;test="${empty&amp;nbsp;paramValues.name[0]}"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;c:redirect&amp;nbsp;url="/index.jsp"&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;lt;/c:if&amp;gt;&lt;br /&gt;&amp;lt;c:forEach&amp;nbsp;var="item"&amp;nbsp;items="${paramValues.name}"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;c:out&amp;nbsp;value="${item}"&amp;nbsp;/&amp;gt;&amp;lt;br&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;lt;/c:forEach&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;index.jsp&lt;br /&gt;&amp;lt;a&amp;nbsp;href="/SCWCD/redirect.jsp?name=Guest&amp;amp;name=Taro&amp;amp;name=Jiro"&amp;gt;redirect.jps&amp;lt;/a&amp;gt;&amp;lt;br&amp;nbsp;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&amp;nbsp;index.jsp&amp;nbsp;からリンクをクリック&lt;br /&gt;Guest&lt;br /&gt;Taro&lt;br /&gt;Jiro&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-441676830578052576?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/441676830578052576/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=441676830578052576' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/441676830578052576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/441676830578052576'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/20.html' title='JSTL Core'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-2337342080874410032</id><published>2007-10-16T17:03:00.017+09:00</published><updated>2007-10-30T18:10:52.129+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>カスタムタグ</title><content type='html'>&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;&lt;a href="/2007/10/18.html"&gt;TLD ファイルの定義&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;タグライブラリに関する情報をタグライブラリディスクリプタ（TLD ファイル）に定義します。&lt;br /&gt;通常 WEB-INF/tlds 以下に配置します。&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;&lt;a href="/2007/10/17.html"&gt;タグハンドラクラスの作成&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;タグの動作内容を定義します。&lt;br /&gt;TLD ファイルで tag-class タグでマッピングします。&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;taglib ディレクティブ&lt;/strong&gt;&lt;br /&gt;JSP ファイルでタグを使用する際、tablib 指令で TLD の URI を指定します。&lt;br /&gt;TLD ファイルの場所を直接指定するか、相対 URI または jar ファイルを指定します。&lt;br /&gt;（例）&lt;br /&gt;直接指定&lt;br /&gt;&amp;lt;%@&amp;nbsp;taglib&amp;nbsp;prefix="sample"&amp;nbsp;uri="/WEB-INF/tlds/myTaglib.tld"&amp;nbsp;%&amp;gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;web.xml の定義（相対 URI の定義）&lt;/strong&gt;&lt;br /&gt;web.xml で相対 URI を定義すると taglib ディレクティブで相対 URI を使用できます。&lt;br /&gt;（例）&lt;br /&gt;相対URI&lt;br /&gt;&amp;lt;%@&amp;nbsp;taglib&amp;nbsp;prefix="sample"&amp;nbsp;uri="/myTaglib.tld"&amp;nbsp;%&amp;gt;&lt;br /&gt;&lt;br /&gt;web.xml&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;jsp-config&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;taglib&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;taglib-uri&amp;gt;/myTaglib&amp;lt;/taglib-uri&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;taglib-location&amp;gt;/WEB-INF/tlds/myTaglib.tld&amp;lt;/taglib-location&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/taglib&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/jsp-config&amp;gt;&lt;br /&gt;&lt;br /&gt;taglib-location&amp;nbsp;に&amp;nbsp;jar&amp;nbsp;ファイルの場所を指定することもできます。&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;TLD ファイルを収めた jar ファイル&lt;/strong&gt;&lt;br /&gt;taglib ディレクティブで jar ファイルを指定する場合、jar ファイルの META-INF ディレクトリ内に TLD ファイルを配置する必要があります。&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-2337342080874410032?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/2337342080874410032/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=2337342080874410032' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/2337342080874410032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/2337342080874410032'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/19.html' title='カスタムタグ'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-1989210637668908123</id><published>2007-10-16T17:03:00.015+09:00</published><updated>2007-10-30T07:29:56.168+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>TLD （タグライブラリディスクリプタ）</title><content type='html'>TLD ファイルの例&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8" ?&amp;gt;&lt;br /&gt;&amp;lt;taglib xmlns="http://java.sun.com/xml/ns/jee"&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" &lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;version="2.0"&amp;gt;&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;tlib-version&amp;gt;2.0&amp;lt;/tlib-version&amp;gt;&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;short-name&amp;gt;certified&amp;lt;/short-name&amp;gt;&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;tag&amp;gt;&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;name&amp;gt;sample&amp;lt;/name&amp;gt;&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;tag-class&amp;gt;scwcd.SampleTag&amp;lt;/tag-class&amp;gt;&lt;br /&gt;        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;body-content&amp;gt;empty&amp;lt;/body-content&amp;gt;&lt;br /&gt;    &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/tag&amp;gt;&lt;br /&gt;&amp;lt;/taglib&amp;gt;&lt;br /&gt;&lt;br /&gt;____&lt;br /&gt;&lt;br /&gt;TLD ファイルの要素&lt;br /&gt;___________________________________________&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;tlib-version&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;バージョンを指定&lt;br /&gt;&lt;strong&gt;short-name&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;タグの略称&lt;br /&gt;tag&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;name&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;タグの名前&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;tag-class&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;タグハンドラクラスの完全修飾名&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;body-content&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;タグのボディに関する定義&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;empty&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ボディなし&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;タグでボディを記述するとコンパイルエラー&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;JSP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;JSP&amp;nbsp;コードをボディに記述可能&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tagdependent&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;タグハンドラクラスに依存&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;scriptless&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;JSP&amp;nbsp;スクリプトレットの記述不可&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;attribute&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;name&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;属性名&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;required&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;必須属性かどうか（デフォルト&amp;nbsp;false）&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;trexprvalue&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Runtime&amp;nbsp;Expression&amp;nbsp;Value(JSP の式)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;を使用できるかどうか（デフォルト&amp;nbsp;false）&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;データ型&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fragment&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;属性がフラグメントかどうか（デフォルト&amp;nbsp;false）&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dynamic-attributes&amp;nbsp;動的属性を有効にするかどうか&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;（デフォルト&amp;nbsp;false）&lt;br /&gt;tag-file&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;タグファイルの情報を定義&lt;br /&gt;&lt;a href="/2007/10/22.html"&gt;function&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;関数の定義&lt;br /&gt;___________________________________________&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-1989210637668908123?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/1989210637668908123/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=1989210637668908123' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/1989210637668908123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/1989210637668908123'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/18.html' title='TLD （タグライブラリディスクリプタ）'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-871548625378976492</id><published>2007-10-16T17:03:00.013+09:00</published><updated>2007-10-27T14:36:23.407+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>タグハンドラクラス</title><content type='html'>タグハンドラクラスを作成するためには主に下記のインターフェースかクラスを利用します。&lt;br /&gt;&lt;br /&gt;&lt;a href="/2007/10/16.html"&gt;Tag インターフェース&lt;/a&gt;&lt;br /&gt;&lt;a href="/2007/10/15.html"&gt;BodyTag インターフェース&lt;/a&gt; &lt;br /&gt;&lt;a href="/2007/10/14.html"&gt;IterationTag インターフェース&lt;/a&gt; &lt;br /&gt;&lt;a href="/2007/10/13.html"&gt;TagSupport クラス&lt;/a&gt;&lt;br /&gt;&lt;a href="/2007/10/12.html"&gt;BodyTagSupport クラス&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;これらのインターフェースには int 値を返すメソッドがあり、タグのフローを示します。&lt;br /&gt;&lt;br /&gt;_________&lt;br /&gt;&lt;br /&gt;TLD ファイルでの定義&lt;br /&gt;&lt;br /&gt;タグハンドラクラスは TLD ファイルで tag 要素以下に tag-class で完全修飾名を指定します。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-871548625378976492?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/871548625378976492/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=871548625378976492' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/871548625378976492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/871548625378976492'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/17.html' title='タグハンドラクラス'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-4295175568279024558</id><published>2007-10-16T17:03:00.011+09:00</published><updated>2007-10-30T07:02:18.742+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>Tag インターフェース</title><content type='html'>&lt;strong&gt;public interface Tag extends JspTag&lt;/strong&gt;&lt;br /&gt;static int &lt;em&gt;EVAL_BODY_INCLUDE&lt;/em&gt; &lt;br /&gt;          &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ボディの評価をストリームに含める &lt;br /&gt;static int &lt;em&gt;EVAL_PAGE &lt;/em&gt;&lt;br /&gt;          &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ページの評価を続ける&lt;br /&gt;static int &lt;em&gt;SKIP_BODY &lt;/em&gt;&lt;br /&gt;          &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ボディの評価をスキップする&lt;br /&gt;static int &lt;em&gt;SKIP_PAGE &lt;/em&gt;&lt;br /&gt;          &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;残りのページの評価をスキップする&lt;br /&gt;&lt;br /&gt;______&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ライフサイクル&lt;br /&gt;setPageContext(PageContext pc) &lt;br /&gt;↓&lt;br /&gt;setParent(Tag t) &lt;br /&gt;↓&lt;br /&gt;属性のセット&lt;br /&gt;↓&lt;br /&gt;doStartTag()&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;em&gt;EVAL_BODY_INCLUDE / SKIP_BODY &lt;/em&gt;&lt;br /&gt;↓&lt;br /&gt;doEndTag()  &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;em&gt;EVAL_PAGE / SKIP_PAGE&lt;/em&gt;&lt;br /&gt;↓&lt;br /&gt;release()&lt;br /&gt;______&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;package&amp;nbsp;scwcd;&lt;br /&gt;&lt;br /&gt;import&amp;nbsp;java.io.IOException;&lt;br /&gt;&lt;br /&gt;import&amp;nbsp;javax.servlet.jsp.JspException;&lt;br /&gt;import&amp;nbsp;javax.servlet.jsp.JspWriter;&lt;br /&gt;import&amp;nbsp;javax.servlet.jsp.PageContext;&lt;br /&gt;import&amp;nbsp;javax.servlet.jsp.tagext.Tag;&lt;br /&gt;&lt;br /&gt;public&amp;nbsp;class&amp;nbsp;TagSample&amp;nbsp;implements&amp;nbsp;Tag&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;PageContext&amp;nbsp;pc;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;Tag&amp;nbsp;t;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;int&amp;nbsp;doEndTag()&amp;nbsp;throws&amp;nbsp;JspException&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;SKIP_PAGE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;int&amp;nbsp;doStartTag()&amp;nbsp;throws&amp;nbsp;JspException&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;JspWriter&amp;nbsp;out&amp;nbsp;=&amp;nbsp;pc.getOut();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out.println("Hello!&amp;nbsp;World");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;catch&amp;nbsp;(IOException&amp;nbsp;e)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;SKIP_BODY;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;Tag&amp;nbsp;getParent()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;t;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;void&amp;nbsp;release()&amp;nbsp;{}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;void&amp;nbsp;setPageContext(PageContext&amp;nbsp;pc)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.pc&amp;nbsp;=&amp;nbsp;pc;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;void&amp;nbsp;setParent(Tag&amp;nbsp;t)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.t&amp;nbsp;=&amp;nbsp;t;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;____&lt;br /&gt;&lt;br /&gt;scwcdTaglib.tld&lt;br /&gt;&amp;lt;taglib&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;short-name&amp;gt;certified&amp;lt;/short-name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;tag&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;name&amp;gt;tagsample&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;tag-class&amp;gt;scwcd.TagSample&amp;lt;/tag-class&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;body-content&amp;gt;emply&amp;lt;/body-content&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/tag&amp;gt;&lt;br /&gt;&amp;lt;/taglib&amp;gt;&lt;br /&gt;_____&lt;br /&gt;&lt;br /&gt;web.xml&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;jsp-config&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;taglib&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;taglib-uri&amp;gt;/scwcdTaglib&amp;lt;/taglib-uri&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;taglib-location&amp;gt;/WEB-INF/tlds/scwcdTaglib.tld&amp;lt;/taglib-location&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/taglib&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/jsp-config&amp;gt;&lt;br /&gt;_____&lt;br /&gt;&lt;br /&gt;tagsample.jsp&lt;br /&gt;&amp;lt;%@&amp;nbsp;page&amp;nbsp;contentType="text/html;charset=Shift_JIS"%&amp;gt;&lt;br /&gt;&amp;lt;%@&amp;nbsp;taglib&amp;nbsp;prefix="certified"&amp;nbsp;uri="/scwcdTaglib"%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;certified:tagsample&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;Hello! World&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-4295175568279024558?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/4295175568279024558/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=4295175568279024558' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/4295175568279024558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/4295175568279024558'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/16.html' title='Tag インターフェース'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-8453439372617444034</id><published>2007-10-16T17:03:00.009+09:00</published><updated>2007-10-30T18:09:35.931+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>BodyTag インターフェース</title><content type='html'>public interface BodyTag extends IterationTag&lt;br /&gt;&lt;br /&gt;static int &lt;em&gt;EVAL_BODY_BUFFERED &lt;/em&gt;&lt;br /&gt;新しいバッファを作成しボディを評価する。&lt;br /&gt;____&lt;br /&gt;&lt;br /&gt;BodyTag インターフェースはボディコンテントを操作する手段を提供します。&lt;br /&gt;doStartTag は &lt;br /&gt;&lt;strong&gt;&lt;em&gt;EVAL_BODY_BUFFERED&lt;br /&gt;EVAL_BODY_INCLUDE&lt;br /&gt;SKIP_BODY&lt;/em&gt; &lt;/strong&gt;&lt;br /&gt;のいずれかを返します。&lt;br /&gt;&lt;br /&gt;&lt;em&gt;EVAL_BODY_INCLUDE &lt;/em&gt;が返された場合 &lt;a href="/2007/10/14.html"&gt;IterationTag&lt;/a&gt; の場合と同じ動作となります。&lt;br /&gt;____&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ライフサイクル&lt;/strong&gt;&lt;br /&gt;setPageContext&lt;br /&gt;↓&lt;br /&gt;setParent&lt;br /&gt;↓&lt;br /&gt;属性のセット&lt;br /&gt;↓&lt;br /&gt;doStartTag → &lt;em&gt;EVAL_BODY_INCLUDE / SKIP_BODY&lt;/em&gt;&lt;br /&gt;↓&lt;br /&gt;&lt;em&gt;EVAL_BODY_BUFFERED&lt;/em&gt;&lt;br /&gt;↓&lt;br /&gt;doInitBody&lt;br /&gt;↓&lt;br /&gt;BODY&lt;br /&gt;↓&lt;br /&gt;doAfterBody → &lt;em&gt;EVAL_BODY_AGAIN&lt;/em&gt;&lt;br /&gt;↓&amp;nbsp;&lt;br /&gt;&lt;em&gt;SKIP_BODY&lt;/em&gt;&lt;br /&gt;↓&lt;br /&gt;doEndTag&lt;br /&gt;↓&lt;br /&gt;release&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-8453439372617444034?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/8453439372617444034/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=8453439372617444034' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/8453439372617444034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/8453439372617444034'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/15.html' title='BodyTag インターフェース'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-3047648660986813910</id><published>2007-10-16T17:03:00.007+09:00</published><updated>2007-10-30T18:08:34.822+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>IterationTag インターフェース</title><content type='html'>public interface IterationTagextends Tag&lt;br /&gt;&lt;br /&gt;static int &lt;em&gt;EVAL_BODY_AGAIN&lt;/em&gt; &lt;br /&gt;          ボディの再評価を要求する定数。&lt;br /&gt;&lt;br /&gt;_____&lt;br /&gt;&lt;br /&gt;IterationTag インターフェースは &lt;a href="/2007/10/16.html"&gt;Tag&lt;/a&gt; インターフェースを継承し、&lt;br /&gt;doAfterBody メソッドを追加しています。&lt;br /&gt;&lt;br /&gt;_____&lt;br /&gt;&lt;br /&gt;ライフサイクル&lt;br /&gt;&lt;br /&gt;setPageContext&lt;br /&gt;↓&lt;br /&gt;setParent&lt;br /&gt;↓&lt;br /&gt;属性のセット&lt;br /&gt;↓&lt;br /&gt;doStartTag → &lt;em&gt;SKIP_BODY&lt;/em&gt; → doEndTag&lt;br /&gt;↓&lt;br /&gt;&lt;em&gt;EVAL_BODY_INCLUDE&lt;/em&gt;&lt;br /&gt;↓&lt;br /&gt;doAfterBody → &lt;em&gt;EVAL_BODY_AGAIN&lt;/em&gt;&lt;br /&gt;↓&lt;br /&gt;&lt;em&gt;SKIP_BODY&lt;/em&gt;&lt;br /&gt;↓&lt;br /&gt;doEndTag&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-3047648660986813910?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/3047648660986813910/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=3047648660986813910' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/3047648660986813910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/3047648660986813910'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/14.html' title='IterationTag インターフェース'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-2061975363701868143</id><published>2007-10-16T17:03:00.005+09:00</published><updated>2007-10-31T07:49:32.198+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>TagSupport　クラス</title><content type='html'>public class TagSupport&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;implements IterationTag, Serializable&lt;br /&gt;&lt;br /&gt;protected  String id &lt;br /&gt;          &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;id 属性の値を格納します。 &lt;br /&gt;protected  PageContext pageContext &lt;br /&gt;_______&lt;br /&gt;&lt;br /&gt;TagSupport クラスは &lt;a href="/2007/10/14.html"&gt;IterationTag&lt;/a&gt; インターフェースを実装してさらに便利なメソッドを付け加えてタグハンドラクラスを作成しやすくしています。&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;TagSupport クラスにはあらかじめ id プロパティ（変数）が定義されています。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;getId メソッドで id キーの値を取得できる。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;public Object getValue(String key) で各プロパティ値を取得できる。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;public Enumeration&amp;lt;String&amp;gt; getValues メソッドですべてのキーを取得できます。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;public static final Tag findAncestorWithClass(Tag from,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Class klass) メソッド&lt;br /&gt;指定されたクラスに最も近いタグを返す。 Tag インターフェースの getParent メソッドを呼び出す。&lt;br /&gt;from 検索を始めるタグ&lt;br /&gt;klass 検索するタグ&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;________&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;scwcdTaglib.tld&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;tag&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;name&amp;gt;tagsupportsample&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;tag-class&amp;gt;scwcd.TagSupportSample&amp;lt;/tag-class&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;body-content&amp;gt;emply&amp;lt;/body-content&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;dynamic-attributes&amp;gt;true&amp;lt;/dynamic-attributes&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/tag&amp;gt;&lt;br /&gt;________&lt;br /&gt;&lt;br /&gt;web.xml&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;jsp-config&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;taglib&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;taglib-uri&amp;gt;/scwcdTaglib&amp;lt;/taglib-uri&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;taglib-location&amp;gt;/WEB-INF/tlds/scwcdTaglib.tld&amp;lt;/taglib-location&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/taglib&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/jsp-config&amp;gt;&lt;br /&gt;________&lt;br /&gt;&lt;br /&gt;TagSupportSample.java&lt;br /&gt;package&amp;nbsp;scwcd;&lt;br /&gt;import&amp;nbsp;java.io.IOException;&lt;br /&gt;import&amp;nbsp;java.util.Enumeration;&lt;br /&gt;import&amp;nbsp;javax.servlet.jsp.JspException;&lt;br /&gt;import&amp;nbsp;javax.servlet.jsp.JspWriter;&lt;br /&gt;import&amp;nbsp;javax.servlet.jsp.tagext.DynamicAttributes;&lt;br /&gt;import&amp;nbsp;javax.servlet.jsp.tagext.TagSupport;&lt;br /&gt;&lt;br /&gt;public&amp;nbsp;class&amp;nbsp;TagSupportSample&amp;nbsp;extends&amp;nbsp;TagSupport&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;implements&amp;nbsp;DynamicAttributes&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;void&amp;nbsp;setDynamicAttribute(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;uri,&amp;nbsp;String&amp;nbsp;key,&amp;nbsp;Object&amp;nbsp;value)&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throws&amp;nbsp;JspException&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setValue(key,&amp;nbsp;value);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;int&amp;nbsp;doStartTag()&amp;nbsp;throws&amp;nbsp;JspException&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;JspWriter&amp;nbsp;out&amp;nbsp;=&amp;nbsp;pageContext.getOut();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Enumeration&amp;lt;String&amp;gt;&amp;nbsp;keys&amp;nbsp;=&amp;nbsp;getValues();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while&amp;nbsp;(keys.hasMoreElements())&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;key&amp;nbsp;=&amp;nbsp;keys.nextElement();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;out.println("キー&amp;nbsp;:&amp;nbsp;"&amp;nbsp;+&amp;nbsp;key&amp;nbsp;+&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"&amp;nbsp;値&amp;nbsp;:&amp;nbsp;"&amp;nbsp;+&amp;nbsp;getValue(key)&amp;nbsp;+&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"&amp;lt;br&amp;nbsp;/&amp;gt;");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;catch&amp;nbsp;(IOException&amp;nbsp;e)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;SKIP_BODY;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;________&lt;br /&gt;&lt;br /&gt;tagsupportsample.jsp&lt;br /&gt;&amp;lt;%@&amp;nbsp;page&amp;nbsp;contentType="text/html;charset=Shift_JIS"%&amp;gt;&lt;br /&gt;&amp;lt;%@&amp;nbsp;taglib&amp;nbsp;prefix="certified"&amp;nbsp;uri="/scwcdTaglib"%&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;certified:tagsupportsample&amp;nbsp;name="Takashi"&amp;nbsp;age="unknown"&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;________&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;キー&amp;nbsp;:&amp;nbsp;age&amp;nbsp;値&amp;nbsp;:&amp;nbsp;unknown&lt;br /&gt;キー&amp;nbsp;:&amp;nbsp;name&amp;nbsp;値&amp;nbsp;:&amp;nbsp;Takashi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-2061975363701868143?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/2061975363701868143/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=2061975363701868143' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/2061975363701868143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/2061975363701868143'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/13.html' title='TagSupport　クラス'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-4564370554575659043</id><published>2007-10-16T17:03:00.003+09:00</published><updated>2007-11-01T13:12:09.748+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>BodyTagSupport クラス</title><content type='html'>public class BodyTagSupport&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;extends TagSupport&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;implements BodyTag&lt;br /&gt;&lt;br /&gt;protected  BodyContent bodyContent &lt;br /&gt;          現在のボディコンテント&lt;br /&gt;&lt;br /&gt;BodyTagSupport クラスは BodyTag インターフェースを実装して、新たに便利なメソッドを付け加えています。通常、タグハンドラクラスを作成する場合 BodyTagSupport クラスを継承すると便利だと思います。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-4564370554575659043?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/4564370554575659043/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=4564370554575659043' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/4564370554575659043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/4564370554575659043'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/12.html' title='BodyTagSupport クラス'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-3363338195930392468</id><published>2007-10-16T17:03:00.001+09:00</published><updated>2007-11-02T12:38:06.287+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>タグファイル</title><content type='html'>タグファイルは JSP の構文で記述できるカスタムタグです。&lt;br /&gt;タグファイルは /WEB-INF/tags 以下に .tag 拡張子で配置します。&lt;br /&gt;JSP ページの taglib ディレクトリの tagdir 属性を /WEB-INF/tags と指定します。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜サンプル＞&lt;/strong&gt;&lt;br /&gt;morning.tag&lt;br /&gt;&amp;lt;%@ tag pageEncoding="Shift_JIS" %&amp;gt;&lt;br /&gt;&amp;lt;p&amp;gt;おはよう。&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;sample.jsp&lt;br /&gt;&amp;lt;%@ page contentType="text/html;charset=Shift_JIS"%&amp;gt;&lt;br /&gt;&amp;lt;%@ prefix="tags" taglib tagdir="/WEB-INF/tags"%&amp;gt;&lt;br /&gt;&amp;lt;tags:morning/&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;＜出力結果＞&lt;/strong&gt;&lt;br /&gt;おはよう。&lt;br /&gt;_________&lt;br /&gt;&lt;br /&gt;TLD ファイルとタグファイルを jar ファイル化する場合、&lt;br /&gt;タグファイルを /META-INF/tags 以下においた状態で jar ファイル化します。&lt;br /&gt;TLD ファイルに&lt;br /&gt;&amp;lt;tag-file&amp;gt;&lt;br /&gt;&amp;lt;name&amp;gt;morning&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;lt;path&amp;gt;/META-INF/tags/morning.tag&amp;lt;/path&amp;gt;&lt;br /&gt;&amp;lt;/tag-file&amp;gt;&lt;br /&gt;のように定義します。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-3363338195930392468?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/3363338195930392468/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=3363338195930392468' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/3363338195930392468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/3363338195930392468'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/11.html' title='タグファイル'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-6512400547121131327</id><published>2007-10-16T17:02:00.006+09:00</published><updated>2007-10-24T21:49:19.932+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>J2EE デザインパターン</title><content type='html'>&lt;strong&gt;クライアント層&lt;/strong&gt;&lt;br /&gt;HTML、アップレット&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;a href="/2007/10/9.html"&gt;プレゼンテーション層&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;JSP、サーブレット、JavaBeans&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;a href="/2007/10/8.html"&gt;ビジネス層&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;Enterprise Java Beanｓ&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;インテグレーション層&lt;/strong&gt;&lt;br /&gt;DataAccessObject&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;リソース層&lt;/strong&gt;&lt;br /&gt;リレーショナルデータベース&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-6512400547121131327?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/6512400547121131327/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=6512400547121131327' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/6512400547121131327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/6512400547121131327'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/10.html' title='J2EE デザインパターン'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-879430159364965052</id><published>2007-10-16T17:02:00.005+09:00</published><updated>2007-10-24T18:45:34.430+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>プレゼンテーション層</title><content type='html'>&lt;strong&gt;Front Controller&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;コントロール機能の集約&lt;br /&gt;&lt;/em&gt;多様なリクエストを Controller が集約管理してビジネスロジックをコントロールする&lt;br /&gt;&lt;br /&gt;&lt;em&gt;セキュリティーの管理能力の向上&lt;br /&gt;&lt;/em&gt;入り口を一つにすることでセキュリティ管理のリソースを減らすだけでなく、多様なリクエストのセキュリティを効率よく管理できる。&lt;br /&gt;&lt;br /&gt;&lt;em&gt;再利用性が高まる &lt;/em&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;________&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Intercepting Filter&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;多様なリクエストを Controller　で集約的管理。 Controller はフィルタを伴い、各フィルタは緩い結び付きでつながっている。&lt;/p&gt;&lt;p&gt;フィルタ間の緩い結びつきにより再利用性が高まる。&lt;br /&gt;同時に情報の共有には向かない。&lt;/p&gt;&lt;p&gt;________&lt;/p&gt;&lt;p&gt;&lt;strong&gt;MVC モデル&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;多様なクライアントスタイルに対応。&lt;br /&gt;拡張性に優れている。&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-879430159364965052?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/879430159364965052/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=879430159364965052' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/879430159364965052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/879430159364965052'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/9.html' title='プレゼンテーション層'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-6922527475492679128</id><published>2007-10-16T17:02:00.003+09:00</published><updated>2007-10-23T15:49:59.759+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='基本メモ'/><title type='text'>ビジネス層</title><content type='html'>&lt;p&gt;&lt;strong&gt;Business Delegate&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;プレゼンテーション層とビジネス層の結びつきを緩くし、コントロールを Business Delegate 一箇所で行い操作性を向上さす。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Business Exceptions を翻訳してエラーの本質をクライアントから隠す。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;エラーリバリーと同期化処理を実装する。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;シンプルなインターフェースをクライアントに提供する。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;クライアントにキャッシュサービスを提供する。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;層が増える。時としてデメリットとなる。&lt;br /&gt;&lt;li&gt;リモート性を隠す。&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Session Facade&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;ビジネス層をコントロールする層を提供する。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;一様のインターフェースを提供する。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;ビジネスオブジェクトとクライアントの結びつきを減らし保守性を向上さす。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;セキュリティを集中制御。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;リモートインターフェースのクライアントへの露出をほとんど無くす。&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Service Locator&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;複雑さを抽象化してクライアントにシンプルなインターフェースを提供する。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;ビジネスコンポーネントの追加を容易にする。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;ネットワークパフォーマンスの向上。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;キャッシュによりクライアントパフォーマンスを向上さす。/li&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Transfer Object&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Entity Bean とリモートインターフェースを単純化する。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;リモート呼び出しのデータ量の向上。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;ネットワークトラフィックの減少。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;同期化処理が複雑化する&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-6922527475492679128?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/6922527475492679128/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=6922527475492679128' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/6922527475492679128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/6922527475492679128'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/10/8.html' title='ビジネス層'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2057191220162006657.post-8316216797197508982</id><published>2007-09-27T11:17:00.000+09:00</published><updated>2007-10-31T06:13:48.590+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Introduction'/><title type='text'>SCWCD とは</title><content type='html'>&lt;p&gt;SCWCD とは &lt;a href="http://www.sun.com/training/certification/java/scwcd.xml"&gt;Sun Certified Web Component Developer&lt;/a&gt; のことです。&lt;br /&gt;SCWCD または SJC-WC などと略されます。&lt;br /&gt;JSP や サーブレットなどを使った Web コンテンツ、Web サービスの知識を問う資格です。&lt;br /&gt;管理人は最近この資格を取りました。&lt;br /&gt;SJCP の取得が前提となります。&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2057191220162006657-8316216797197508982?l=scwcd-fighter.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://scwcd-fighter.blogspot.com/feeds/8316216797197508982/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2057191220162006657&amp;postID=8316216797197508982' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/8316216797197508982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2057191220162006657/posts/default/8316216797197508982'/><link rel='alternate' type='text/html' href='http://scwcd-fighter.blogspot.com/2007/09/scwcd.html' title='SCWCD とは'/><author><name>Hiroyuki Sengoku</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
