JSP_5강_4_게시판_상세조회에서 글 수정

열라뽕따히·2024년 3월 20일

JSP

목록 보기
26/43

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 = "수정 완료">&nbsp;&nbsp;&nbsp;
			<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에

updateBoard() 메서드를 만들자


=============================코드=============================

// 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 에서 실행


=============================실행=============================

글수정 클릭

글 수정 한 뒤 수정완료

확인

수정 완료!

0개의 댓글