🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

11925閲覧

<table> の一行を削除ボタンを押すと消せるようにしたい

kokok

総合スコア145

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2019/09/10 06:21

編集2019/09/10 06:44

html

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 4<!DOCTYPE html> 5<html> 6<head> 7<meta charset="UTF-8"> 8<title>success</title> 9</head> 10<body> 11 12<form action="/webkensyu/Userlist" method="get"> 13<button type="submit" name="button1" >ユーザー一覧</button> 14<button type="submit" name="button2" >パスワード変更</button> 15<button type="submit" name="button4" >住所一覧</button> 16<button type="submit" name="button3" >ログアウト</button> 17</form> 18</body> 19</html>

java

1//ファイル名  Userlist 2 3package servlet; 4 5import java.io.IOException; 6import java.util.ArrayList; 7 8import javax.servlet.RequestDispatcher; 9import javax.servlet.ServletException; 10import javax.servlet.annotation.WebServlet; 11import javax.servlet.http.HttpServlet; 12import javax.servlet.http.HttpServletRequest; 13import javax.servlet.http.HttpServletResponse; 14 15import dao.DBIO; 16 17 18@WebServlet("/Userlist") 19public class Userlist extends HttpServlet { 20 private static final long serialVersionUID = 1L; 21 22 23 public Userlist() { 24 super(); 25 26 } 27 28 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 29 30 request.setCharacterEncoding("UTF-8"); 31 32 if(request.getParameter("button1") != null) { 33 DBIO dbio = new DBIO(); 34 ArrayList<String> userlist = dbio.getUser(); 35 36 request.setAttribute("userlist", userlist); 37 38 RequestDispatcher dispatcher = request.getRequestDispatcher("/userlist.jsp"); 39 dispatcher.forward(request, response); 40 } 41 42 if(request.getParameter("button2") != null) { 43 RequestDispatcher dispatcher = request.getRequestDispatcher("/password.jsp"); 44 dispatcher.forward(request, response); 45 } 46 if(request.getParameter("button3") != null) { 47 RequestDispatcher dispatcher = request.getRequestDispatcher("/login.html"); 48 dispatcher.forward(request, response); 49 } 50 if(request.getParameter("button4") != null) { 51 RequestDispatcher dispatcher = request.getRequestDispatcher("/Address"); 52 dispatcher.forward(request, response); 53 } 54 } 55 56 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 57 58 doGet(request, response); 59 } 60 61} 62

java

1//ファイル名 DBIO,java 2 3package dao; 4 5import java.sql.Connection; 6import java.sql.DriverManager; 7import java.sql.PreparedStatement; 8import java.sql.ResultSet; 9import java.sql.SQLException; 10import java.util.ArrayList; 11 12public class DBIO { 13 14 protected static final String DBNAME = "jdbc:mysql://localhost:3306/webkensyu?useUnicode =true&characterEncoding=utf8"; 15 protected static final String DBUSER = "user"; 16 protected static final String DBPASS = "pass"; 17 protected Connection conn; 18 19 20 public DBIO(){ 21 this.connect(); 22} 23 24 public void connect() { 25 try { 26 27 Class.forName("com.mysql.jdbc.Driver"); 28 29 conn = DriverManager.getConnection(DBNAME,DBUSER,DBPASS); 30 31 32 } catch(SQLException e) { 33 34 e.printStackTrace(); 35 36 }catch(ClassNotFoundException e) { 37 38 e.printStackTrace(); 39 40 } 41 } 42 43 public void close() { 44 45 if(conn != null) { 46 try { 47 conn.close(); 48 }catch(SQLException e) { 49 e.printStackTrace(); 50 } 51 } 52 } 53} 54

java

