前提・実現したいこと
DBの住所録一覧を取得し、表示させている画面(住所録一覧画面のjsp)で、名前の部分に、doGet()メソッドが走るリンクを指定し、名前に紐づくレコードを取得したいのです。
DBのテーブル構造は、名前をプライマリーキーにしていまして、jspの画面から選択した名前部分をServlet側に渡したいです。どのようにすればよろしいでしょうか?
発生している問題・エラーメッセージ
名前に紐づくレコードを取得したいが、jsp画面のからServlet側に特定の名前を渡す方法がわかりません。
該当のソースコード
java
1package servlet; 2 3import java.io.IOException; 4import java.sql.SQLException; 5 6import javax.servlet.RequestDispatcher; 7import javax.servlet.ServletException; 8import javax.servlet.annotation.WebServlet; 9import javax.servlet.http.HttpServlet; 10import javax.servlet.http.HttpServletRequest; 11import javax.servlet.http.HttpServletResponse; 12 13import logic.EditAddressInfoLogic; 14import model.AddressBookInfo; 15import model.AddressBookInfoCondDto; 16 17 18/** 19 * 20 * 住所録のデータを編集するServletクラス 21 * @author 22 * 23 */ 24@WebServlet("/EditAddressInfo") 25public class EditAddressInfoServlet extends HttpServlet { 26 private static final long serialVersionUID = 1L; 27 28 /** 29 * 編集画面をフォワード 30 */ 31 @Override 32 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 33 34 // 文字コード指定 35 response.setContentType("text/html; charset=UTF-8"); 36 37 // EditAddressInfoLogicのインスタンス化 38 EditAddressInfoLogic editAddress = new EditAddressInfoLogic(); 39 40 // 名前情報を取得 41 String name = null; 42 43 // 名前に紐づくレコードを取得 44 AddressBookInfo addressInfo = editAddress.getRecode(name); 45 46 // リクエストスコープに保存 47 request.setAttribute("addressInfo", addressInfo); 48 49 // 編集画面をフォワード 50 RequestDispatcher dispatcher = request.getRequestDispatcher("/jsp/addressEdit.jsp"); 51 dispatcher.forward(request, response); 52 53 } 54 55 /** 56 * データベースに編集を登録 57 */ 58 @Override 59 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 60 61 // 文字コード指定 62 response.setContentType("text/html; charset=Shift_JIS"); 63 64 // EditAddressInfoLogicのインスタンス化 65 EditAddressInfoLogic addressInfo = new EditAddressInfoLogic(); 66 67 // formデータを格納した変数?の作成 68 AddressBookInfoCondDto condDto = convertFormToCondDto(request); 69 70 // UPDATEをかけるメソッドの呼び出し(引数にformから受け取ったデータ) 71 try { 72 addressInfo.edit(condDto); 73 } catch (ClassNotFoundException e) { 74 // TODO 自動生成された catch ブロック 75 e.printStackTrace(); 76 } catch (InstantiationException e) { 77 // TODO 自動生成された catch ブロック 78 e.printStackTrace(); 79 } catch (IllegalAccessException e) { 80 // TODO 自動生成された catch ブロック 81 e.printStackTrace(); 82 } catch (SQLException e) { 83 // TODO 自動生成された catch ブロック 84 e.printStackTrace(); 85 } 86 87 } 88 89 /** 90 * formデータパラメータの詰め替え 91 */ 92 private AddressBookInfoCondDto convertFormToCondDto(HttpServletRequest request) { 93 94 // パラメータの詰替変数?の作成 95 AddressBookInfoCondDto condDto = new AddressBookInfoCondDto(); 96 97 // パラメータにformデータを詰める 98 condDto.setName(request.getParameter("name")); 99 condDto.setAddr(request.getParameter("addr")); 100 condDto.setTelNum(request.getParameter("telNum")); 101 102 return condDto; 103 } 104 105}
住所録一覧画面
jsp
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<%@ page import="model.AddressBookInfo, java.util.List"%> 4<% 5List<AddressBookInfo> addressBookList = (List<AddressBookInfo>)request.getAttribute("addressBookList"); 6%> 7<!DOCTYPE html> 8<html> 9<head> 10<meta charset="UTF-8"> 11<title>Insert title here</title> 12</head> 13<body> 14 15 <form action="/FileUploadApp/CsvFileReadServlet" enctype="multipart/form-data" method="POST"> 16 アップロードするcsvファイルを選択してください<br> 17 <input type="file" name="uploadFile"><br> 18 <input type="submit" value="upload"> 19 </form> 20 21 <table> 22 <tr> 23 <td>名前</td> 24 <td>住所</td> 25 <td>電話番号</td> 26 </tr> 27 <% for(AddressBookInfo addressBook : addressBookList) { %> 28 <tr> 29 <td><a href="/FileUploadApp/EditAddressInfoServlet"><%= addressBook.getName() %></a></td> 30 <td><%= addressBook.getAddr() %></td> 31 <td><%= addressBook.getTelNum() %></td> 32 </tr> 33 <% } %> 34 </table> 35 36</body> 37</html>
編集画面
jsp
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<!DOCTYPE html> 4<html> 5<head> 6<meta charset="UTF-8"> 7<title>Insert title here</title> 8</head> 9<body> 10 <form action="/FileUploadApp/EditAddressInfoServlet" method="POST"> 11 <br> 12 名 前 :<input type="text" name="name" value=<%= %>><br> 13 住 所 :<input type="text" name="addr"><br> 14 電話番号:<input type="text" name="telNum"><br> 15 <input type="submit" value="update"> 16 </form> 17</body> 18</html> 19
補足情報(FW/ツールのバージョンなど)
formのパラメータをServletに渡す際にHttpServletRequestクラスのgetParameter()メソッドを使いますが、同じように、HttpServletRequestクラスでaタグ内の文字をServletに渡すことはできないのでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。