JSP/Servletのお勉強メモ その4
昨日からJSPでformタグを使ったデータ送信のプログラムが上手くいかなくて悩んでた.
サンプル通りに組んでる(はず)なのにあんまりにも上手くいかないから,
ネットからサンプルプログラムを取ってきて動かしたら, それは上手くいった.
ネットのサンプルをそのまま自分の書いたのにコピーすると上手くいき, 自分のだと上手くいかない.
見る限りソースは同じなんだけどなあ.
とりあえず, 全然すすまないからこれは放置しておくことにした.
一応ネットからとってきたサンプルは動くわけだし.
サーブレットの作成手順
以前にもやったけど, もう1回確認しておく.
コンパイルのときの注意は, servlet-api.jarをクラスパスの加えるのを忘れないこと.
なお, ソースから作成したクラスファイルは, WEB-INF/classes以下に配置する.
サンプルはこんな感じ.
package chap09.sec02; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloServletWorld extends HttpServlet { public void doGet( HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException { response.setContentType( "text/html; charset=EUC_JP" ); PrintWriter out = response.getWriter(); out.println( "<HTML>" ); out.println( "<HEAD>" ); out.println( "<TITLE>Servlet</TITLE>" ); out.println( "</HEAD>" ); out.println( "<BODY>" ); out.println( "HelloServletWorld" ); out.println( "</BODY>" ); out.println( "</HTML>" ); out.close(); } }
そして, コンパイル.
javac -d classes src/chap09/sec02/HelloServletWorld.java
自分の場合は, 環境変数CLASSPATHにservlet-api.jarを加えてるからコマンドライン上での指定はなし.
オプション-dで, クラスファイルをclasses以下に配置してくれる.
ディレクトリの構成もソースファイルの置いてあるsrcディレクトリ以下と全く同じになる.
そして, 面倒なweb.xmlへの登録をする.
つぎの文を
<!-- HelloServletWorld.java --> <servlet> <servlet-name>HelloServletWorld</servlet-name> <servlet-class>chap09.sec02.HelloServletWorld</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServletWorld</servlet-name> <url-pattern>/helloServlet</url-pattern> </servlet-mapping>
これが地味に間違ってたりして, 非常にやっかい.
そして再起動.
一々再起動しないといけないのは面倒だなあ.
サーブレットはJavaのソースが基本となってて組みやすいけど,
htmlソースの部分をうつのが面倒.
そして, 登録も面倒.
この2つが作成する上での問題かな.
今日はこんなところで.
やっとJSPとサーブレットの章が終わった.
JSPとサーブレット連携するのはいいなあ.
次はカスタムタグか. 飛ばしてデータベースいっちまおうかな.