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

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

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

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

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


似たようなご質問があったのですが、うまくいかなくて又、質問いたします。よろしくお願い申し上げます。

type 例外レポート

メッセージ

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

例外

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

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

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

JSPファイル: /address_css/login_process.jsp の中の4行目でエラーが発生しました
生成されたサーブレットのエラーです:
Type mismatch: cannot convert from Integer to int

JSPファイル: /address_css/login_process.jsp の中の4行目でエラーが発生しました
生成されたサーブレットのエラーです:
Type mismatch: cannot convert from Integer to int


    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:397)
    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:293)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


注意 原因のすべてのスタックトレースは、Apache Tomcat/5.5.9のログに記録されています


投稿:wahaha[wahaha]/2009年 12月 03日 01時 25分 /更新:2009年 12月 03日 01時 25分
RE:「ログイン処理」
by 竹形 誠司[takegata]
竹形です。こんにちは。

これはどうも、Integerとintの間のオートボクシングが働いていない感じですね。
オートボクシングというのはJava1.5からの機能で、Integer形のオブジェクトにint値を代入したり、逆にint値にInteger型のオブジェクトを代入すると、自動的に型の変換を行ってくれるものです。

243ページの中ほどの
user.put("id",rs.getInt("id"));
のような所でエラーが起こっているようなので、このような部分を

user.put("id",new Integer(rs.getInt("id")));
のように、明示的にIntegerに変換してみるとどうでしょうか。また、

int userId = (Integer)(user.get("id"));
などの部分を

int userId = ( (Integer)(user.get("id")) ).intValue();
のように明示的にint値に変換してみるとどうでしょうか。

環境の違いによるものかも知れません。本書の環境(Java1.6とTomcat6.0)で試してみることは可能ですか?
投稿:竹形 誠司[takegata]/2009年 12月 03日 01時 57分 /更新:2009年 12月 03日 02時 02分
RE:「ログイン処理」
by wahaha[wahaha]
お返事ありがとうございます。

お忙しいところ、貴重な時間使って頂きありがとうございます。無事解決いたしました。何日間悩んでました。どうもありがとうございます。
また、なんかありましたら質問させていただきますのでよろしくお願い申し上げます。

ありがとうございました。

投稿:wahaha[wahaha]/2009年 12月 04日 10時 29分 /更新:2009年 12月 04日 10時 29分