-
2022-03-23 스프링부트 : 프로시저를 이용한 게시판#3학원/Spring 2022. 3. 23. 10:51
게시물 작성/수정/삭제
BoardController
//게시물 수정 @RequestMapping("/boardEditForm") public String board_edit_form(Model model, HttpServletRequest request) { String num = request.getParameter("num"); model.addAttribute("num", num); return "board/boardCheckPassForm"; } @RequestMapping("/boardEdit") public String board_edit(Model model, @RequestParam("num") int num, @RequestParam("pass") String pass, HttpServletRequest request) { HashMap<String, Object> paramMap = new HashMap<>(); paramMap.put("num", num); paramMap.put("ref_cursor", null); bs.getBoard(paramMap); ArrayList<HashMap<String, Object>> list = (ArrayList<HashMap<String, Object>>) paramMap.get("ref_cursor"); HashMap<String, Object> bvo = list.get(0); model.addAttribute("num", num); if(pass.equals(bvo.get("PASS"))) { return "board/boardCheckPass"; } else { model.addAttribute("message", "비밀번호가 틀렸습니다."); return "board/boardCheckPassForm"; } } @RequestMapping("/boardUpdateForm") public String board_update_form(@RequestParam("num") int num, Model model, HttpServletRequest request) { HashMap<String, Object> paramMap = new HashMap<>(); paramMap.put("num", num); paramMap.put("ref_cursor", null); bs.getBoard(paramMap); ArrayList<HashMap<String, Object>> list = (ArrayList<HashMap<String, Object>>) paramMap.get("ref_cursor"); HashMap<String, Object> bvo = list.get(0); BoardVO dto = new BoardVO(); dto.setNum(Integer.parseInt(String.valueOf(bvo.get("NUM")))); dto.setUserid((String) bvo.get("USERID")); dto.setPass((String) bvo.get("PASS")); dto.setEmail((String) bvo.get("EMAIL")); dto.setImgfilename((String) bvo.get("IMGFILENAME")); dto.setTitle((String) bvo.get("TITLE")); dto.setContent((String) bvo.get("CONTENT")); model.addAttribute("num", num); model.addAttribute("dto", dto); return "board/boardEditForm"; } @RequestMapping("/selectimg") public String selectimg() { return "board/selectimg"; } @Autowired ServletContext context; @RequestMapping(value="/fileupload", method=RequestMethod.POST) public String fileupload(Model model, HttpServletRequest request) { String path = context.getRealPath("/upload"); try { MultipartRequest multi = new MultipartRequest( request, path, 5*1024*1024, "UTF-8", new DefaultFileRenamePolicy()); model.addAttribute("image", multi.getFilesystemName("image")); } catch (Exception e) { e.printStackTrace(); } return "board/completeupload"; } @RequestMapping(value="/boardUpdate", method=RequestMethod.POST) public String boardUpdate(@ModelAttribute("dto") @Valid BoardVO boardvo, BindingResult result, @RequestParam("oldfilename") String oldfilename, HttpServletRequest request, Model model) { String url = "board/boardEditForm"; if(result.getFieldError("pass") != null) { model.addAttribute("message", "비밀번호를 입력해주세요"); } else if(result.getFieldError("title") != null) { model.addAttribute("message", "제목을 입력해주세요"); } else if(result.getFieldError("content") != null) { model.addAttribute("message", "내용을 입력해주세요"); } else { if(boardvo.getImgfilename().equals("") || boardvo.getImgfilename() == null) boardvo.setImgfilename(oldfilename); HashMap<String, Object> paramMap = new HashMap<>(); paramMap.put("num", boardvo.getNum()); paramMap.put("userid", boardvo.getUserid()); paramMap.put("pass", boardvo.getPass()); paramMap.put("title", boardvo.getTitle()); paramMap.put("email", boardvo.getEmail()); paramMap.put("content", boardvo.getContent()); paramMap.put("imgfilename", boardvo.getImgfilename()); bs.updateBoard(paramMap); url = "redirect:/boardViewWithoutCount?num=" + boardvo.getNum(); } return url; } //게시물 삭제 @RequestMapping("/boardDeleteForm") public String board_delete_form(@RequestParam("num") int num, Model model, HttpServletRequest request) { model.addAttribute("num", num); return "board/boardCheckPassForm"; } @RequestMapping("/boardDelete") public String board_delete(Model model, HttpServletRequest request) { int num = Integer.parseInt(request.getParameter("num")); HashMap<String, Object> paramMap = new HashMap<>(); paramMap.put("num", num); bs.removeBoard(paramMap); return "redirect:/main"; } //게시물 작성 @RequestMapping("/boardWriteForm") public String write_form(HttpServletRequest request) { String url = "board/boardWriteForm"; HttpSession session = request.getSession(); if(session.getAttribute("loginUser") == null) url = "member/loginform"; return url; } @RequestMapping("/boardWrite") public String board_write(@ModelAttribute("dto") @Valid BoardVO boardvo, BindingResult result, Model model, HttpServletRequest request) { String url = "board/boardWriteForm"; if(result.getFieldError("pass") != null) model.addAttribute("message", result.getFieldError("pass").getDefaultMessage()); else if(result.getFieldError("title") != null) model.addAttribute("message", result.getFieldError("title").getDefaultMessage()); else if(result.getFieldError("content") != null) model.addAttribute("message", result.getFieldError("content").getDefaultMessage()); else { HashMap<String, Object> paramMap = new HashMap<>(); paramMap.put("userid", boardvo.getUserid()); paramMap.put("pass", boardvo.getPass()); paramMap.put("title", boardvo.getTitle()); paramMap.put("email", boardvo.getEmail()); paramMap.put("content", boardvo.getContent()); paramMap.put("imgfilename", boardvo.getImgfilename()); bs.insertBoard(paramMap); url = "redirect:/main"; } return url; }
BoardDao
<select id="getBoard" statementType="CALLABLE" parameterType="java.util.HashMap"> {CALL getBoard( #{num}, #{ref_cursor, mode=OUT, jdbcType=CURSOR, javaType=ResultSet, resultMap=boardMap} )} </select> <update id="updateBoard" statementType="CALLABLE" parameterType="java.util.HashMap"> {CALL updateBoard( #{num}, #{userid}, #{pass}, #{email}, #{title}, #{content}, #{imgfilename} )} </update> <delete id="removeBoard" statementType="CALLABLE" parameterType="java.util.HashMap"> {CALL removeBoard(#{num})} </delete> <insert id="insertBoard" statementType="CALLABLE" parameterType="java.util.HashMap"> {CALL insertBoard( #{userid}, #{pass}, #{email}, #{title}, #{content}, #{imgfilename} )} </insert>
프로시저
create or replace PROCEDURE getBoard( p_num IN board.num%type, p_cur OUT SYS_REFCURSOR ) IS BEGIN open p_cur for select * from board where num=p_num order by num desc; END; create or replace PROCEDURE updateBoard( p_num IN board.num%type, p_userid IN board.userid%type, p_pass IN board.pass%type, p_email IN board.email%type, p_title IN board.title%type, p_content IN board.content%type, p_imgfilename IN board.imgfilename%type ) IS BEGIN update board set pass=p_pass, userid=p_userid, email=p_email, title=p_title, content=p_content, imgfilename=p_imgfilename where num=p_num; END; create or replace PROCEDURE removeBoard( p_num IN board.num%type ) IS BEGIN delete from board where num=p_num; commit; END; create or replace PROCEDURE insertBoard( p_userid IN board.userid%type, p_pass IN board.pass%type, p_email IN board.email%type, p_title IN board.title%type, p_content IN board.content%type, p_imgfilename IN board.imgfilename%type ) IS BEGIN insert into board (num, pass, userid, email, title, content, imgfilename) values (board_seq.nextval, p_pass, p_userid, p_email, p_title, p_content, p_imgfilename); END;
+ hashMap형태로 전달되는 파라미터는 jsp 파일에서 필드명을 대문자로 !! 바꿔주기
'학원 > Spring' 카테고리의 다른 글
2022-03-24 스프링부트 : 쇼핑몰#2 (0) 2022.03.24 2022-03-23 스프링 부트 : 쇼핑몰#1 (0) 2022.03.23 2022-03-22 스프링부트 : 프로시저를 이용한 게시판#2 (0) 2022.03.22 2022-03-17 스프링 부트 : 게시판 만들기 #3 게시판 (0) 2022.03.17 스프링 부트 : 게시판 만들기 #2 게시판 출력(paging)/회원 정보 수정/글쓰기/댓글 작성 (0) 2022.03.16