요청이랑 뷰랑 다르면 redirect
page 값은 모든페이지 이동할때마다 값을 보내줘야해서
request로 보내면 번거롭기 때문에 애초에 시작할때 DTO에 page를 만들어두면 편함
(table에까지 생성 할 필요는 없음)
page값을 bdto에서 받아서 bdto2로 전달해주기
@RequestMapping("/content")
public String content(BoardDto bdto,Model model)
{
// 할일 : 하나의 레코드를 읽어오기
BoardDao bdao = sqlSession.getMapper(BoardDao.class);
BoardDto bdto2 = bdao.content(bdto);
// bdto 안에는 현재 page값을 가지고 있으나 bdto2에는 page 값이 없기 때문에
// 아래처럼 코드를 적어서 전달받은 값을 바꿔서 다시 줄수도있음
bdto2.setContent(bdto2.getContent().replace("\r\n", "<br>"));
bdto2.setPage(bdto.getPage());
// 위에서처럼 bdto2.setpage를 통해 bdto page 값을 전달해줘서 받아서 쓰기
model.addAttribute("bdto", bdto2);
return "/content";
}
rs를 사용하지 않기 때문에 pwd 체크할때 rs.next를 못할때
count(*) 를 sql 실행문에 넣어주면 0,1 값을 받기 때문에 pwd체크때 사용 가능
BoardDaoxml
<select id="pwdCheck" parameterType="kr.co.batis_page.dto.BoardDto" resultType="Integer">
select count(*) from board where id=#{id} and pwd=#{pwd}
</select>
boolean 사용 방식
<select id="pwdCheck2" parameterType="kr.co.batis_page.dto.BoardDto" resultType="boolean">
select if(count(*)=1, 'true','false') from board where id=#{id} and pwd=#{pwd}
</select>
BoardController
@RequestMapping("/delete")
public String delete(BoardDto bdto)
{
BoardDao bdao = sqlSession.getMapper(BoardDao.class);
int chk = bdao.pwdCheck(bdto);
// 비번 체크
if(chk == 1)
{
bdao.delete(bdto);
return "redirect:/list?page="+bdto.getPage();
}
else
{
return "redirect:/content="+bdto.getId()+"&page="+bdto.getPage();
}
}
boolean 사용 방식
@RequestMapping("/delete")
public String delete(BoardDto bdto)
{
BoardDao bdao = sqlSession.getMapper(BoardDao.class);
// 비번 체크
if(bdao.pwdCheck2(bdto);)
{
bdao.delete(bdto);
return "redirect:/list?page="+bdto.getPage();
}
else
{
return "redirect:/content="+bdto.getId()+"&page="+bdto.getPage();
}
}