Beans で日本語!?
『タケちょんネット全部じゃば化計画』の第一歩としてトップページの JSP 化と随所に散りばめて配置されているランダムメッセージの Beans 化に取り組む。
まずは現状の index.html をコピーして index.jsp とする。SSI で include しているスクリプトを昨日のランダムメッセージの拡張で Beans 化。
と,確認してみると…。
バケバケ
昨日のテスト jsp ではイケたのに…。と調べてみると,JSP ファイルのエンコードと Beans の出力エンコードが違う。
…で,いろいろいろいろと試行錯誤をしてみる。一時は Beans をヤメて Servlet で実現しようとも思い詰める。
ちなみに Servlet のパラメータ付き呼び出しはコレ。
<jsp:include page="/servlet/RandomMessageServlet" flush="true">
<jsp:param name='type' value='hello' />
</jsp:include>
パラメータは form の受け取りと同様 getParameter() にて取得できる。
しかし,わざわざ http 経由で呼び出す Servlet より VM がそのままロードしてくれる Beans の方が“地球に優しい”コーディングだと信じてガンバる。
<jsp:useBean id="message" scope="application" class="RandomMessage" />
<jsp:setProperty name="message" property="Type" value="hello"/>
<jsp:getProperty name="message" property="Message" />
<jsp:setProperty name="message" property="Type" value="logout"/>
<jsp:getProperty name="message" property="Message" />
昨日との違い (進歩) は set メソッドにて get の挙動を変えられる点。
今日の成果 (というか妥協点)
・native2ascii -encoding eucjis にてソースコードの Unicode 化
・JSP は JIS (iso-2022-jp) で書く
・JSP の頭に <%@ page contentType="text/html; charset=iso-2022-jp" %>
…と,とりあえず JIS に統一する事でバケずに表示するようになる。
Beans の出力が何故 JIS 固定なのかは今日のところは謎。
とりあえずこんな感じ
http://www.takechon.net/RandomMessage.jsp
(って,クライアントから見ても面白くナイんだろうけどね)