-
day65 - Spring Framework(스프링, Annotation)KIC/Spring 2021. 9. 15. 18:24반응형
[boardController.java]
package controller; import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.multipart.MultipartFile; import com.oreilly.servlet.MultipartRequest; import service.BoardMybatisDao; import model.Board; @Controller @RequestMapping("/board/") public class BoardController{ HttpServletRequest request; Model m; HttpSession session; @Autowired BoardMybatisDao dao; @ModelAttribute void init(HttpServletRequest request, Model m) { this.request = request; this.m = m; this.session = request.getSession(); } @RequestMapping("list") // 실질적으로는 /board/list 인 샘 public String list(){ /* * 게시물 목록 보기 * 1. pageNum 파라미터 존재. pageNum 파라미터 없으면 1로 설정. * 2. 10건의 게시물 출력. => db에서 * 해당 페이지에 출력되는 게시물만 조회. 순서 : 최근 게시물 순으로 * 3. 화면에 출력. * 4. boardid 파라메터가 없으면 session을 수정하지 않음 default는 1임 */ // pageNum이 넘어와야 pageNum이 바뀜 if (request.getParameter("pageNum") != null) { session.setAttribute("pageNum", request.getParameter("pageNum")); } // boardid가 넘어와야 세션이 변경됨 : 현재 게시판분류에 따른 입력,수정을 적용 if (request.getParameter("boardid") != null) { session.setAttribute("boardid", request.getParameter("boardid")); session.setAttribute("pageNum", "1"); } String pageNum = (String) session.getAttribute("pageNum"); if (pageNum == null) pageNum = "1"; int pageInt = Integer.parseInt(pageNum); String boardid = (String) session.getAttribute("boardid"); if (boardid == null) boardid = "1"; int limit = 10; // 한페이지에 출력할 게시물 건수 int boardcount = dao.boardCount(boardid);// 등록된 전체 게시물의 건수 /* * pageInt-현재 페이지 넘버, * limit-한페이지에 출력할 게시물 건수 * boardcount--등록된 전체 게시물의 건수 * boardid-공지사항(1),자유게시판(2), QnA(3) */ List<Board> list = dao.list(pageInt, limit, boardcount, boardid); // 화면에 출력된 게시물 데이터 // 13 ---> boardcount/limit : 4 + 1 //-----------paging 작업 int maxpage = (int) (boardcount / limit) + (boardcount % limit == 0 ? 0 : 1); int bottomLine = 3; // page 1,2,3 : 1, 4,5,6: 2 int startpage = 1 + (pageInt - 1) / bottomLine * bottomLine; int endpage = startpage + bottomLine - 1; if (endpage > maxpage) endpage = maxpage; int boardnum = boardcount - (pageInt - 1) * limit; //100개 1:100, 2:90, 3:80 //-----------paging 작업 //print list m.addAttribute("boardcount", boardcount); // 등록된 전체 게시물의 건수 m.addAttribute("list", list); //프린트한 게시물 m.addAttribute("boardnum", boardnum); //게시물 시작번호 m.addAttribute("pageNum", pageNum); //현재 페이지 번호 //하단 paging m.addAttribute("startpage", startpage); // 하단 시작 페이지 m.addAttribute("endpage", endpage); //하단 end 페이지 m.addAttribute("bottomLine", bottomLine); //하단 화면당 페이지 보기 m.addAttribute("maxpage", maxpage); //총 페이지수 //게시판 제목 m.addAttribute("boardName", getBoardName(boardid)); //게시판 제목 (공지시항, 자유게시판, QnA) return "board/list"; } public String getBoardName(String boardid) { String boardName = ""; switch (boardid) { case "1": { boardName="공지사항"; break; } case "2": { boardName="자유게시판"; break; } case "3": { boardName="QnA"; break; } default: boardName="공지사항"; } return boardName; } @RequestMapping("writeForm") public String writeForm() { String boardid = (String) request.getSession().getAttribute("boardid"); if (boardid == null) boardid = "1"; m.addAttribute("boardName", getBoardName(boardid)); return "board/writeForm"; } @RequestMapping("writePro") public String writePro(Board board) { String uploadpath = request.getServletContext().getRealPath("/") + "upfile"; MultipartFile multipartFile = board.getF(); if(!multipartFile.isEmpty()) { File file = new File(uploadpath, multipartFile.getOriginalFilename()); try { multipartFile.transferTo(file); board.setFile1(multipartFile.getOriginalFilename()); }catch(IllegalStateException e) { e.printStackTrace(); }catch(IOException e) { e.printStackTrace(); } }else { board.setFile1(""); } String boardid = (String) session.getAttribute("boardid"); if (boardid == null) boardid = "1"; board.setBoardid(boardid); String msg = "게시물 등록 실패"; String url = "board/writeForm"; if(dao.insert(board)) { msg="게시물 등록 성공"; url="board/list"; } m.addAttribute("msg", msg); m.addAttribute("url", url); return "alert"; } @RequestMapping("info") public String info(int num){ Board board = dao.selectOne(num); // 게시물 조회 dao.readcntadd(num); // 조회건수증가 m.addAttribute("board", board); String boardid = (String) request.getSession().getAttribute("boardid"); if (boardid == null) boardid = "1"; m.addAttribute("boardName", getBoardName(boardid)); return "board/info"; } @RequestMapping("updateForm") public String updateForm(int num){ /* * 1. num 값의 게시물을 조회화여 화면 출력하기 */ Board board = dao.selectOne(num); m.addAttribute("board", board); return "board/updateForm"; } @RequestMapping("update ") public String update(Board board) { String uploadpath = request.getServletContext().getRealPath("/") + "upfile"; MultipartFile multipartFile = board.getF(); if(!multipartFile.isEmpty()) { File file = new File(uploadpath, multipartFile.getOriginalFilename()); try { multipartFile.transferTo(file); board.setFile1(multipartFile.getOriginalFilename()); }catch(IllegalStateException e) { e.printStackTrace(); }catch(IOException e) { e.printStackTrace(); } }else { board.setFile1(""); } Board dbBoard = dao.selectOne(board.getNum()); String msg = "비밀번호가 틀렸습니다."; String url = "board/updateForm?num=" + board.getNum(); if(board.getPass().equals(dbBoard.getPass())){ if(dao.update(board)) { msg="게시물 수정 성공"; url="board/list"; }else { msg = "게시물 수정 실패"; } } m.addAttribute("msg", msg); m.addAttribute("url", url); return "alert"; } @RequestMapping("deleteForm") public String deleteForm(int num){ m.addAttribute("num", num); return "board/deleteForm"; } @RequestMapping("delete") public String delete(int num, String pass){ System.out.println(pass); String msg = "비밀번호가 틀렸습니다!"; String url = "board/deleteForm?num=" + num; Board board = dao.selectOne(num); // board.getPass() : db에 저장된 비밀번호 if (pass.equals(board.getPass())) { if (dao.delete(num)) { msg = "게시글을 성공적으로 삭제하였습니다."; url = "board/list"; } else { msg = "게시글을 삭제하는데 실패하였습니다!"; url = "board/info?num=" + num; } } m.addAttribute("url", url); m.addAttribute("msg", msg); return "alert"; } @RequestMapping("replyForm") public String replyForm(int num){ /* * 답변글 쓰기 화면 * 1. 원글의 num을 파라미터로 받는다. * 2. 원글의 num,ref,reflevel,refstep 정보를 저장 * 3. 입력 화면 표시 */ Board board = dao.selectOne(num); // 게시물 조회 m.addAttribute("board", board); String boardid = (String) request.getSession().getAttribute("boardid"); if (boardid == null) boardid = "1"; m.addAttribute("boardName", getBoardName(boardid)); return "board/replyForm"; } @RequestMapping("replyPro") public String replyPro(Board board){ String boardid = (String) request.getSession().getAttribute("boardid"); if (boardid == null) boardid = "1"; board.setFile1(""); board.setBoardid(boardid); dao.refstepadd(board.getRef(), board.getRefstep()); // 3. Board 객체를 db에 insert 하기. String msg = "답변등록시 오류발생"; String url = "board/replyForm?num=" + board.getNum(); if (dao.insert(board)) { msg = "답변등록 완료"; url = "board/list"; } m.addAttribute("url", url); m.addAttribute("msg", msg); return "alert"; } }
300x250'KIC > Spring' 카테고리의 다른 글
day67 - Spring Framework(mvc) (0) 2021.09.23 day66 - Spring Framework(mvc) (0) 2021.09.17 day64 - Spring Framework(스프링, AOP) (0) 2021.09.14 day63 - Spring Framework(스프링, AOP) (0) 2021.09.13 day62 - Spring Framework(스프링, Annotation) (0) 2021.09.10