1. Controller(흐름제어)
BoardController
@Controller
public class BoardController {
// 게시글 상세보기 - 게시글 삭제
@RequestMapping(value = "/viewDel", produces="application/json")
@ResponseBody
public Map<String, Object> viewDel(@RequestParam int boardSeq, String current, HttpServletRequest request) throws Exception {
boolean deleteResult = false; //boardService.viewDel 결과값
Criteria cri = new Criteria();
logger.debug("Controller: viewDel() 입니다.");
logger.debug("p_num은" + boardSeq + "=======================");
HttpSession session = request.getSession();
int sessionSeq = (Integer)session.getAttribute("sessionSeq");
deleteResult = boardService.viewDel(boardSeq, sessionSeq); //게시글 삭제
Map<String, Object> map = new HashMap<String, Object>();
if(deleteResult) { //게시글 삭제 성공
map.put("postDelResult", "1");
map.put("perPageNum", cri.getPerPageNum());
map.put("current", current);
} else { //게시글 삭제 실패 (권한 없음)
map.put("postDelResult", "0");
map.put("current", current);
}
return map;
}
}
2. Service(비즈니스 로직, DB 연동 이외의 작업)
BoardService
public interface BoardService {
//게시글 상세-게시글 삭제
public boolean viewDel(int boardSeq, int sessionSeq) throws Exception;
}
BoardServiceImpl
@Service("BoardService")
public class BoardServiceImpl implements BoardService {
//게시글 상세-게시글 삭제
@Override
public boolean viewDel(int boardSeq, int sessionSeq) throws Exception {
// TODO Auto-generated method stub
int count = 0; //check board user
boolean returnValue = false; //return value
count = boardDao.checkBoardUser(boardSeq, sessionSeq); //권한 확인
if(count == 1) { //session의 userSeq(로그인한 사용자)와 등록자의 userSeq가 일치하면
boardDao.viewDel(boardSeq); //삭제
returnValue = true; //삭제 성공
}
//else - userSeq가 일치하지 않음 -> 삭제 권한 없음.
return returnValue;
}
}
3. Model(비즈니스 로직, DB 연동 작업)
BoardDao
public interface BoardDao {
public int checkBoardUser(@Param("boardSeq")int boardSeq, @Param("sessionSeq")int sessionSeq)throws Exception;
public void viewDel(int boardSeq) throws Exception;
}
BoardDaoImpl
@Repository
public class BoardDaoImpl implements BoardDao {
//게시글 삭제시 권한 확인 checkCommentUser
@Override
public int checkBoardUser(int boardSeq, int sessionSeq)throws Exception{
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("boardSeq", boardSeq);
map.put("sessionSeq", sessionSeq);
int result = sqlSession.selectOne("com.ncomz.sample.dao.BoardDao.checkBoardUser", map);
return result;
}
//게시글 상세-게시글 삭제
@Override
public void viewDel(int boardSeq) throws Exception {
// TODO Auto-generated method stub
sqlSession.update("com.ncomz.sample.dao.BoardDao.viewDel", boardSeq);
}
}
BoardDao.xml(SQL문)
<?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">
<!-- 인터페이스 경로까지 -->
<mapper namespace="com.ncomz.sample.dao.BoardDao">
<!-- 게시글 삭제 시 권한 확인 -->
<select id="checkBoardUser" parameterType="hashmap" resultType="int">
select
count(*)
from
TB_JMJ_BOARD
where
boardSeq=#{boardSeq}
and
userSeq=#{sessionSeq}
</select>
<!-- 게시글 삭제 -->
<update id="viewDel">
UPDATE
TB_JMJ_BOARD
SET
delete_yn = 'y'
WHERE
boardSeq = #{boardSeq}
</update>
</mapper>
'스프링(Spring) > 게시판 만들기' 카테고리의 다른 글
| [Spring 게시판] AOP (0) | 2020.03.13 |
|---|---|
| [Spring 게시판] 수정 (0) | 2020.03.13 |
| [Spring 게시판] 상세보기(댓글) (0) | 2020.03.12 |
| [Spring 게시판] 등록(첨부파일, Validation) (0) | 2020.03.12 |
| [Spring 게시판] 목록(검색, 페이징, 정렬, 게시글 수, 말줄임표, 마우스오버 시 전체 제목, 등록자 표시) (0) | 2020.03.12 |
댓글