質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.92%

Webアプリケーション作成について

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 1,156

rinRin__

score 9

お世話になります。

現在、jspとサーブレットを用いてWebアプリケーション作成を行っています。
流れとしてjspページで値を入力し、DBに保存、DBに保存された値を一覧として別jspページに表示されるという流れで作成しております。

現在、詰まってしまっているところが初期表示させたいjspページがでてこず、DBにセットする値がnullのため、500で落ちてしまう状況です。

ご教示をお願いいたします。

前提・実現したいこと

jspページを表示させたい

発生している問題・エラーメッセージ

StandardWrapperValve[XXXXXX]: Servlet.service() for servlet XXXXServlet threw exception
java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Integer.java:542)
at java.lang.Integer.parseInt(Integer.java:615)
at datebase.SQLExcecution.setInsert(XXXXXDao.java:21)
at main.EstimateServlet.doPost(XXXXXServlet.java:45)
at main.EstimateServlet.doGet(XXXXXServlet.java:21)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:415)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282)
at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201)
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
at java.lang.Thread.run(Thread.java:745)

該当のソースコード

-jsp
<form method="post" action="<%= request.getContextPath()%>/XXXX" >
<div class="contents">
<div class="">
<a href="">ああああ</a> 
<hr />
</div>…

-servlet
public void doGet (HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException{
this.doPost(req, res);

}

public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {

req.setCharacterEncoding("UTF-8");
String a = req.getParameter("a");
String[] b = {a};

HttpSession session = req.getSession();
session.setAttribute("b", b);
YYYY c = new YYYY();
if(c.ZZZZ(b) == true ){
RequestDispatcher dispatcher = req.getRequestDispatcher("./WEB-INF/jsp/WWWW.jsp");
dispatcher.forward(req, res);
-web.xml
<welcome-file-list>
<welcome-file>/WEB-INF/jsp/AAAA.jsp</welcome-file>
</welcome-file-list>

<servlet>
<servlet-name>XXXXServlet</servlet-name>
<servlet-class>cc.XXXXServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>XXXXServlet</servlet-name>
<url-pattern>/XXXX</url-pattern>
</servlet-mapping>

試したこと

この前のエラーとして405の表示がでていたため、サーブレットにdoGetの記載を追加

補足情報(言語/FW/ツール等のバージョンなど)

・Eclipce4.5.0
・Glassfish4.1
・postgresql9.4

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

スタックトレースから見る限り

java.lang.NumberFormatException: null 
at java.lang.Integer.parseInt(Integer.java:542) 
at java.lang.Integer.parseInt(Integer.java:615) 
at datebase.SQLExcecution.setInsert(XXXXXDao.java:21) 


と出ていますので、XXXXXDao.javaの21行目でparseIntできずにエラーが出ているようです。
残念ながらXXXXXDaoのソースコードがありませんので、これ以上正確な回答は出せません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/24 13:13

    エラーの出ているXXXXDaoの一部分のソースです。

    String sql = "insert into XX(a,b,c,d,e,f) values(?,?,?,?,?,?)";

    PreparedStatement pstmt = con.prepareStatement(sql);

    pstmt.setString(1, list[0]);
    pstmt.setString(2, list[1]);
    pstmt.setInt(3, Integer.parseInt(list[2]));
    pstmt.setString(4, list[3]);
    pstmt.setString(5,list[4]);
    pstmt.setString(6, list[5]);

    int rs = pstmt.executeUpdate();
    サーブレットで受け取った値をリストに入れ、XXXXDaoでその値をDBに入れようとしているところです。cの型だけ数値を想定しているためparseIntをしています。
    そこでNumberFormatException:nullが起きているのは初期表示させたいjspから値が受け取れていないためか、と考え当初の質問をさせていただきました。

    キャンセル

  • 2017/05/24 13:34

    正しくDaoクラスへ値が渡されているかも、Servletのソースからでは判断できませんでした。ServletからDaoクラスへのつながりが書かれておりませんでしたので、このパラメータの受け渡しができているかをデバッグモードを使って確認するなどをすると、原因がわかるのではないかと思います。

    キャンセル

  • 2017/05/24 14:24

    たびたびご迷惑をおかけして申し訳ありません。
    Daoクラスのつながりは当初ソースを記載した、
    YYYY c = new YYYY();
    if(c.ZZZZ(b) == true ){
    のYYYYでDaoクラスを呼び、insert処理を行うZZZZがtrue(ZZZZはrsが1件以上ならtrue)なら~という動きをサーブレットにつけています。
    パラメータの受け渡しは初期表示させたいjspに値が入っていないことが原因かと考えていましたが止まってしまった、という現状です。

    キャンセル

  • 2017/05/24 16:35

    自己解決いたしました。ありがとうございました。

    キャンセル

0

本当に記載されているソースコードで例外が起きてますか?
見てる感じ、NumberFormatExceptionが起きそうなとこが見当たりません。

parseIntをしているところもないし、そもそもデータベースに関わる部分がありません。
気になるのは、YYYYクラスのコンストラクタか、ZZZZメソッドぐらいしかありません。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.92%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る