💡
【初心者向け/ITスクール48日】ServerとDB連携(Update/Delete)
はじめに
今日は、ITスクールに通った48日目の日で、今日学んだ知識を記事にシェアしたいと思います。本記事が、ITを勉強を始めた方々にもロードマップになればいいと思います。
48日目は、今まで、JDBCとTomcatを連携し、データーをUpdate,Deleteをするす練習しました。
昨日、作成した掲示板サイトをアレンジする感じでした。
Read
今回は、テーブルのオブジェクトの詳細情報、つまり、全体テーブルではなく、レコードの情報をREADする連取を行いました。
こちらのページからUPDATE,DELETEも同時に行いました。
appleInfo.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div>
<h1>사과 조회 결과</h1>
<form action="AppleInfoController" method="post">
지역:<input name="a_location" value="${apple.a_location }" readonly="readonly"><p>
색깔:<input name="a_color" value="${apple.a_color }"><p>
맛:<input name="a_flavor" value="${apple.a_flavor }"><p>
가격:<input name="a_price" value="${apple.a_price }"><p>
소개:<textarea name="a_introduce">${apple.a_introduce }</textarea><p>
<button>변경</button>
</form>
<button onclick="deleteApple(`${apple.a_location }`);">삭제</button>
<button onclick="history.back();">뒤로 가기</button>
</div>
</body>
</html>
AppleDBManager
public boolean searchApple(HttpServletRequest request) {
try{
con=HyonDBManager.connect("hyonPool");
String sql ="select * from sep14_apple where a_location=?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, request.getParameter("a_location"));
rs = pstmt.executeQuery();
while (rs.next()) {
Apple apple = new Apple(
rs.getString("a_location"),
rs.getString("a_color"),
rs.getString("a_flavor"),
rs.getInt("a_price"),
rs.getString("a_introduce"));
request.setAttribute("apple", apple);
return true;
}
return false;
}catch(Exception e){
e.printStackTrace();
return false;
}
finally{
HyonDBManager.close(con,pstmt,rs);
}
}
AppleInfoController
@WebServlet("/AppleInfoController")
public class AppleInfoController extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if(AppleDBManager.getInstance().searchApple(request)){
request.setAttribute("cp", "apple/appleInfo.jsp");
}
else{
AppleDBManager.getInstance().groupApples(1, request);
}
request.getRequestDispatcher("index.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
if(AppleDBManager.getInstance().updateApple(request)) {
request.setAttribute("cp", "apple/apple.jsp");
}
else{request.setAttribute("cp", "apple/apple.jsp");
}
AppleDBManager.getInstance().groupApples(1, request);
request.getRequestDispatcher("index.jsp").forward(request, response);
}
}
Update
public boolean updateApple(HttpServletRequest request) {
try{
request.setCharacterEncoding("UTF-8");
con=HyonDBManager.connect("hyonPool");
String sql = "update sep14_apple set "
+ "a_color=?, a_flavor=?, a_price=?, a_introduce=? "
+ "where a_location =?";
pstmt = con.prepareStatement(sql);
String introduce = request.getParameter("a_introduce").replace("\r\n", "<br>");
pstmt.setString(1,request.getParameter("a_color"));
pstmt.setString(2,request.getParameter("a_flavor"));
pstmt.setInt(3,Integer.parseInt(request.getParameter("a_price")));
pstmt.setString(4,introduce);
pstmt.setString(5,request.getParameter("a_location"));
if(pstmt.executeUpdate()==1) {
request.setAttribute("r", "[수정 성공]");
return true;
}else {
request.setAttribute("r", "[수정 실패]");
return false;
}
}catch(Exception e){
e.printStackTrace();
request.setAttribute("r", "[수정 실패]");
return false;
}
finally{
HyonDBManager.close(con,pstmt,null);
}
}
既存でPrimary keyにしたa_locationはread onlyにし、inputのvalueタグからデーターをもらったため、すぐ修正することができました。
Delete
function deleteApple(loc){
location.href="AppleDeleteController?a_location=" + encodeURI(loc);
}
なぜか、昨日までできたTomcatがおかしくなったのです!
以上です!
Discussion