Home > Archives > 2010-03

2010-03

Java: ServletからJSPへリクエストをフォワード

目的

Servletで処理した結果をJSPファイルに転送し、HTMLを生成する。これによって、MVCモデルにおけるViewの分離ができる。

方法

protected void doGet(HttpServletRequest req, HttpServletResponse res)
	throws ServletException, IOException {
	ArrayList<String[]> table = new ArrayList<String[]>(); // 転送データ
<中略>
	req.setAttribute("table", table);
	req.getRequestDispatcher("jsp/view.jsp").forward(req, res);

上記のServletコード上のtableという変数をview.jspに渡したす場合、HttpServletRequest #setAttributeで変数を登録し、getRequestDispatcherとforwardでリクエストをフォワードする。

JSP側で登録した変数を取り出すには、下記のコードを用いる。

<% ArrayList<String[]> table = (ArrayList<String[]>)request.getAttribute("table"); %>

Java: 形態素解析Senをインストール(Windows編)

ダウンロードするソフト

1.ActivePerl(ActivePerl, Download Perl for Windows, Mac, Linux, AIX, HP-UX & Solaris)
2.Apache Ant(Apache Ant - Binary Distributions)
3.Sen(sen: ドキュメント & ファイル: release)

ActivePerlはインストーラーに従いインストールする。
ダウンロードしたAntとSenはC:\work以下に解凍し、フォルダ名をそれぞれapache-ant、senとリネームする。

環境変数の設定

PATH(追加) C:\work\apache-ant\bin;
ANT_HOME C:\work\apache-ant
SEN_HOME C:\work\sen
JAVA_HOME C:\Sun\SDK\jdk
この後、上記の環境変数が適応されているか下記のコマンドを用いて確認する。

C:\>echo %ANT_HOME%
C:\work\apache-ant (←OK、パスが適応されている)

適応されていなければ再起動する。

辞書のインストール方法

カレントディレクトリをdicに設定後、辞書をインストールする。

C:\>cd work/sen/dic (←カレントディレクトリを移動)
C:\work\sen\dic>ant -Dperl.bin=C:\Perl\bin\perl.exe (←辞書のインストール)
Buildfile: C:\work\sen\dic\build.xml
<中略>
BUILD SUCCESSFUL
Total time: 1 minute 2 seconds
C:\work\sen\dic>

動作確認

%SEN_HOME%\sen.batをダブルクリックする。

C:\work\sen\bin>rem set classpath
C:\work\sen\bin>SET CLASSPATH=C:\work\sen\lib\sen.jar
C:\work\sen\bin>SET CLASSPATH=C:\work\sen\lib\sen.jar;C:\work\sen\lib\commons-logging.jar
done.
Please input Japanese sentence:
2010/03/25 0:29:44 net.java.sen.Dictionary 
情報: token file = C:\work\sen\dic/token.sen
2010/03/25 0:29:44 net.java.sen.Dictionary 
情報: time to load posInfo file = 16[ms]
2010/03/25 0:29:44 net.java.sen.Dictionary 
情報: double array trie dictionary = C:\work\sen\dic/da.sen
2010/03/25 0:29:44 net.java.sen.util.DoubleArrayTrie load
情報: loading double array trie dict = C:\work\sen\dic/da.sen
2010/03/25 0:29:45 net.java.sen.util.DoubleArrayTrie load
情報: loaded time = 0.453[ms]
2010/03/25 0:29:45 net.java.sen.Dictionary 
情報: pos info file = C:\work\sen\dic/posInfo.sen
2010/03/25 0:29:45 net.java.sen.Dictionary 
情報: time to load pos info file = 0[ms]
2010/03/25 0:29:45 net.java.sen.Tokenizer loadConnectCost
情報: connection file = C:\work\sen\dic\matrix.sen
2010/03/25 0:29:45 net.java.sen.Tokenizer loadConnectCost
情報: time to load connect cost file = 141[ms]
hello
hello   (hello) 未知語(0,5,5)   null    null
こんにちは
こんにちは      (こんにちは)    感動詞(0,5,5)   コンニチハ      コンニチワ

Java, Servlet: No suitable driver found for "~" の原因と解決法

事象 - NullPointerException on java.sql.Connection

JDBCを用いてServletからMySQLのテーブルへアクセスする過程で、DriverManager.getConnectionメソッドの呼び出しの後、NullPointerExceptionが送出された(アプリケーション・サーバーはTomcat)。

<前略>
Connection conn = null;
    try {
      conn = DriverManager.getConnection(URL, USER, PASS);
      Statement stmt = conn.createStatement();
      ResultSet rs = stmt.executeQuery("<SQL文>");
<後略>

tomcat_error_nullpointer

原因 - No suitable driver found for "~"

デバックトレースを行ったところ、No suitable driver found for "~"というメッセージが出力されていた。JDBC Driver のクラスパスを設定していなかった為、今回のエラーが発生した。

対策 - JDBC Driverのクラスパス設定

JDBC Driver ファイル(.jar)をクラスパスに追加する。Eclipse上での設定方法は「実行」→「実行の構成」から「クラスパス」タブ内の「ユーザー・エントリー」を選択、「外部JARの追加」ボタンから、Driverを設定する。

雑感

ありがちー、なミスをしてしまったー。

Android: mksdcardコマンドのabortingの解決法 - could not create file '...', aborting...

下記のコマンドを入力したら、abortされてしまった。

C:\>mksdcard 256M C:\work\sdcard\sdcard.img
could not create file 'C:\work\sdcard\sdcard.img', aborting...

原因はフォルダsdcardを作成してなかった為。SDカードイメージの作成先のフォルダは予め作っておく必要がある。
フォルダ作成後改めてコマンドを入力すると上手くいった。

C:\>mksdcard 256M C:\work\sdcard\sdcard.img

C:\>

Home > Archives > 2010-03

バックナンバー
最近のコメント
最近のトラックバック
メタ情報

Return to page top