主な流れとしては、「新規会員登録画面」→「入力された情報をJavaサーブレットへ渡す」→「JavaサーブレットからJSPへ文字列を渡し、最終確認画面に文字列を表示」と考えています。
現状、最終確認画面の表示まではできていますが、文字列を表示することが出来ません。
過去に、JavaサーブレットからJSPファイルへは文字列及び値の引き渡しは出来ないのではないか?と助言をいただいたこともあり、以下の方法をお勧めされました。
「それぞれの入力項目(名前だったら名前クラス)をクラスごとに分割しインスタンス化を行う。その後、JSPファイルへと値を渡す」
実際に試してみましたがなかなかうまくいきません。(なので、クラスを作成する前の段階に戻し何とかできないか試行錯誤中)
その為、ソースコードにおかしな箇所や不足している事などを教えていただきたいです。
以下に試したこと、実行環境、ソースコード(ファイルごと)、結果のキャプチャを載せますので、ご助言をどうぞよろしくお願いいたします。
試したこと
1:サーブレットのファイル(form1.java): setAttributeでjspファイル(Result.jsp)に送る文字列をセット。
2:サーブレットにて、それぞれの入力項目ごとのクラスを作成し、インスタンス化してjspファイル(Result.jsp)へ送信。
実行環境
Tomcat v8.5サーバー
ソースコード
①サーブレット
form1.java
1package Form1; 2 3import java.io.IOException; 4 5import javax.servlet.RequestDispatcher; 6import javax.servlet.ServletException; 7import javax.servlet.annotation.WebServlet; 8import javax.servlet.http.HttpServlet; 9import javax.servlet.http.HttpServletRequest; 10import javax.servlet.http.HttpServletResponse; 11 12/** 13 * Servlet implementation class form1 14 */ 15@WebServlet("/form1") 16public class form1 extends HttpServlet { 17 private static final long serialVersionUID = 1L; 18 19 /** 20 * @see HttpServlet#HttpServlet() 21 */ 22 public form1() { 23 super(); 24 // TODO Auto-generated constructor stub 25 } 26 27 /** 28 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 29 */ 30 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 31 // TODO Auto-generated method stub 32 System.out.println("Test1"); 33 String view = "/WEB-INF/view/NewForm.jsp"; 34 RequestDispatcher dispatcher = request.getRequestDispatcher(view); 35 36 dispatcher.forward(request, response); 37 38 } 39 40 /** 41 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 42 */ 43 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 44 // TODO Auto-generated method stub 45 System.out.println("Test2"); 46 String value = request.getParameter("name"); 47 System.out.println(value); 48 String value1 = request.getParameter("Adress"); 49 System.out.println(value1); 50 String value2 = request.getParameter("callphone"); 51 System.out.println(value2); 52 String value3 = request.getParameter("nickname"); 53 System.out.println(value3); 54 String value4 = request.getParameter("password"); 55 System.out.println(value4); 56 57 request.setAttribute(value, "name"); 58 request.setAttribute(value1, "Adress"); 59 request.setAttribute(value2, "callphone"); 60 request.setAttribute(value3, "nickname"); 61 request.setAttribute(value4, "password"); 62 63 String view1 = "/WEB-INF/view/Result.jsp"; 64 RequestDispatcher dispatcher1 = request.getRequestDispatcher(view1); 65 66 dispatcher1.forward(request, response); 67 68 //doGet(request, response); 69 } 70 71} 72
②入力フォーム画面のjspファイル
NewForm.jsp
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <html> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> 6 <title>sign up</title> 7 <script type ="text/javascript"> 8 function exec(){ 9 document.getElementById("fm").submit(); 10 } 11 </script> 12 </head> 13 <body> 14 <div> 15 New Person Form 16 <br><br> 17 [New Action]<br><br> 18 <h1>Contents</h1> 19 <form id="fm" action="form1" method="Post"> 20 <table border="0" cellspacing="0" cellpadding="0" bgcolor="#000000"> 21 <tr><td> 22 <table border="0" cellspacing="1" cellpadding="4"> 23 <tr> 24 <td align="center" bgcolor="#C0C0C0">NAME</td> 25 <td align="left" bgcolor="#E6E1FF"> 26 <input type="text" name="name" size=40></td> 27 </tr> 28 <tr> 29 <td align="center" bgcolor="#C0C0C0">Street address</td> 30 <td align="left" bgcolor="#FFFFFF"> 31 <input type="text" name="Adress" size=60></td> 32 </tr> 33 <tr> 34 <td align="center" bgcolor="#C0C0C0">Phone Number</td> 35 <td align="left" bgcolor="#E6E1FF"> 36 <input type="text" name="callphone" size=70></td> 37 </tr> 38 <tr> 39 <td align="center" bgcolor="#C0C0C0">Nickname</td> 40 <td align="left" bgcolor="#FFFFFF"> 41 <input type="text" name="nickname" size=16 value=""> 42 <font size=2>(Half-width alphanumeric)</font> 43 </td> 44 </tr> 45 <tr> 46 <td align="center" bgcolor="#C0C0C0">Password</td> 47 <td align="left" bgcolor="#E6E1FF"> 48 <input type="password" name="password" size=16> 49 <font size=2>(Half-width alphanumeric)</font> 50 </td> 51 </tr> 52 </table> 53 </td></tr> 54 </table> 55 <br> 56 <button type = "submit">Registration</button> 57 </form> 58 </div> 59 </body> 60 </html>
③最終確認画面のjspファイル
Result.jsp
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<!DOCTYPE html> 4<html> 5<head> 6<meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> 7<title>Final Confirm</title> 8 <script type ="text/javascript"> </script> 9</head> 10<body> 11 <br><br> 12 Final Confirm Person Diteil<br><br> 13 <h1>Contents</h1> 14 <form method="Post" action="form1"> 15 <table border="0" cellspacing="0" cellpadding="0" bgcolor="#000000"> 16 <tr><td> 17 <table border="0" cellspacing="1" cellpadding="4"> 18 <tr> 19 <% 20 //リクエストスコープからのデータの取得(name) 21 String value = (String)request.getAttribute("value"); 22 %> 23 <% 24 //リクエストスコープからのデータの取得(Adress) 25 String value1 = (String)request.getAttribute("value1"); 26 %> 27 <% 28 //リクエストスコープからのデータの取得(callphone) 29 String value2 = (String)request.getAttribute("value2"); 30 %> 31 <% 32 //リクエストスコープからのデータの取得(nickname) 33 String value3 = (String)request.getAttribute("value3"); 34 %> 35 <% 36 //リクエストスコープからのデータの取得(password) 37 String value4 = (String)request.getAttribute("value4"); 38 %> 39</form> 40</body> 41</html>
最終確認画面(jspファイルに直接書き込んだタイトルなどは表示できています)
追加
Result.jsp
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<!DOCTYPE html> 4<html> 5<head> 6<meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> 7<title>Final Confirm</title> 8 <script type ="text/javascript"> </script> 9</head> 10<body> 11 <br><br> 12 Final Confirm Person Diteil<br><br> 13 <h1>Contents</h1> 14 <form method="Post" action="form1"> 15 <table border="0" cellspacing="0" cellpadding="0" bgcolor="#000000"> 16 <tr><td> 17 <table border="0" cellspacing="1" cellpadding="4"> 18 <tr> 19 name:<%=request.getParameter("name") %><br> 20 Adress:<%=request.getParameter("Adress") %><br> 21 callphone:<%=request.getParameter("callphone") %><br> 22 nickname:<%=request.getParameter("nickname") %><br> 23 password:<%=request.getParameter("password") %><br> 24</form> 25</body> 26</html>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。