###前提・実現したいこと
JavaのServletのコードを書いたのですが、思ったように動きません。
htmlを実行すると、上図のようになり、
個数を打ち込んで、servletにパラメタを送ると、下図のような画面が表示されるようにしたいです。
###発生している問題・エラーメッセージ
Eclipsで、エラーは、以下のコードで String BDRDiskNumStr に htmlで入力した値が格納されるはずが null が帰ってきてエラーになってしまいます。
// フォームで入力した文字列を格納 String BDRDiskNumStr = request.getParameter("BD-RDiskNum"); :
###該当のソースコード
Mitumori.html
html
1<!DOCTYPE html> 2<html> 3<head> 4<meta charset="UTF-8"> 5<title>Mitumori</title> 6</head> 7<body> 8<form action = 'Mitumori' method = 'post'> 9 必要な個数を入力してください。 10 <table border = '1'> 11 <tr> 12 <td>品名</td> 13 <td>単価</td> 14 <td>個数</td> 15 </tr> 16 <tr> 17 <td>BD-Rディスク</td> 18 <td>500円</td> 19 <td><input type = 'text' size = '10' name = 'BD-RDiskNum'></td> 20 </tr> 21 <tr> 22 <td>インクカートリッジ</td> 23 <td>2000円</td> 24 <td><input type = 'text' size = '10' name = 'inkcartlidgeNum'></td> 25 </tr> 26 <tr> 27 <td>A4用紙 500枚</td> 28 <td>400円</td> 29 <td><input type = 'text' size = '10' name = 'A4paper500peacesNum'></td> 30 </tr> 31 </table> 32 <input type = 'submit' value = '送信' > 33</form> 34</body> 35</html>
Mitumori.java
Java
1 2import java.io.PrintWriter; 3import java.io.IOException; 4import javax.servlet.ServletException; 5import javax.servlet.annotation.WebServlet; 6import javax.servlet.http.HttpServlet; 7import javax.servlet.http.HttpServletRequest; 8import javax.servlet.http.HttpServletResponse; 9 10/** 11 * Servlet implementation class Mitumori 12 */ 13@WebServlet("/Mitumori") 14public class Mitumori extends HttpServlet { 15 private static final long serialVersionUID = 1L; 16 17 /** 18 * @see HttpServlet#HttpServlet() 19 */ 20 public Mitumori() { 21 super(); 22 // TODO Auto-generated constructor stub 23 } 24 25 /** 26 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 27 */ 28 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 29 // TODO Auto-generated method stub 30 response.sendRedirect("Mitumori.html"); 31 } 32 33 /** 34 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 35 */ 36 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 37 // TODO Auto-generated method stub 38 response.setContentType("text/html; charset=UTF-8"); 39 PrintWriter out = response.getWriter(); 40 out.println("<html><head></head><body>"); 41 request.setCharacterEncoding("UTF-8"); 42 43 // それぞれの商品の単価 44 int BDRDiskCost = 500; 45 int inkcartlidgeCost = 2000; 46 int A4paper500peacesCost = 400; 47 48 // フォームで入力した文字列を格納 49 String BDRDiskNumStr = request.getParameter("BD-RDiskNum"); 50 String inkcartlidgeNumStr = request.getParameter("inkcartlidgeNum"); 51 String A4paper500peacesNumStr = request.getParameter("A4paper500peacesNum"); 52 53 //out.printf("BDR = %s", BDRDiskNumStr); 54 55 // 上記の文字列を数値に変換 56 int BDRDiskNum = Integer.parseInt(BDRDiskNumStr); 57 int inkcartlidgeNum = Integer.parseInt(inkcartlidgeNumStr); 58 int A4paper500peacesNum = Integer.parseInt(A4paper500peacesNumStr); 59 60 // 小計を計算 61 int BDRDiskSum = BDRDiskNum * BDRDiskCost; 62 int inkcartlidgeSum = inkcartlidgeNum * inkcartlidgeCost; 63 int A4paper500peacesSum = A4paper500peacesNum * A4paper500peacesCost; 64 int costSum = BDRDiskSum + inkcartlidgeSum + A4paper500peacesSum; 65 66 // テーブル表示 67 out.println("<table>"); 68 out.println("<tr>"); 69 out.println("<td>品名</td>"); 70 out.println("<td>単価</td>"); 71 out.println("<td>個数</td>"); 72 out.println("<td>小計</td>"); 73 out.println("</tr>"); 74 out.println("<td>BD-Rディスク</td>"); 75 out.printf("<td>%d</td>%n", BDRDiskCost); 76 out.printf("<td>%d</td>%n", BDRDiskNum); 77 out.printf("<td>%d</td>%n", BDRDiskSum); 78 out.println("<tr>"); 79 out.println("<td>インクカートリッジ</td>"); 80 out.printf("<td>%d</td>%n", inkcartlidgeCost); 81 out.printf("<td>%d</td>%n", inkcartlidgeNum); 82 out.printf("<td>%d</td>%n", inkcartlidgeSum); 83 out.println("</tr>"); 84 out.println("<tr>"); 85 out.println("<td>A4用紙 500枚</td>"); 86 out.printf("<td>%d</td>%n", A4paper500peacesCost); 87 out.printf("<td>%d</td>%n", A4paper500peacesNum); 88 out.printf("<td>%d</td>%n", A4paper500peacesSum); 89 out.println("</tr>"); 90 out.println("<tr>"); 91 out.printf("<td colspan='3'>合計</td>%n"); 92 out.printf("<td>%d</td>%n", costSum); 93 out.println("</tr>"); 94 out.println("</table>"); 95 out.println("</body></html>"); 96 out.close(); 97 } 98 99} 100
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/12 12:10