JSP_8강_3_게시글_paging_글 수정, 삭제

열라뽕따히·2024년 4월 8일

JSP

목록 보기
39/43

board_content.jsp에서 미리 만든 버튼을 눌렀을 때 수정 폼 페이지로 갈 수 있게 만들어보자!

입력했던 값을 가져와야 하기 때문에 mapping.properties에 action부분에 작성하자

인터페이스 Action을 구현 할 BoardModifyAction 클래스 생성
수정 버튼을 눌렀을 때 입력 받은 값들을 가져와야하기 때문에 이전에 생성한 contentBoard메서드 가져오기!


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

package com.board.action;

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.board.model.BoardDAO;
import com.board.model.BoardDTO;

public class BoardModifyAction implements Action {

	@Override
	public ActionForward execute(HttpServletRequest request, HttpServletResponse response) throws IOException {
		int modi_num = Integer.parseInt(request.getParameter("no").trim());
		int modi_page = Integer.parseInt(request.getParameter("page").trim());
		
		BoardDAO dao = BoardDAO.getInstance();
		BoardDTO modify = dao.contentBoard(modi_num);
		
		request.setAttribute("Modify", modify);
		request.setAttribute("ModiPage", modi_page);
		
		ActionForward forward = new ActionForward();
		forward.setRedirect(false);
		forward.setPath("view/board_modify.jsp");
		
		return forward;
	}

}



view -> board_modify.jsp 생성


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

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@ taglib prefix="c" uri = "http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<div align = "center">
		<c:set var = "modi" value = "${Modify }" />
			<hr width = "30%" color = "green">
				<h3>${modi.getBoard_writer() } 상세 수정 페이지</h3>
			<hr width = "30%" color = "green">
			<br/> <br/>
				
		<form method = "post" action = "<%=request.getContextPath() %>/modify_ok.go?page=${ModiPage }">
			<input type = "hidden" name = "num" value = "${modi.getBoard_no() }">
			<input type = "hidden" name = "db_pwd" value = "${modi.getBoard_pwd() }">
				<table border = "1" align = "center" width = "350">
						
						<tr>
							<th>작성자</th>
								<td>
									<input type = "text" name = "writer"  value = "${modi.getBoard_writer() }">
								</td>
						</tr>
						
						<tr>
							<th>글 제목</th>
								<td>
									<input type = "text" name = "title"  value = "${modi.getBoard_title() }">
								</td>
						</tr>
						
						<tr>
							<th>글 내용</th>
								<td>
									<textarea rows="7" cols="30"  name = "cont"  >${modi.getBoard_cont() }</textarea>
								</td>
						</tr>
						
						<tr>
							<th>글 비밀번호</th>
								<td>
									<input type = "password" name = "pwd" value = "${modi.getBoard_pwd() }">
								</td>
						</tr>
				</table>
			
			<br/>
			<input type = "submit" value = "수정 완료">&nbsp;&nbsp;
			<input type = "reset" value = "다시 작성">
		</form>
	</div>

</body>
</html>



수정폼에서 입력된 값들을 DB에 저장하여 화면에 출력할 수 있게 만들자
post 방식으로 건네받을 modify_ok.go를 만들자

mapping.properties에서 action으로 작성!

인터페이스 Action을 구현할 BoardModifyOkAction 클래스 생성


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

package com.board.action;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.board.model.BoardDAO;
import com.board.model.BoardDTO;

public class BoardModifyOkAction implements Action {

	@Override
	public ActionForward execute(HttpServletRequest request, HttpServletResponse response) throws IOException {
		int board_page = Integer.parseInt(request.getParameter("page").trim());
		String board_writer = request.getParameter("writer").trim();
		String board_title = request.getParameter("title").trim();
		String board_cont = request.getParameter("cont").trim();
		String board_pwd = request.getParameter("pwd").trim();
		
		// hidden
		int board_num = Integer.parseInt(request.getParameter("num").trim());
		String db_pwd = request.getParameter("db_pwd").trim();
		
		BoardDTO dto = new BoardDTO();
		dto.setBoard_no(board_num);
		dto.setBoard_writer(board_writer);
		dto.setBoard_title(board_title);
		dto.setBoard_cont(board_cont);
		dto.setBoard_pwd(board_pwd);
		
		BoardDAO dao = BoardDAO.getInstance();

		dao.modifyOk(dto);



BoardDAO에서 modifyOk 메서드 생성


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

// 수정 완료
	public int modifyOk(BoardDTO dto) {
		int result = 0;
		
		try {
			openConn();
			
			sql = "update board set board_writer = ?, board_title = ?, board_cont = ? where board_no = ?";
			pstmt = con.prepareStatement(sql);
			
			pstmt.setString(1, dto.getBoard_writer());
			pstmt.setString(2, dto.getBoard_title());
			pstmt.setString(3, dto.getBoard_cont());
			pstmt.setInt(4, dto.getBoard_no());
			
			result = pstmt.executeUpdate();
			
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			closeConn(pstmt, con);
		}
		return result;
	}



다시 BoardModifyOkAction 클래스로 가자


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

package com.board.action;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.board.model.BoardDAO;
import com.board.model.BoardDTO;

public class BoardModifyOkAction implements Action {

	@Override
	public ActionForward execute(HttpServletRequest request, HttpServletResponse response) throws IOException {
		int board_page = Integer.parseInt(request.getParameter("page").trim());
		String board_writer = request.getParameter("writer").trim();
		String board_title = request.getParameter("title").trim();
		String board_cont = request.getParameter("cont").trim();
		String board_pwd = request.getParameter("pwd").trim();
		
		// hidden
		int board_num = Integer.parseInt(request.getParameter("num").trim());
		String db_pwd = request.getParameter("db_pwd").trim();
		
		BoardDTO dto = new BoardDTO();
		dto.setBoard_no(board_num);
		dto.setBoard_writer(board_writer);
		dto.setBoard_title(board_title);
		dto.setBoard_cont(board_cont);
		dto.setBoard_pwd(board_pwd);
		
		BoardDAO dao = BoardDAO.getInstance();
		
		PrintWriter out = response.getWriter();
		
		if(board_pwd.equals(db_pwd)) {
// -------------------여기서부터 작성-------------------
			int check = dao.modifyOk(dto);
			
			if(check > 0) {
				out.println("<script>");
				out.println("alert('게시글 수정 완료!')");
				out.println("location.href='content.go?no=" + dto.getBoard_no() + "&page=" + board_page + "'");
				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>");
		}
		
		return null;
	}

}




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

게시글 제목 클릭!

글 수정 클릭

확인 클릭

수정이 된 것을 확인할 수 있음!

0개의 댓글