본문 바로가기
코딩도전기/Spring

CODO Day42_Spring(BoardApp)

by 코도꼬마 2023. 3. 31.
  • BoardController
package kr.co.gudi.board.controller;

import java.util.ArrayList;
import java.util.HashMap;

import javax.servlet.http.HttpSession;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import kr.co.gudi.board.dto.BoardDTO;
import kr.co.gudi.board.service.BoardService;

@Controller
public class BoardController {
	
	@Autowired BoardService service;
	
	Logger logger = LoggerFactory.getLogger(this.getClass());
	
	@RequestMapping(value = "/list.do")
	public String list(Model model, HttpSession session) {		
		logger.info("controller");
		ArrayList<BoardDTO> list = service.list();
		logger.info("list : "+list.size());
		
		model.addAttribute("list", list);
		
		//session에 msg 속성이 있다면 받아서 model에 옮겨담아줌
		String msg = (String) session.getAttribute("msg");
		if(msg != null) {
			model.addAttribute("msg",msg);
			//사용한 세션은 반드시 바로 삭제해야함
			session.removeAttribute("msg");
		}		
		return "list";
	}
	
	@RequestMapping(value="/write.go", method = RequestMethod.GET)
	public String writeForm() {
		return "writeForm";
	}

	@RequestMapping(value="/write.do", method = RequestMethod.POST)
	public String write(HttpSession session, @RequestParam HashMap<String, String> params) {
		
		if(session.getAttribute("loginId") != null) {
			logger.info("write list controller 도착"+params);
			int row = service.write(params);
			logger.info("insert row : "+row);
		}
		return "redirect:/list.do";
	}
	
	@RequestMapping(value="/detail.do")
	public String detail(HttpSession session, @RequestParam String idx, Model model) {
		logger.info("detail controller 도착");
		
		String page = "redirect:/list.do";
		
		if(session.getAttribute("loginId") != null) {
			logger.info("detail idx : "+idx);
			
			BoardDTO dto = service.detail(idx);
			logger.info("dto : {}",dto);
			
			if(dto != null) {
				model.addAttribute("board",dto);
				page = "detail";
			}
		}		
		return page;
	}
	
	@RequestMapping(value="/del.do")
	public String delete(HttpSession session, @RequestParam String idx, Model model) {
		logger.info("detail idx : "+idx);
		
		String msg = "삭제에 실패했습니다.";
		
		if(session.getAttribute("loginId") != null) {
			if(service.delete(idx) == 1) {
			msg = "삭제에 성공했습니다.";		
			}
		}		
		
		//redirect 시 데이터를 보낼 수 없기 때문에 session에 데이터를 넣어 보냄
		session.setAttribute("msg", msg);
		
		return "redirect:/list.do";
	}	
}

 

  • BoardDTO
package kr.co.gudi.board.dto;

import java.sql.Date;

public class BoardDTO {
	
	private int idx;
	private String user_name;
	private String subject;
	private String content;
	private int bHit;
	private Date reg_date;
	
	public int getIdx() {
		return idx;
	}
	public void setIdx(int idx) {
		this.idx = idx;
	}
	public int getbHit() {
		return bHit;
	}
	public void setbHit(int bHit) {
		this.bHit = bHit;
	}
	public Date getReg_date() {
		return reg_date;
	}
	public void setReg_date(Date reg_date) {
		this.reg_date = reg_date;
	}
	public String getUser_name() {
		return user_name;
	}
	public void setUser_name(String user_name) {
		this.user_name = user_name;
	}
	public String getSubject() {
		return subject;
	}
	public void setSubject(String subject) {
		this.subject = subject;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}

}

 

  • BoardService
package kr.co.gudi.board.service;

import java.util.ArrayList;
import java.util.HashMap;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import kr.co.gudi.board.dao.BoardDAO;
import kr.co.gudi.board.dto.BoardDTO;

@Service
public class BoardService {
	
	@Autowired BoardDAO dao;
	
	Logger logger = LoggerFactory.getLogger(this.getClass());

	public ArrayList<BoardDTO> list() {
		logger.info("list 요청");
		return dao.list();
	}

	public int write(HashMap<String, String> params) {
		logger.info("write 요청");
		return dao.write(params);
	}

	public BoardDTO detail(String idx) {		
		logger.info("detail 요청");
		
		//조회수 올리고, 상세정보 가져오기(Transaction)
		dao.bHit(idx);		
		
		return dao.detail(idx);
	}

	public int delete(String idx) {
		logger.info("delete 요청");
		return dao.delete(idx);
	}
}

 

  • BoardDAO
package kr.co.gudi.board.dao;

import java.util.ArrayList;
import java.util.HashMap;

import kr.co.gudi.board.dto.BoardDTO;

public interface BoardDAO {

	ArrayList<BoardDTO> list();

	int write(HashMap<String, String> params);

	BoardDTO detail(String idx);

	void bHit(String idx);

	int delete(String idx);

}

 

  • board_mapper
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC	"-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- xml 을 java 에서 쓰기 위해 연결되는 interface 가 필요 하다. -->
<mapper namespace="kr.co.gudi.board.dao.BoardDAO">

	<select id="list" resultType="kr.co.gudi.board.dto.BoardDTO">
		SELECT * FROM bbs ORDER BY idx
	</select>
	
	<insert id="write" parameterType="hashmap">
		INSERT INTO bbs(user_name,subject,content) 
			VALUES(#{user_name},#{subject},#{content})
	</insert>
	
	<select id="detail" parameterType="String" resultType="kr.co.gudi.board.dto.BoardDTO">
		SELECT * FROM bbs WHERE idx = #{idx}
	</select>
	
	<update id="bHit">
		UPDATE bbs SET bHit = bHit+1 WHERE idx = #{idx}
	</update>
	
	<delete id="delete" parameterType="String">
		DELETE FROM bbs WHERE idx = #{param1}
	</delete>
	
</mapper>

 

'코딩도전기 > Spring' 카테고리의 다른 글

CODO Day44_Spring(PhotoBoard)  (0) 2023.04.04
CODO Day43_Spring(FileService)  (0) 2023.04.03
CODO Day41_Spring(MemberApp)  (0) 2023.03.30
CODO Day40_Spring(MyBatis)  (0) 2023.03.28
CODO Day39_Spring(DB 연결)  (0) 2023.03.28