前回、更新ができるようになったので今回は削除ができるようにする。
作成
admin/main.jsp変更
まずは削除のリンクを追加しよう。admin/main.jspに以下のように追記する。
○WEB-INF/admin/main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*,model.*"%>
<%
List<Donut> list=(List<Donut>)request.getAttribute("list");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="/donutshop/Main">公開ページを見る</a>
<form action="/donutshop/Admin" method="post" enctype="multipart/form-data">
商品名:<input type="text" name="name" required><br>
価格:<input type="number" name="price" step="10" required><br>
商品画像:<input type="file" name="imgname"><br>
<button type="submit">登録</button>
</form>
<% if(list != null && list.size()>0){ %>
<table border="1">
<%for(Donut d:list){ %>
<tr>
<td><img src="/donutshop/upload/<%=d.getImgname() %>"></td>
<td><%=d.getId() %></td>
<td><%=d.getName() %></td>
<td><%=d.getPrice() %></td>
<td>
<a href="/donutshop/Admin/Update?id=<%=d.getId() %>">更新</a>
</td>
<td>
<a href="/donutshop/Admin/Delete?id=<%=d.getId() %>" onclick="return confirm('削除してよろしいですか?')">削除</a>
</td>
</tr>
<%} %>
</table>
<%} %>
</body>
</html>
daoの追記
対象idのデータを削除する処理を以下のようにdaoに追記する
○dao.DonutDAO.java
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import model.Donut;
public class DonutDAO {
private Connection db;
private PreparedStatement ps;
private ResultSet rs;
private void connect() throws NamingException, SQLException {
Context context = new InitialContext();
DataSource ds = (DataSource) context.lookup("java:comp/env/donutapp");
this.db = ds.getConnection();
}
private void disconnect() {
try {
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
if (db != null) {
db.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public void ConnectCheck() {
try {
this.connect();
System.out.println("OK");
} catch (NamingException | SQLException e) {
e.printStackTrace();
} finally {
this.disconnect();
}
}
public void insertOne(Donut donut) {
try {
this.connect();
ps = db.prepareStatement("INSERT INTO donuts(name,price,imgname) VALUES(?,?,?)");
ps.setString(1, donut.getName());
ps.setInt(2, donut.getPrice());
ps.setString(3, donut.getImgname());
ps.execute();
} catch (NamingException | SQLException e) {
e.printStackTrace();
} finally {
this.disconnect();
}
}
public List<Donut> findAll() {
List<Donut> list = new ArrayList<>();
try {
this.connect();
ps = db.prepareStatement("SELECT * FROM donuts");
rs = ps.executeQuery();
while (rs.next()) {
int id = rs.getInt("id");
String title = rs.getString("name");
int price = rs.getInt("price");
String imgname = rs.getString("imgname");
list.add(new Donut(id, title, price, imgname));
}
} catch (NamingException | SQLException e) {
e.printStackTrace();
} finally {
this.disconnect();
}
return list;
}
public Donut findOne(int id) {
Donut donut = null;
try {
this.connect();
ps=db.prepareStatement("SELECT * FROM donuts WHERE id=?");
ps.setInt(1, id);
rs=ps.executeQuery();
if(rs.next()) {
String name=rs.getString("name");
int price=rs.getInt("price");
String imgname=rs.getString("imgname");
donut=new Donut(id,name,price,imgname);
}
} catch (NamingException | SQLException e) {
e.printStackTrace();
} finally {
this.disconnect();
}
return donut;
}
public void updateOne(Donut donut) {
try {
this.connect();
ps=db.prepareStatement("UPDATE donuts SET name=?,price=?,imgname=? WHERE id =?");
ps.setString(1,donut.getName());
ps.setInt(2, donut.getPrice());
ps.setString(3, donut.getImgname());
ps.setInt(4, donut.getId());
ps.executeUpdate();
} catch (NamingException | SQLException e) {
e.printStackTrace();
}finally {
this.disconnect();
}
}
public void deleteOne(int id) {
try {
this.connect();
ps=db.prepareStatement("DELETE FROM donuts WHERE id=?");
ps.setInt(1, id);
ps.execute();
} catch (NamingException | SQLException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}finally {
this.disconnect();
}
}
}
AdminDelete.java作成
新規サーブレットからAdminDelete.javaを以下のように作成する。
○controller.AdminDelete.java
package controller;
import java.io.IOException;
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.DonutDAO;
@WebServlet("/Admin/Delete")
public class AdminDelete extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id=request.getParameter("id");
if(id != null) {
DonutDAO dao=new DonutDAO();
dao.deleteOne(Integer.parseInt(id));
}
response.sendRedirect("/donutshop/Admin");
}
}
第5回終了
以上で第5回終了だ。ここまでで基本的なCRUD(Create,Read,Update,Delete)が行えるようになった。続きはこちら
コメント