[홈페이지만들기8-1] 게시글 수정 기능

jngyoon·2023년 10월 3일
0

혼공일기

목록 보기
15/24

main.jsp -> get_db -> get.jsp -> 가지고 온 데이터 뿌려주기

get.jsp

긁어오는 작업

<%@page import="dto.BoardDTO"%>
<%@page import="dao.BoardDAO"%>
<%@ 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>
<%
	BoardDAO bdao = new BoardDAO();
    //boardnum 꺼내오기
	int boardnum = Integer.parseInt(request.getParameter("boardnum")); 
    //bdao에 getDetail() 메소드 생성
	BoardDTO board = bdao.getDetail(boardnum);
	String userid = (String)session.getAttribute("loginUser"); //세션에 있는 loginUser 꺼내오기
%>
<body>
	<h2><%=board.getBoardtitle()%></h2>
	<h3><%=board.getUserid()%></h3>
	<h3><%=board.getRegdate() %></h3>
	<textarea style="width:300px;" readonly><%=board.getBoardcontents()%></textarea>
	<hr>
	<a href="list_db.jsp">목록보기</a>
	<%if(board.getUserid().equals(userid)){ %>
	<a href="modify.jsp?boardnum=<%=board.getBoardnum()%>">수정</a>
	<a href="#">삭제</a>
	<%} %>
</body>
</html>

BoardDAO.jsp

package dao;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import dto.BoardDTO;
import mybatis.SqlMapConfig;

public class BoardDAO {
	private SqlSession sqlsession;
	
	public BoardDAO() {
		sqlsession = SqlMapConfig.getFactory().openSession(true);
	}
	
	public boolean writeBoard(BoardDTO board) {
		return sqlsession.insert("Board.insertBoard",board) == 1;
	}
	
	public List<BoardDTO> getList(){
		return sqlsession.selectList("Board.getList");
	}
	
	public BoardDTO getDetail(int boardnum) {
		return sqlsession.selectOne("Board.getDetail",boardnum);
	}
}

게시글 수정하기

  1. modify.jsp 게시글 수정화면 만들기
  2. 수정처리하는 modify_db.jsp 만들기
  3. dao에 modifyBoard() 메소드 생성
  4. BoardMapper.xml에 modify update문 쿼리 작성

modify.jsp

수정완료 버튼을 누르면 form에 있는 내용을 보내주면서 수정해달라고 제출해야함

<%@page import="dto.BoardDTO"%>
<%@page import="dao.BoardDAO"%>
<%@ 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>
<%
	int boardnum = Integer.parseInt(request.getParameter("boardnum")); //boardnum 받아오기
	BoardDAO bdao = new BoardDAO();
	BoardDTO board = bdao.getDetail(boardnum);
%>
<body>
	<form action="modify_db.jsp" name="modifyForm" method="post">
		<input type="hidden" name="boardnum" value="<%=board.getBoardnum()%>">
		<input type="text" value="<%=board.getBoardtitle()%>" name="boardtitle">
		<h3><%=board.getUserid()%></h3>
		<textarea style="width:300px;" name="boardcontents"><%=board.getBoardcontents() %></textarea>
	</form>
	<hr>
	<a href="list_db.jsp">목록보기</a>
	<a href="javascript:document.modifyForm.submit()">수정완료</a>
    //a태그에서 자바스크립트 코드를 쓸 때는 javascript: ~~ 하고 쓰면 됨
</body>
</html>

modify_db.jsp

(처리부분 : 데이터 수집 - 처리 - 흐름나누기)

<%@page import="dto.BoardDTO"%>
<%@page import="dao.BoardDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	request.setCharacterEncoding("UTF-8");
    //데이터 수집
	String boardtitle = request.getParameter("boardtitle");
	String boardcontents = request.getParameter("boardcontents");
	int boardnum = Integer.parseInt(request.getParameter("boardnum"));
	
    //수정처리
	BoardDTO board = new BoardDTO();
	board.setBoardtitle(boardtitle);
	board.setBoardcontents(boardcontents);
	board.setBoardnum(boardnum);
	
	BoardDAO bdao = new BoardDAO();
	
    //흐름나누기
	if(bdao.modifyBoard(board)){
%>
		<script>
			alert("게시글 수정 성공!")
			location.replace("get.jsp?boardnum=<%=boardnum%>");
		</script>
<%
	}
	else{
%>
		<script>
			alert("게시글 수정 실패!")
			location.replace("get.jsp?boardnum=<%=boardnum%>");
		</script>
<%	
	}
	
%>

BoardDAO.java에 modifyBoard() 메소드 생성

package dao;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import dto.BoardDTO;
import mybatis.SqlMapConfig;

public class BoardDAO {
	private SqlSession sqlsession;
	
	public BoardDAO() {
		sqlsession = SqlMapConfig.getFactory().openSession(true);
	}
	
	public boolean writeBoard(BoardDTO board) {
		return sqlsession.insert("Board.insertBoard",board) == 1;
	}
	
	public List<BoardDTO> getList(){
		return sqlsession.selectList("Board.getList");
	}
	
	public BoardDTO getDetail(int boardnum) {
		return sqlsession.selectOne("Board.getDetail",boardnum);
	}
	
	public boolean modifyBoard(BoardDTO board) {
		return sqlsession.update("Board.modify",board) == 1; //수정된 행의 갯수가 한개면 성공
	}
}

BoardMapper.xml에 modify update문 쿼리 작성

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="Board">
	<insert id="insertBoard" parameterType="boarddto">
		insert into t_board (boardtitle,boardcontents,userid)
		values(#{boardtitle},#{boardcontents},#{userid})
	</insert>
	
	<select id="getList" resultType="boarddto">
		select * from t_board
	</select>
	
	<select id="getDetail" resultType="boarddto">
		select * from t_board where boardnum=#{boardnum}
	</select>
	
	<update id="modify" parameterType="boarddto">
		update t_board
		set boardcontents = #{boardcontents}, boardtitle=#{boardtitle}
		where boardnum=#{boardnum}
	</update>
</mapper>

0개의 댓글