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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

4910閲覧

Integer.parseIntの使い方

sususu

総合スコア99

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/03/08 13:24

Integer.parseIntの使い方はストリングで受け取った値も数値にするものだと認識していたので下記のようなソースを打ったのですが、エラーが出ます。私の認識が間違っていたのでしょうか?
又、パラメータを送信するときに数値で送信することができれば教えていただきたいです。
どなたかご教授お願いいたします。

パラメータ送信 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> 登録画面 <form action = "Regist" method = "post" enctype = "multipart/form-data" > Title<br> <input type ="text" name = "title"><br> Picture<br> <input type ="file" name="picture" size="30" /><br> <br> <!-- like.hate初期値は0 --> <input type ="hidden" name = "like" value = "0"> <input type = "hidden" name = "hate" value = "0"> <input type = "submit" value = "Regist!"> </form> </body> </html>
パラメータ受信 /** * Servlet implementation class Regist */ @WebServlet("/Regist") public class Regist extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { RequestDispatcher dispatcher = request.getRequestDispatcher("WEB-INF/jsp/regist.jsp"); dispatcher.forward(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); //getTitle String title = request.getParameter("title"); //getPicture String picture = request.getParameter("picture"); //initialValue String like = request.getParameter("like"); String hate = request.getParameter("hate"); //setValue VoteBean vb = new VoteBean(); vb.setTitle(title); vb.setPicture(picture); vb.setLike(Integer.parseInt(like)); vb.setHate(Integer.parseInt(hate)); VoteDAO vd = new VoteDAO(); int line = 0; try { vd.regist(vb); if(line > 0){ RequestDispatcher dispatcher = request.getRequestDispatcher("WEB-INF/jsp/registFinish.jsp"); dispatcher.forward(request, response); }else{ RequestDispatcher dispatcher = request.getRequestDispatcher("WEB-INF/jsp/registError.jsp"); dispatcher.forward(request, response); } } catch (Exception e) { e.printStackTrace(); RequestDispatcher dispatcher = request.getRequestDispatcher("WEB-INF/jsp/registError.jsp"); dispatcher.forward(request, response); } } }
エラー java.lang.NumberFormatException: null java.lang.Integer.parseInt(Integer.java:542) java.lang.Integer.parseInt(Integer.java:615) vote.Regist.doPost(Regist.java:47) javax.servlet.http.HttpServlet.service(HttpServlet.java:648) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

unz.hori

2018/03/08 13:30

nullをIntegerに変換しようとして例外がでてますね
sususu

2018/03/08 13:40

ありがとうございます。likeの値を印字してみたらおっしゃる通りnullが出力されました。パラメータが送信できていないみたいでした。JSPの方を見直してみようと思います。
yukapome789

2018/03/08 14:05

titleとかはnullじゃなくて取得できてるか教えてもらえますか?
sususu

2018/03/11 08:39

返信遅れてしまって申し訳ありませんでした!どうやら私のコードで画像ファイルとテキストファイルをフォームで一度に送るのは不可能だったようでした。今回はデータベースで初期値を設定してやってみようと思います!また、エラーの確かめ方参考になりました!ありがとうございます!
guest

回答2

0

ベストアンサー

formにmultipart/form-dataを指定して送信した場合、サーブレットのgetParameterなどでは取得できません。

サーブレット仕様3.0以降をお使いであれば少し簡単に受け取れるのですが、それでも手間がかかるため、よく使われる方法として、Commons-fileupload https://commons.apache.org/proper/commons-fileupload/ を使います。

実装の仕方は https://commons.apache.org/proper/commons-fileupload/using.html の Processing the uploaded items を参考に。

アップロードしたファイルの取得方法、パラメータの取得方法とで説明とサンプルコードがあります。

投稿2018/03/08 16:09

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sususu

2018/03/11 08:33

リンクまで張っていただいてありがとうございます! 拝見させていただきましたが、初心者にはハードルが高そうに感じました。 画像ファイルとテキストファイルを同時でnullが出てしまうらしいとのことなので、今回は別々で処理してみようと思います! 返信遅れて申し訳ありません!いつもご回答ありがとうございます!
sususu

2018/03/11 11:00

何度もコメント失礼します。すいません。やはりタイトルは一緒に送りたいので頂いたリンクの方法で頑張ってみたいと思います!また質問してしまう事あるかもしれませんがよろしくお願いいたします!
A-pZ

2018/03/11 12:44

d(・ω・
退会済みユーザー

退会済みユーザー

2018/03/11 12:49

まあ「@WebServlet」使ってる時点で WEB 3.x は確定してるんだけどねw
guest

0

Integer.parseIntの使い方はストリングで受け取った値も数値にするものだと認識

https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Integer.html#parseInt-java.lang.String-

リファレンスの説明はかなり詳しく書いてあると思います。もし仕様の把握が曖昧ならリファレンスをよく読んでみることをおすすめします。

スタックトレースを拝見するとnullを渡しているようです。それがparseIntがエラーとなる原因と思います

投稿2018/03/08 13:35

KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sususu

2018/03/08 13:41

ご指摘の通りnullでした!確認不足でしたすいません! 送信のJSPの方のおかしいところがあるか確認いたしますが何かお気づきの点ありましたらご教授お願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問