上記の通り、H2データベースを利用しデータベース登録をサーブレットを用いて行いたいと考えています。
操作手順についてですが、
1:新規登録画面にて基本情報を入力する。
2:最終確認画面にて入力情報を提示する。
3:ログイン画面を表示させ、ログインできればマイページへ移行。
このような手順で行いたいと考えております。
また、システム上の実行では以下のようになっています。
1:JSPファイル(NewForm.jsp)で新規登録画面の出力
2:上記JSPファイル内で入力された基本情報は一度サーブレットファイル(form1.java)へ渡す。
3:(form1.java)から次のJSPファイル(Result.jsp)へフォワードし最終確認画面として入力内容を再表示。
4:登録ボタンを押すとサーブレットファイル(form2.java)へディスパッチしログイン画面(Login.jsp)へフォワードを行う。
5:(Login.jsp)で入力された内容をサーブレットファイル(Form3.java)へディスパッチし、ログイン画面で入力された情報が正しければマイページ(Personalform.jsp)へ遷移
以上の流れとなっています。また、DBをどこに組み込むかですが、(form2.jsp)で登録ボタンが押下された時点でDBへ基本情報の登録。
そして、ログイン画面で入力内容の正当性を判断するためにDBへ登録されている内容を探索し、データが存在すればマイページへ遷移し、存在しなければエラー画面へ遷移する。
今はここまでを考えています。
また、データベースへのアクセスですが、読み込み、書き込み、削除、更新をそれぞれのクラスに分け、それをインスタンス化して使おうと考えています。
まだ、作成途中ではありますが、DBAccess2.javaのコードを掲載します。
上手くいかないこと
1:JSPからサーブレットで受け取った入力情報をデータベースへ格納できない(単純にどのようにすればよいのかわからない)
2:クラス単体で実行するとデータベースへ登録できるが、インスタンス化して使おうとすると登録できなくなる。
以上となります。(念のため構成図も作成したので載せておきます。)
出来れば、サンプルとなるコードを掲示しご説明いただけますと幸いです。
form2.java
1package Form2; 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 form2 14 */ 15@WebServlet("/form2") 16public class form2 extends HttpServlet { 17 private static final long serialVersionUID = 1L; 18 19 /** 20 * @see HttpServlet#HttpServlet() 21 */ 22 public form2() { 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 response.getWriter().append("Served at: ").append(request.getContextPath()); 33 34 System.out.println("Test3"); 35 String view2 = "/WEB-INF/view/Result.jsp"; 36 RequestDispatcher dispatcher2 = request.getRequestDispatcher(view2); 37 38 dispatcher2.forward(request, response); 39 40 41 } 42 43 /** 44 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 45 */ 46 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 47 // TODO Auto-generated method stub 48 49 String view3 = "/WEB-INF/view/Login.jsp"; 50 RequestDispatcher dispatcher3 = request.getRequestDispatcher(view3); 51 52 dispatcher3.forward(request, response); 53 54 55 //doGet(request, response); 56 } 57} 58
form3.java
1package form3; 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 Form3 14 */ 15@WebServlet("/Form3") 16public class Form3 extends HttpServlet { 17 private static final long serialVersionUID = 1L; 18 19 /** 20 * @see HttpServlet#HttpServlet() 21 */ 22 public Form3() { 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 response.getWriter().append("Served at: ").append(request.getContextPath()); 33 String view3 = "/WEB-INF/view/Login.jsp"; 34 RequestDispatcher dispatcher4 = request.getRequestDispatcher(view3); 35 36 37 38 dispatcher4.forward(request, response); 39 } 40 41 /** 42 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 43 */ 44 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 45 // TODO Auto-generated method stub 46 47 String value = request.getParameter("uid"); 48 String value1 = request.getParameter("pwd"); 49 50 request.setAttribute(value, "uid"); 51 request.setAttribute(value1, "pwd"); 52 53 54 String view4 = "/WEB-INF/view/Personalform.jsp"; 55 RequestDispatcher dispatcher5 = request.getRequestDispatcher(view4); 56 57 dispatcher5.forward(request, response); 58 //doGet(request, response); 59 } 60 61} 62
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">UserID</td> 47 <td align="left" bgcolor="#E6E1FF"> 48 <input type="text" name="Userid" size=16> 49 <font size=2>(Half-width alphanumeric)</font> 50 </td> 51 </tr> 52 <tr> 53 <td align="center" bgcolor="#C0C0C0">Password</td> 54 <td align="left" bgcolor="#E6E1FF"> 55 <input type="password" name="password" size=16> 56 <font size=2>(Half-width alphanumeric)</font> 57 </td> 58 </tr> 59 </table> 60 </td></tr> 61 </table> 62 <br> 63 <button type = "submit">Registration</button> 64 </form> 65 </div> 66 </body> 67 </html>
DBAccess2.java
1package Form1; 2 3import java.sql.Connection; 4import java.sql.DriverManager; 5import java.sql.SQLException; 6import java.sql.Statement; 7 8 9public class DBAccess { 10 11 /** 12 * テーブル名。 13 */ 14 private static final String TABLE_NAME = "NewPersonForm"; 15 16 /** 17 * テスト処理を実行します。 18 * 19 * @param args 20 */ 21 public static void main(String[] args) { 22 DBAccess userDB = new DBAccess(); 23 24 try { 25 // オブジェクトを生成 26 userDB.create(); 27 28 // SELECT文の実行 29 userDB.executeInsert("001", "Masaki Fukaya", "MartinQwer1234", "Martin", "33-11"); 30 } catch (Throwable t) { 31 t.printStackTrace(); 32 } finally { 33 // オブジェクトを破棄 34 userDB.close(); 35 } 36 } 37 38 /** 39 * Connectionオブジェクトを保持します。 40 */ 41 private Connection _connection; 42 43 /** 44 * Statementオブジェクトを保持します。 45 */ 46 private Statement _statement; 47 48 /** 49 * 構築します。 50 */ 51 public DBAccess() { 52 _connection = null; 53 _statement = null; 54 } 55 56 /** 57 * オブジェクトを生成します。 58 */ 59 public void create() throws ClassNotFoundException, SQLException { 60 // 下準備 61 Class.forName("org.h2.Driver"); 62 _connection = DriverManager.getConnection( 63 "jdbc:h2:tcp://localhost/~/test", "sa", ""); 64 _statement = _connection.createStatement(); 65 } 66 67 /** 68 * 各種オブジェクトを閉じます。 69 */ 70 public void close() { 71 if (_statement != null) { 72 try { 73 _statement.close(); 74 } catch (SQLException e) { 75 ; 76 } 77 _statement = null; 78 } 79 if (_connection != null) { 80 try { 81 _connection.close(); 82 } catch (SQLException e) { 83 ; 84 } 85 _connection = null; 86 } 87 } 88 89 /** 90 * INSERT処理を実行します。 91 * 92 * @param id 93 * @param name 94 * @param password 95 * @param nickname 96 * @param adress 97 */ 98 public void executeInsert(String id, String name, String password, String nickname, String adress) 99 throws SQLException { 100 // SQL文を発行 101 int updateCount = _statement.executeUpdate("INSERT INTO " + TABLE_NAME 102 + " (ID,NAME,PASSWORD,NICKNAME,ADRESS) VALUES ('" + id + "','" + name + "','" 103 + password + "','"+nickname+"','"+adress+"')"); 104 System.out.println("Insert: " + updateCount); 105 } 106} 107
あなたの回答
tips
プレビュー