タイトル通りですが、JSPで数字を入力→Servletで結果を算出→Beanに格納→JSP(get)で出力。
という順番で計算を行うコードを作ろうとしています。
その際に、トップ画面は表示出来ましたが次のようなエラーが出て内容が分からず解決できませんでした。.Javaので2ファイル作成中にはエラー表示はありませんでした。勉強不足で申し訳ございませんが、宜しくお願い致します。
<使用ソフト>
eclipse Version: Oxygen.3a Release (4.7.3a)
Apache Tomcat/8.0.50
【エラーコード】 HTTPステータス 500 - For input string: "" type 例外レポート メッセージ For input string: "" 説明 The server encountered an internal error that prevented it from fulfilling this request. 例外 java.lang.NumberFormatException: For input string: "" java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) java.lang.Integer.parseInt(Integer.java:592) java.lang.Integer.parseInt(Integer.java:615) ex.Question04Servlet.doPost(Question04Servlet.java:38) 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) 注意 原因のすべてのスタックトレースは、Apache Tomcat/8.0.50のログに記録されています Apache Tomcat/8.0.50
JSP
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 5<%-- Java Beanクラスを使う --%> 6<jsp:useBean id="formBean" scope="session" class="ex.Question04FormBean" /> 7 8<html> 9<head> 10<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 11<title>練習問題</title> 12</head> 13<body> 14 15 <h1>Beanを使う</h1> 16 <br> 17 <hr> 18 <br> 19 <form method="POST" action="/question4/sample"> 20 <table border="1"> 21 <tr> 22 <td>数字1</td> 23 <td><input type="text" name="inputData1" value=""></td> 24 </tr> 25 <tr> 26 <td>数字2</td> 27 <td><input type="text" name="inputData2" value=""></td> 28 </tr> 29 </table> 30 <br> 31 <hr> 32 <br> <input type="submit" value="計算"> 33 </form> 34 35 <p><font color="red"><jsp:getProperty property="msg" name="formBean"/></font></p> 36</body> 37</html>
Java
1//Servlet 2package ex; 3 4import java.io.IOException; 5 6import javax.servlet.RequestDispatcher; 7import javax.servlet.ServletException; 8import javax.servlet.http.HttpServlet; 9import javax.servlet.http.HttpServletRequest; 10import javax.servlet.http.HttpServletResponse; 11 12public class Question04Servlet extends HttpServlet { 13 14 public void doPost(HttpServletRequest request, HttpServletResponse response) 15 throws IOException, ServletException { 16 17 // レスポンスの為のコンテンツタイプの設定。クライアントにどのようなデータを送るのかを指定 18 response.setContentType("text/html; charset=utf-8"); 19 // リクエストのエンコードの設定。リクエスト・パラメータ読み込み時の文字コードを明示 20 request.setCharacterEncoding("utf-8"); 21 22 //Beanクラスのインスタンス生成 23 Question04FormBean q4 = new Question04FormBean(); 24 25 //リクエストからパラメータの取得 26 String inputData1 = request.getParameter("inputData1"); 27 String inputData2 = request.getParameter("inputData2"); 28 String msg = "入力に不備があります。整数を入力してください。"; 29 30 //入力チェック(「null」或いは、空文字チェック) 31 if (null == inputData1 || "".equals(inputData1)) { 32 //入力値がない場合 33 q4.setMsg(msg); 34 } else if (null == inputData2 || "".equals(inputData2)) { 35 //入力値がある場合 36 q4.setMsg(msg); 37 } 38 39 //整数に変換 40 int number1 = Integer.parseInt(inputData1); 41 int number2 = Integer.parseInt(inputData2); 42 43 //足算を実施 44 int sum = number1 + number2; 45 msg = String.valueOf(sum); 46 q4.setMsg(msg); 47 48 //リクエストに「msg」をキーに値をセット 49 request.setAttribute("msg", msg); 50 } 51 52} 53
Java
1//Bean 2package ex; 3 4public class Question04FormBean { 5 private String msg; 6 7 public String getMsg() { 8 return msg; 9 } 10 public void setMsg(String msg) { 11 this.msg = msg; 12 } 13} 14
xml
1//web.xmlファイル 2 3<?xml version="1.0" encoding="UTF-8"?> 4<web-app xmlns="http://java.sun.com/xml/ns/javaee" 5 xmlns:xsi="http://www.w3c.org/2001/XMLSchema-instannce" 6 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee/ 7 web-app_2_4.xsd" version="2.4"> 8 9 <display-name>ServletSample</display-name> 10 <welcome-file-list> 11 <welcome-file>ex/input.jsp</welcome-file> 12 </welcome-file-list> 13 14 <servlet> 15 <servlet-name>test</servlet-name> 16 <servlet-class>ex.Question04Servlet</servlet-class> 17 </servlet> 18 19 <servlet-mapping> 20 <servlet-name>test</servlet-name> 21 <url-pattern>/sample</url-pattern> 22 </servlet-mapping> 23 24</web-app>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/12 03:46