質問です。
現在Mysqlから取得した値を一覧画面のjspで表示し、そこから入力フォームのjspに移行し、入力した値でMysqlへInsert、またはupdate文を実行するコードを作成中です。
Insertの流れは完成しているのですがUpdateの流れがうまくいかず困っています。
入力用のjspはInsertとupdateで同じものを使用し、更新の場合は移行するボタンにキー情報となる"id"の値を渡してそれを入力フォームへ表示させるようにしたいのですがこの部分で詰まっています。
以下、一覧と入力のjspとなります。
<h1>一覧</h1> <a href="./Detail">新規</a> <body> <TABLE border="1"> <TR> <TH>No</TH> <TH>氏名</TH> <TH>氏名(ひらがな)</TH> <TH>更新</TH> <TH>削除</TH> </TR> <TR> <c:forEach var="tmp" items="${list}"> <TD><c:out value="${tmp.Id}" /></TD> <TD><c:out value="${tmp.name}" /></TD> <TD><c:out value="${tmp.nameHiragana}" /></TD> <TD><a href="./Detail?Id=${tmp.Id}">詳細</a></TD> <TD><a href="./Detail?Id=${tmp.Id}" onClick="window.confirm('[${tmp.abbreviation}][${tmp.name}]を削除しますか?');">削除</a></TD> <TR/> </c:forEach> </table>
<h1>更新</h1> <form action="./Detail" method="post"> <input type="hidden" name="Id" value="id ">//DBのカラム名"id" 氏名<input type="text" name="name" size="20" maxlength="20" value="${tmp.name}" ><br> 氏名(ひらがな)<input type="text" name="nameHiragana" size="20" maxlength="20"><br> <input type="submit" value="登録" /> </form> </body>
今のところ氏名の部分だけ表示させようとしていますがうまくいかないです。
どこに問題があるでしょうか、詳しい方いらっしゃればご指摘願います。
追記です。
どこの部分が必要かがわからないので関係ありそうな部分を全て記載します。
長文になって申し訳ありません・・・
public class listDao { private static final String url = "jdbc:mysql://localhost:3306/test"; private static final String user = "root"; private static final String password = ""; private static Connection conn = null; // Connectionクラス private static PreparedStatement pstmt = null; // Statementクラス private static ResultSet rs = null; // ResultSetクラス public ArrayList<Listinfo> findAll(String[] args) { ArrayList<Listinfo> listInfos = new ArrayList<Listinfo>(); // SQL文 String sql = "SELECT * FROM e_state"; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(url, user, password); pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); while (rs.next()) { // 結果表からデータを取得 Listinfo list = new Listinfo(); list.setEmployeeId(rs.getString("id")); list.setName(rs.getString("name")); list.setNameHiragana(rs.getString("name_hiragana")); listInfos.add(list); } } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { } finally { if (rs != null) { try { rs.close(); } catch (SQLException e) { } rs = null; } if (pstmt != null) { try { pstmt.close(); } catch (SQLException e) { } pstmt = null; } if (conn != null) { try { conn.close(); } catch (SQLException e) { } conn = null; } } return listInfos; }
package dto; public class Listinfo { private String Id; private String name; private String nameHiragana; public String getId() { return Id; } public String getName() { return name; } public String getNameHiragana() { return nameHiragana; } public void setId(String Id) { this.Id = Id; } public void setName(String name) { this.name = name; } public void setNameHiragana(String nameHiragana) { this.nameHiragana = nameHiragana; } }
package servlet; import java.io.IOException; import java.util.ArrayList; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import Dao.listDao; import dto.Logininfo; import dto.Listinfo; @WebServlet("/List") public class List extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //session切れでログイン画面に戻す HttpSession session = request.getSession(); Logininfo login = (Logininfo)session.getAttribute("user"); if(login == null) { response.sendRedirect("./Login"); return; } listDao daoArray = new listDao(); ArrayList<Listinfo> listInfo = daoArray.findAll(null); request.setAttribute("list", listInfo); request.getRequestDispatcher("/WEB-INF/jsp/list.jsp").forward(request, response); //list.jspへ } public void doPost(HttpServletRequest request, HttpServletResponse response) { } }
package servlet; import java.io.IOException; import java.sql.SQLException; import java.util.ArrayList; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import Dao.listDao; import dto.Listinfo; import dto.Listinfo2; /** * Servlet implementation class Detail */ @WebServlet("/Detail") public class Detail extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // HttpSession session = request.getSession(); request.setCharacterEncoding("UTF-8"); String Id = request.getParameter("Id"); String name = request.getParameter("name"); String name_hiragana = request.getParameter("nameHiragana"); listDao dao = new listDao(); //Daoクラス生成 try { dao.InsertInformation(Id, name, name_hiragana); } catch (ClassNotFoundException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } catch (SQLException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } //挿入処理} // session.setAttribute("Infomation", dao); response.sendRedirect("./List"); } }
Updateのsql文処理の部分はまだ用意してないです。
以上で足りるでしょうか?
宜しくお願い致します。