board_content.jsp에서 글 수정, 삭제, 목록 버튼을 만들자

작성한 글을 그대로 가지고 오는 수정 폼을 만들
modify.go 서블릿 생성
=============================코드=============================
package com.board.controller;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
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 com.board.model.BoardDAO;
import com.board.model.BoardDTO;
@WebServlet("/modify.go")
public class ModifyServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public ModifyServlet() {
super();
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int modify_no = Integer.parseInt(request.getParameter("no"));
BoardDAO dao = BoardDAO.getInstance();
BoardDTO modifyContent = dao.contentBoard(modify_no);
request.setAttribute("modList", modifyContent);
request.getRequestDispatcher("view/board_modify.jsp").forward(request, response);
}
}
전체 목록을 가지고 오는 메서드 그대로 호출해서 사용하면 됨!
수정 폼 페이지를 만들
view -> board_modify.jsp 파일 생성
=============================코드=============================
<%@page import="com.board.model.BoardDTO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
BoardDTO list = (BoardDTO)request.getAttribute("modList");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div align = "center">
<hr width = "30%" color = "pink">
<h3>BOARD 테이블 상세 정보 수정 폼</h3>
<hr width = "30%" color = "pink">
<br/> <br/>
<form method = "post" action = "<%=request.getContextPath() %>/modifyOk.go">
<input type = "hidden" name = "num" value = "<%=list.getBoard_no() %>">
<input type = "hidden" name = "db_pwd" value = "<%=list.getBoard_pwd() %>">
<table border = "1" width = "350">
<tr>
<th>작성자</th>
<td>
<input type = "text" name = "wirter" value ="<%=list.getBoard_writer() %>" readonly >
</td>
</tr>
<tr>
<th>제목</th>
<td>
<input type = "text" name = "title" value ="<%=list.getBoard_title() %>" >
</td>
</tr>
<tr>
<th>글 내용</th>
<td>
<textarea rows="7" cols="25" name = "cont"></textarea>
</td>
</tr>
<tr>
<th>비밀번호</th>
<td>
<input type = "password" name = "pwd" value = "<%=list.getBoard_pwd() %>">
</td>
</tr>
</table>
<br/> <br/>
<input type = "submit" value = "수정 완료">
<input type = "reset" value = "재작성">
</form>
</div>
</body>
</html>

글 수정 클릭!

이제 수정 완료 버튼을 클릭 시 수정이 될 수 있도록
modifyOk.go 서블릿을 만들자!
=============================코드=============================
package com.board.controller;
import java.io.IOException;
import java.io.PrintWriter;
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 com.board.model.BoardDAO;
import com.board.model.BoardDTO;
@WebServlet("/modifyOk.go")
public class ModifyOkServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public ModifyOkServlet() {
super();
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 수정 폼 페이지에서 넘어온 글 번호에 해당하는 데이터들을 board 테이블에 수정시키는 비지니스 로직
// 한글깨짐 방지
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset = UTF-8");
// 1단계 : 수정 폼 페이지에서 넘어온 데이터들을 받아 주어야 함
String board_wirter = request.getParameter("writer").trim();
String board_title = request.getParameter("title").trim();
String board_content = request.getParameter("content").trim();
String board_pwd = request.getParameter("pwd").trim();
// type="hidden"으로 설정된 데이터들도 받아 주어야 함
int board_no = Integer.parseInt(request.getParameter("num").trim());
String db_pwd = request.getParameter("db_pwd").trim();
// 2단계 : 1단계에서 넘어온 데이터들을 DTO 객체에 저장해주자
BoardDTO dto = new BoardDTO();
dto.setBoard_no(board_no);
dto.setBoard_writer(board_wirter);
dto.setBoard_title(board_title);
dto.setBoard_cont(board_content);
dto.setBoard_pwd(board_pwd);
BoardDAO dao = BoardDAO.getInstance();
PrintWriter out = response.getWriter();
if(board_pwd.equals(db_pwd)) { // board_pwd는 수정폼에서 입력하는 비번 db_pwd는 처음에 설정한 비번
dao.updateBoard(dto);
}
BoardDAO에
=============================코드=============================
// board 테이블의 글 번호에 해당하는 게시글을 수정하는 메서드
public int updateBoard(BoardDTO dto) {
int result = 0;
try {
openConn();
sql = "update board set board_title = ?, board_cont = ?, board_update = sysdate where board_no = ?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, dto.getBoard_title());
pstmt.setString(2, dto.getBoard_cont());
pstmt.setInt(3, dto.getBoard_no());
result = pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally {
closeConn(pstmt, con);
}
return result;
}
다시 서블릿으로 가자
=============================코드=============================
package com.board.controller;
import java.io.IOException;
import java.io.PrintWriter;
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 com.board.model.BoardDAO;
import com.board.model.BoardDTO;
@WebServlet("/modifyOk.go")
public class ModifyOkServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public ModifyOkServlet() {
super();
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 수정 폼 페이지에서 넘어온 글 번호에 해당하는 데이터들을 board 테이블에 수정시키는 비지니스 로직
// 한글깨짐 방지
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset = UTF-8");
// 1단계 : 수정 폼 페이지에서 넘어온 데이터들을 받아 주어야 함
String board_wirter = request.getParameter("writer").trim();
String board_title = request.getParameter("title").trim();
String board_content = request.getParameter("content").trim();
String board_pwd = request.getParameter("pwd").trim();
// type="hidden"으로 설정된 데이터들도 받아 주어야 함
int board_no = Integer.parseInt(request.getParameter("num").trim());
String db_pwd = request.getParameter("db_pwd").trim();
// 2단계 : 1단계에서 넘어온 데이터들을 DTO 객체에 저장해주자
BoardDTO dto = new BoardDTO();
dto.setBoard_no(board_no);
dto.setBoard_writer(board_wirter);
dto.setBoard_title(board_title);
dto.setBoard_cont(board_content);
dto.setBoard_pwd(board_pwd);
BoardDAO dao = BoardDAO.getInstance();
PrintWriter out = response.getWriter();
if(board_pwd.equals(db_pwd)) { // board_pwd는 수정폼에서 입력하는 비번 db_pwd는 처음에 설정한 비번
// ---------------------여기서부터 작성---------------------
int check = dao.updateBoard(dto);
if(check > 0) {
out.println("<script>");
out.println("alert('게시글 수정 성공!!!')");
out.println("location.href='content.go?no=" + dto.getBoard_no() + "'");
out.println("</script>");
}else {
out.println("<script>");
out.println("alert('게시글 수정 실패..')");
out.println("history.back()");
out.println("</script>");
}
}else {
// 비밀번호가 다른 경우
out.println("<script>");
out.println("alert('비밀번호가 다릅니다. 확인해주세요!!')");
out.println("history.back()");
out.println("</script>");
}
}
}
main.jsp 에서 실행

글수정 클릭

글 수정 한 뒤 수정완료

확인

수정 완료!