1 2//ファイル名  ADDR_DB 3package dao; 4 5import java.sql.PreparedStatement; 6import java.sql.ResultSet; 7import java.sql.SQLException; 8import java.util.ArrayList; 9 10public class ADDR_DB extends DBIO{ 11 12 public ADDR_DB(){ 13 connect(); 14 } 15 16 //郵便番号の取得 17 public ArrayList<String> getpost(){ 18 ArrayList<String> post = new ArrayList<String>(); 19 20 21try { 22 23 connect(); 24 25 String sql ="SELECT address_code FROM addresses"; 26 27 28 PreparedStatement pstmt = conn.prepareStatement(sql); 29 ResultSet rs = pstmt.executeQuery(); 30 31 while(rs.next()) { 32 33 post.add(rs.getString("address_code")); 34 35 } 36 37 }catch(SQLException e){ 38 39 e.printStackTrace(); 40 41 }finally { 42 43 close(); 44 } 45 46 47 return post; 48 } 49 50 51 52 //住所一覧取得する 53 public ArrayList<String> getaddrss() { 54 ArrayList<String> result = new ArrayList<String>(); 55 56 try { 57 58 connect(); 59 60 String sql ="SELECT CONCAT(address_prefecture, address_city, address_street) AS address FROM addresses"; 61 62 63 PreparedStatement pstmt = conn.prepareStatement(sql); 64 ResultSet rs = pstmt.executeQuery(); 65 66 while(rs.next()) { 67 68 result.add(rs.getString("address")); 69 70 } 71 72 }catch(SQLException e){ 73 74 e.printStackTrace(); 75 76 }finally { 77 78 close(); 79 } 80 return result; 81 } 82 83 //住所の登録 84 public boolean add_Registration(String post, String prefe, String munici, String addr) { 85 86 try { 87 connect(); 88 89 String sql = "INSERT INTO addresses(address_code,address_prefecture,address_city,address_street )VALUES(?,?,?,?) "; 90 PreparedStatement pstmt = conn.prepareStatement(sql); 91 pstmt.setString(1, post); 92 pstmt.setString(2, prefe); 93 pstmt.setString(3, munici); 94 pstmt.setString(4, addr); 95 int rs = pstmt.executeUpdate(); 96 if(rs == 1) { 97 98 return true; 99 }else { 100 return false; 101 102 } 103 104 }catch(SQLException e) { 105 106 e.printStackTrace(); 107 }finally { 108 109 close(); 110 } 111 return false; 112 } 113 114//住所を削除する 115 public boolean address_delete(String post) { 116 117 try { 118 connect(); 119 String sql = "DELETE FROM addresses WHERE CONCAT(address_prefecture ,address_city, address_street) = ?"; 120 PreparedStatement pstmt = conn.prepareStatement(sql); 121 pstmt.setString(1, post); 122 int rs = pstmt.executeUpdate(); 123 if(rs == 1) { 124 125 return true; 126 }else { 127 return false; 128 129 } 130 }catch(SQLException e) { 131 e.printStackTrace(); 132 133 }finally { 134 135 close(); 136 } 137 return false; 138 } 139} 140

java

1 2//ファイル名 Address.java 3package servlet; 4 5import java.io.IOException; 6import java.util.ArrayList; 7 8import javax.servlet.RequestDispatcher; 9import javax.servlet.ServletException; 10import javax.servlet.annotation.WebServlet; 11import javax.servlet.http.HttpServlet; 12import javax.servlet.http.HttpServletRequest; 13import javax.servlet.http.HttpServletResponse; 14import javax.servlet.http.HttpSession; 15 16import dao.ADDR_DB; 17 18 19@WebServlet("/Address") 20public class Address extends HttpServlet { 21 private static final long serialVersionUID = 1L; 22 23 24 public Address() { 25 super(); 26 27 } 28 29 30 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 31 32 33 request.setCharacterEncoding("UTF-8"); 34 ADDR_DB addrdb = new ADDR_DB(); 35 ArrayList<String> result = addrdb.getaddrss(); 36 ArrayList<String> post = addrdb.getpost(); 37 38 HttpSession session = request.getSession(true); 39 40 41 session.setAttribute("post", post); 42 session.setAttribute("result", result); 43 44 45 46 RequestDispatcher dispatcher = request.getRequestDispatcher("/address_view.jsp"); 47 dispatcher.forward(request, response); 48 49 50 } 51 52 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 53 54 doGet(request, response); 55 } 56} 57

html

