竹形誠司 ブログ
ご質問    »トピック一覧
掲示板へのスパムが多いため、「ご質問」のコーナーはユーザー登録制とさせていただきました。お手数ですが、上の「新規ユーザーの登録」メニューより登録をお願いします。
帳票Web
アプリケーション

受注開発始めました
詳しくは こちら
竹形 誠司 著/ラトルズ刊
JSP帳票アプリケーション実践開発入門
JSP帳票アプリケーション
実践開発入門

JSP業務アプリケーション短期開発入門
JSP業務アプリケーション
短期開発入門

Java+MySQL+Tomcatで始めるWebアプリケーション構築入門
Java+MySQL+Tomcatで始めるWebアプリケーション構築入門

Java+MySQL+Tomcatで作る掲示板とブログ
Java+MySQL+Tomcatで作る
掲示板とブログ
「ログイン処理」
by チェン[midsub]
 はじめまして。いつも「業務アプリケーション 短期開発入門」を参考にさせていただいてます。
現在 Java 1.5 , Apache Tomcat 5.5 , mysql(CDからインストール)という状態です。本書の第9章「アプリケーション・ユーザーの管理」のプログラムを参考にさせてもらい使用したいのですが、コンパイルがうまくいきません。

type 例外レポート

メッセージ

説明 The server encountered an internal error () that prevented it from fulfilling this request.

例外

org.apache.jasper.JasperException: JSPのクラスをコンパイルできません

JSPファイル: /JSP/login/login_process.jsp の中の4行目でエラーが発生しました
生成されたサーブレットのエラーです:
The method put(Object, Object) in the type HashMap is not applicable for the arguments (String, int)

JSPファイル: /JSP/login/login_process.jsp の中の4行目でエラーが発生しました
生成されたサーブレットのエラーです:
The method parseInt(String, int) in the type Integer is not applicable for the arguments (Object)


    org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
    org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:328)
    org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:389)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:288)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:267)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:255)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:556)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:296)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    day10.LogFilter.doFilter(LogFilter.java:38)

どの設定を直せばいいのかわかりません。
教えていただければと思い投稿させて頂きました。
よろしくお願い申し上げます。

投稿:チェン[midsub]/2008年 10月 28日 16時 43分 /更新:2008年 10月 28日 16時 45分
RE:「ログイン処理」
by 竹形 誠司[takegata]
竹形です。こんにちは。
お使いのTomcatとJavaのバージョンが本書で扱っているものと違うので、
それが原因かも知れません。こちらで環境を作って試してみますので、
しばらくお待ちください。
投稿:竹形 誠司[takegata]/2008年 10月 28日 19時 13分 /更新:2008年 10月 28日 19時 13分
RE:「ログイン処理」
by 竹形 誠司[takegata]
竹形です。どうも。
Java 1.5 , Apache Tomcat 5.5 の環境を作って試してみましたが、ご報告にあるようなエラーは再現できませんでした。エラーの内容は、
JSPファイル: /JSP/login/login_process.jsp の中の4行目でエラーが発生しました
生成されたサーブレットのエラーです:
The method put(Object, Object) in the type HashMap is not applicable for the arguments (String, int)

JSPファイル: /JSP/login/login_process.jsp の中の4行目でエラーが発生しました
生成されたサーブレットのエラーです:
The method parseInt(String, int) in the type Integer is not applicable for the arguments (Object)
の2つですね。
で、1つめの方は
if(rs.next()){
    user.put("id",rs.getInt("id"));
    user.put("name",rs.getString("name"));
    user.put("level",rs.getInt("level"));
}else{
    strMessage="ログイン名またはパスワードが違います";
}
のputメソッドで出ているようですが、エラーの内容からすると、どうもお使いのJavaのバージョンが1.4か、それ以前ではないかという気がします。というのは、古いバージョンのJavaでは、HashMapのputメソッドにObject型の引数しか渡せませんでしたが、Java1.5からはどんな型の引数でも渡せるようになったからです。

1台のコンピュータに複数のバージョンのJavaが混在していると、ユーザーの環境ではJava1.5が動いていても、Tomcatが別のバージョンのJavaを使って動いているという可能性があります。Tomcat5.5のバージョンとあわせて今一度確認してみていただけますか?Tomcatのバージョンはエラー画面の下の方に表示されます。

2つめのエラーの方は、ちょっと原因がよく分かりません。本書のlogin_process.jspではparseIntメソッドを使っていないと思いますが、プログラムはそのまま使われているのでしょうか?
投稿:竹形 誠司[takegata]/2008年 10月 28日 20時 09分 /更新:2008年 10月 28日 21時 38分
RE:「ログイン処理」
by チェン[midsub]
お返事ありがとうございます。

お忙しいところ、貴重な時間使って頂きありがとうございます。
まだ、理解していないところが多く…
一度、整理しなおして取り組んでみます。

投稿:チェン[midsub]/2008年 10月 28日 20時 58分 /更新:2008年 10月 28日 20時 58分
RE:「ログイン処理」
by 竹形 誠司[takegata]
どういたしまして。
分からないことがあれば、遠慮なく質問してください。
執筆のヒントにさせていただきますので。
投稿:竹形 誠司[takegata]/2008年 10月 28日 21時 41分 /更新:2008年 10月 28日 21時 41分