티스토리 뷰

✅ BoardUpdateServlet.java 생성 후 맵핑이름 작성  (사진 잘못됨!)

 

✅ retrieve.jsp에 <form> 작성


✅ retrieve.jsp에 hidden 작성

 

✅ BoardUpdateServlet.java 작성

 

✅ BoardMapper.xml의 update 부분에 수정될 수 있는 것들 다 작성

 

✅ BoardDAO.java에 Sqlsession과 파라미터를 이용해서 실제 DB와 연동

 

✅ BoardService.java에 BoardDAO 메서드를 복사해서 Sqlsession 파라미터만 제거한다.



 BoardServiceImpl.java 에 BoardDAO 연동 코드 작성 (오버라이드)

 

 

✅ BoardUpdateServlet.java 작성
✅ dto를 서비스 거쳐서 DAO까지 전달
- BoardService 연동해서 화면에 보여줄 데이터 반환
- scope에 저장
- jsp로 요청위임 

 

 

 


 

 

💡 결과

 

 

 


 

 

 

package com.controller;

import java.io.IOException;
import java.util.List;

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.dto.BoardDTO;
import com.service.BoardService;
import com.service.BoardServiceImpl;

/**
 * Servlet implementation class BoardListServlet
 */
@WebServlet("/update")
public class BoardUpdateServlet extends HttpServlet {
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		String num = request.getParameter("num");
		String title = request.getParameter("title");
		String author = request.getParameter("author");
		String content = request.getParameter("content");
		
		BoardDTO dto = new BoardDTO();
		dto.setNum(Integer.parseInt(num));
		dto.setTitle(title);
		dto.setAuthor(author);
		dto.setContent(content);
		
		// dto를 서비스 거쳐서 DAO까지 전달
		BoardService service = new BoardServiceImpl();
		int n = service.update(dto);
		
		// 요청위임
		response.sendRedirect("list");
		
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

 

<%@page import="com.dto.BoardDTO"%>
<%@ 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>

<body>
<h2>게시판 자세히 보기</h2>
<%
	//BoardRetrieveServlet에서
	//request.setAttribute("boardRetrieve", dto) 값 얻기
	BoardDTO dto = (BoardDTO) request.getAttribute("boardRetrieve");
	int num = dto.getNum();
	String title = dto.getTitle();
	String author = dto.getAuthor();
	String content = dto.getContent();
	String writeday = dto.getWriteday();
	int readcnt = dto.getReadcnt();
%>
<form action="update" method="get">
<input type="hidden" name="num" value="<%= num %>">
글번호:<%= num%><br>
작성일:<%= writeday%><br>
조회수:<%= readcnt%><br>
<%= title %>
제목:<input type="text" name="title" value="<%= title%>"><br>
작성자:<input type="text" name="author" value="<%= author%>"><br>
내용:<textarea rows="10" cols="10" name="content"><%= content%></textarea>
<input type="submit" value="수정">
</form>
<a href="list">목록</a>
</body>
</html>

 

<?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="BoardMapper">

    <select id="list" resultType="BoardDTO">
    	select num, title, author, content, writeday, readcnt
    	from board
    	order by num desc
    </select>
    
    <insert id="write" parameterType="BoardDTO">
    	insert into board (num, title, author, content)
    	values (board_seq.nextval, #{title}, #{author}, #{content})
    </insert>
    
    <select id="retrieve" parameterType="int"
    			  resultType="BoardDTO">
    	select num, title, author, content, writeday, readcnt
    	from board
    	where num = #{num}
   
    </select>
    
    <update id="readcnt" parameterType="int">
    	update board
    	set readcnt = readcnt + 1
    	where num = #{num}
    </update>
    
    <update id="update" parameterType="BoardDTO">
    	update board
    	set title=#{title}, author=#{author}, content=#{content}
    	where num = #{num}
    </update>
    
    
    
</mapper>

 

package com.dao;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.dto.BoardDTO;

public class BoardDAO {
	
	// 전체 목록
	public List<BoardDTO> list(SqlSession session){
		
		List<BoardDTO> list = session.selectList("BoardMapper.list");
		return list;
	}
	
	// 글 저장
	public int write(SqlSession session, BoardDTO dto) {
		int n = session.insert("BoardMapper.write", dto);
		return n;
	}
	
	// 글 자세히 보기
	public BoardDTO retrieve(SqlSession session, int num) {
		BoardDTO dto = session.selectOne("BoardMapper.retrieve", num);
		return dto;
	}
	
	// 조회수 증가
	public int readcnt (SqlSession session, int num) {
		int n = session.update("BoardMapper.readcnt", num);
		return n;
	}
	
	// 글 수정
	public int update(SqlSession session, BoardDTO dto) {
		int n = session.update("BoardMapper.update", dto);
		return n;
	}

}

 

package com.service;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.dto.BoardDTO;

public interface BoardService {

	public List<BoardDTO> list();
	public int write(BoardDTO dto);
	public BoardDTO retrieve(int num);
	public int update(BoardDTO dto);
}

 

package com.service;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.config.MySqlSessionFactory;
import com.dao.BoardDAO;
import com.dto.BoardDTO;

public class BoardServiceImpl implements BoardService {

	@Override
	public List<BoardDTO> list() {
		List<BoardDTO> list = null;    //return 하기 위해 밖에서 선언
		SqlSession session = MySqlSessionFactory.getSession();
		try {
			// DAO 연동코드
			BoardDAO dao = new BoardDAO();    //객체생성
			list = dao.list(session); 
			
		}finally {
			session.close();
		}
		return list;
	}

	@Override
	public int write(BoardDTO dto) {
		int n = 0;
		SqlSession session = MySqlSessionFactory.getSession();	
			try {
				// DAO 연동코드
				BoardDAO dao = new BoardDAO();    //객체생성
				n = dao.write(session, dto);
				session.commit();   //mybatis는 자동커밋이 아니기 때문에 반드시 커밋
			}finally {
				session.close();
			}
		return n;
	}

	@Override
	public BoardDTO retrieve(int num) {
		BoardDTO dto = null;
		SqlSession session = MySqlSessionFactory.getSession();	
			try {
				// DAO 연동코드
				BoardDAO dao = new BoardDAO();    //객체생성
				//조회수 증가
				int n = dao.readcnt(session, num);
				session.commit();
				//자세히 보기
				dto = dao.retrieve(session, num);
			}finally {
				session.close();
			}
		return dto;
	}

	@Override
	public int update(BoardDTO dto) {
		int n = 0;
		SqlSession session = MySqlSessionFactory.getSession();	
			try {
				// DAO 연동코드
				BoardDAO dao = new BoardDAO();    //객체생성
				n = dao.update(session, dto);
				session.commit();
			}finally {
				session.close();
			}
		return n;
	}

}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함