1//ファイル名 address_view.jsp 2 3<%@ page language="java" contentType="text/html; charset=UTF-8" 4 pageEncoding="UTF-8"%> 5 <%@ page import="java.util.ArrayList"%> 6<!DOCTYPE html> 7<html> 8<head> 9<meta charset="UTF-8"> 10<title>住所一覧</title> 11 <link rel="stylesheet" type="text/css" href="style2.css"> 12 </head> 13</head> 14<body> 15<table border="1"style="border: 1px solid black; border-collapse: collapse;"> 16<% HttpSession ssn = request.getSession(false); %> 17<%ArrayList<String> address = (ArrayList<String>) ssn.getAttribute("result");%> 18<%ArrayList<String> post = (ArrayList<String>) ssn.getAttribute("post");%> 19<%int i=0;%> 20<tr> 21<th class="th1">郵便番号</th> 22<th class="th2">住所</th> 23</tr> 24<%for(String addr : address){ %> 25<tr> 26<td class="th1"> 27<%=post.get(i)%> 28</td> 29<td class="th2"> 30<a href=""><%=addr%></a> 31</td> 32<td> 33<form action="" method="post"> 34<button type="button" name="button">削除</button> 35</form> 36</td> 37</tr> 38<%i++;%> 39<%}%> 40<tr class="tr3"> 41<td colspan = "2" align="center"> 42<form action="address_add.jsp" method="get"> 43<button type="submit" name="button1" >追加</button> 44</form> 45</td> 46</tr> 47</table> 48<form action="success.jsp" method="get"> 49<button type="submit" name="button2">戻る</button> 50</form> 51<form action="addr_delete.jsp" method="get"> 52<button type="submit" name="button3">住所削除</button> 53</form> 54<form action="addr_update.jsp" method="get"> 55<button type="submit" name="button4">住所更新</button> 56</form> 57</body> 58</html>

イメージ説明

画像の右側の削除ボタンを押すと 削除ボタンを押した行が削除されるようにしたいと考えております。

html

1<% HttpSession ssn = request.getSession(false); %> 2<%ArrayList<String> address = (ArrayList<String>) ssn.getAttribute("result");%> 3<%ArrayList<String> post = (ArrayList<String>) ssn.getAttribute("post");%> 4<%int i=0;%> 5<tr> 6<th class="th1">郵便番号</th> 7<th class="th2">住所</th> 8</tr> 9<%for(String addr : address){ %> 10<tr> 11<td class="th1"> 12<%=post.get(i)%> 13</td> 14<td class="th2"> 15<a href=""><%=addr%></a> 16</td> 17<td> 18<form action="" method="post"> 19<button type="button" name="button">削除</button> 20</form> 21</td> 22</tr> 23<%i++;%> 24<%}%>

データベースからデータを取得しそれをfor文で一気に表示しているので、一行ずつ削除する方法がなかなかどうすればいいのか考え方が浮かんできませんでした。
(郵便番号を同じ場合があるみたいなので個別に削除したいです。)

少しでもアドバイス頂けるとほんとに助かります。

---テーブル定義追記---
CREATE TABLE webkensyu.addresses
(
address_id INT NOT NULL,
address_code CHAR(8) NOT NULL,
address_prefecture VARCHAR(4) NOT NULL,
address_city VARCHAR(10) NOT NULL,
address_street VARCHAR(255),
CONSTRAINT PRIMARY KEY (address_id)
);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/09/10 06:36

どのように住所データを作ったのか分かりませんが、 ひとまずテーブル定義(CREATE TABLE文)をご提示ください。 何かしら一意になる情報があるはずです
guest

回答1

0

ベストアンサー

idがあってそれがPKならidをhiddenにしてconcat()で連結しなくても
idだけで削除すれば良いです。

jsp

1<form action="" method="post"> 2<input type="hidden" name="delete_id" value="<%=address_id%>"> 3<button type="button" name="button">削除</button> 4</form>

java

1String sql = "DELETE FROM addresses WHERE address_id = ?"

select結果の改修も必要ですね。
address_idも取得するように。

投稿2019/09/10 06:48

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kokok

2019/09/10 07:31

回答ありがとうございます。 <%ArrayList<String> adid = (ArrayList<String>) ssn.getAttribute("adid");%> <form action="Addr_delete" method="post"> <input type="hidden" name="delete_id" value="<%=adid.get(j)%>"> <button type="button" name="button">削除</button> </form> 参考に書いてみました。 実行して formの削除ボタンを押しても画面の遷移が行われません。 for文で formをbuttonを何度も作成しているからでしょうか?
m.ts10806

2019/09/10 07:33

type="button" ↓ type="submit" 私は提示されたコードをもとに書いたので、元のコードでも送信されてませんね。
kokok

2019/09/10 08:03

簡単なミスで質問してしまい、ほんとに申し訳ないです。 もっと、上手くいかないときにミスに気付けるように頑張ります。 回答を参考に行の削除をすることができました。 ありがとうございます。
m.ts10806

2019/09/10 08:05

送信・画面遷移が嫌ならAjaxという手もあります。(というか一覧から削除する系はAjaxのほうが動作は自然かもしれません)
kokok

2019/09/10 08:16

Ajaxの勉強をして実装してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問