@ModelAttribute뿐만 아니라 @RequestParam에서 Map 데이터타입으로 여러개 파라미터를 받아 올 수 있다. 즉 두 파라미터 다 여러 개의 파라미터를 받을 수 있지만 주로 1:!은 @RequestParam을 사용하고 메인이나 오브젝트로 파라미터를 받을 경우는 @ModelAttribute으로 받는다.
두 어노테이션 다 생략가능하지만 명시해주는 게 좋음.
1 2 3 4 5 6 7 8 9 10
//글번호에 해당하는 게시글 상세 보기 @RequestMapping(value = "/read", method = RequestMethod.GET) //@ModelAttribute 와 @RequestParam 둘 다 동일한 결과 //public void readGET(@ModelAttribute("bno") int bno) throws Exception{ //0출력 publicvoidreadGET(@RequestParam("bno")int bno, Model model)throws Exception{ //0출력 l.info("C: read 겟 메서드, 글번호: "+(bno*0)); //서비스객체 : 해당 글번호를 사용하여 글 정보 가지고오기 model.addAttribute("bvo", service.readContent(bno));
<scripttype="text/javascript"> $(document).ready(function(){ //form 오브젝트 출력 //console.log()가 alert()보다 더 많은 정보를 출력해준다. let formObj = $("form[role='form']"); //alert(formObj); //console.log(formObj); //목록 $(".btn-primary").on("click", function(){ <!-- 글 번호 가져가지고 페이지이동 첫번째 방법 --> //let tmp = '${bvo.bno}'; //alert("목록으로 가기 버튼 클릭"+tmp); location.href="/board/listAll"; }); //수정버튼 클릭시 $(".btn-warning").click(function(){ //alert("수정버튼클릭"); //formObj.attr("action","/board/modify", "method","get").submit(); 잘못된 문법인데 왜 작동할까? formObj.attr({ action: "/board/modify", method: "get", }).submit(); }); })//end of jQuery </script> <%@ include file="../include/footer.jsp" %>
BoardService.java 인터페이스에 메서드 추가
캐스팅이 되는 데이터타입은 wapper클래스로 파라미터 데이터타입을 지정하는 것이 혹시모를 데이터 손실을 예방할 수 있다.
int -> Integer
1 2 3
//글번호에 해당하는 게시글 상세 보기 //public BoardVO readContent(int bno) throws Exception; publicBoardVOreadContent(Integer bno)throws Exception;
BoardServiceImpl.java 메서드 오버라이딩 코드 추가
1 2 3 4 5 6
//글번호에 해당하는 게시글 상세 보기 @Override publicBoardVOreadContent(Integer bno)throws Exception { BoardVObvo= bdao.readContent(bno); return bvo; }
BoardDAO.java 인터페이스에 메서드 추가
1 2
//글번호에 해당하는 게시글 상세 보기 publicBoardVOreadContent(Integer bno)throws Exception;
BoardDAOImpl.java 메서드 오버라이딩 코드 추가
1 2 3 4 5 6
//글번호에 해당하는 게시글 상세 보기 @Override publicBoardVOreadContent(Integer bno)throws Exception { //sqlSession 객체 사용하여 Mapper 호출 return session.selectOne(namespace+".readContent", bno); }
BoardMapper.xml SQL쿼리 추가
1 2 3 4
<selectid="readContent"resultType="BoardVO"> select * from tbl_board where bno =#{bno} </select>