package seed.com.gtm.sample; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import seed.com.gtm.util.SeedCriteria; import seed.com.gtm.seedfile.SeedFileService; import seed.com.gtm.util.PageMaker; @Controller @RequestMapping("/gtm/sample") public class SampleController { @Autowired private SampleService service; @Autowired private SeedFileService fileService; /*필요 파일 및 경로 controller - src/main/java/seed/ service - src/main/java/seed/ dao - src/main/java/seed/ daoImpl - src/main/java/seed/ sql.xml - src/main/resources/egovframework/sqlmap/config/mappers/ jsp - /src/main/webapp/WEB-INF/jsp/seed/ */ /*처리과정 1. Controller 호출 2. service 호출(비즈니스 로직 구현) 3. daoImpl 호출(데이터 접근) 4. DB 조회(mybatis) 5. jsp 화면 */ /*기존 프로젝트들과 다른점 1. service가 인터페이스 가아닌 로직 구현부이다. 2. dao가 인터페이스이다. 3. PK 값을 auto increment OR idgen을 사용하는게 아닌 시퀀스를 사용한다. ex) 게시글 - C_BASEBBS_SEQ */ /*기존 분쟁조정 메뉴 중 /gtm/case/board/{boardIdx}/list.do 형태의 메뉴는 * controller , service, dao, daoImpl, jps를 공통으로 사용 */ /*{boardIdx} 게시판 구분 및 메뉴 구분에 사용하며 C_BASEBBS 테이블의 BBS_ID에 사용되는 값으로 게시판 CRUD 시 게시판을 구분 */ /*write.do - get과 post에 따라 등록화면, 등록처리 구분 edit.do - get과 post에 따라 수정화면, 수정처리 구분 */ /*message.jsp 기존 프로젝트들은 등록, 수정, 삭제 시 ajax를 사용하여 alert으로 메시지를 띄우고 목록으로 이동했지만 분쟁조정의 경우 message.jsp를 공통으로 사용하며 message, url 등 필요 정보를 화면에 넘겨주고 화면에서 메시지 노출 후 다음 화면으로 이동한다. globals.properties에 상수 선언 후 와 같이 사용 */ /*쿼리 호출 시 namespace 사용 - 게시판 namespace :form.board*/ /*게시글 등록 시 C_BASEBBS_SEQ 시퀀스의 NEXTVAL을 selectKey로 조회하여 BBS_NO에 사용*/ public void setSessionMessageRemove(HttpSession session){ session.removeAttribute("url"); session.removeAttribute("message"); session.removeAttribute("opener"); session.removeAttribute("append"); session.removeAttribute("self"); } //GET 방식으로 등록화면 @RequestMapping(value="/board/{boardIdx}/write.do", method=RequestMethod.GET) public String formWrite(ModelMap model, HttpSession session, @RequestParam Map paramMap, @PathVariable(value="boardIdx") String boardIdx){ paramMap.put("boardIdx", boardIdx); return "/seed/_extra/gtm/board/write"; } //POST 방식으로 등록처리 @RequestMapping(value="/board/{boardIdx}/write.do", method=RequestMethod.POST) public String formWrite(HttpServletRequest request ,HttpSession session, @RequestParam Map paramMap, Map map, @PathVariable(value="boardIdx") String boardIdx){ paramMap.put("memberName", session.getAttribute("memberName")); paramMap.put("memberId", session.getAttribute("memberId")); paramMap.put("boardIdx", boardIdx); service.boardInsert(paramMap); //현제 등록된 게시글의 시퀀스 불러와 맵에 저장 paramMap.put("dataIdx", paramMap.get("seq")); fileService.fileInsert(paramMap, request, session); map.put("message", "common.message.reg"); map.put("url", "/gtm/case/board/"+boardIdx+"/list.do"); return "/seed/_common/jsp/sampleMessage"; } //목록화면 @RequestMapping("/board/{boardIdx}/list.do") public String boardList(ModelMap model, HttpSession session, SeedCriteria cri,@RequestParam Map paramMap, @PathVariable(value="boardIdx") String boardIdx){ //로그인페이지로 튕겨나가지 않게 우선은 임시방편 session.setAttribute("siteIdx", "case"); String menuName = ""; if(boardIdx.equals("form")){ menuName = "분쟁조정 관련 서식"; }else if(boardIdx.equals("law")){ menuName = "법령자료실"; }else if(boardIdx.equals("news")){ menuName = "뉴스레터 자료"; }else if(boardIdx.equals("sample")){ menuName = "샘플게시판"; }else{ menuName = "공지사항"; } session.setAttribute("menuName", menuName); //페이징 관련 - Criteria 이름 중복으로 인하여 SeedCriteria로 이름 변경 후 사용 paramMap.put("pageStart", cri.getPageStart()); paramMap.put("perPageNum", cri.getPerPageNum()); paramMap.put("boardIdx", boardIdx); List> bbsList = service.boardList(paramMap); List> selectNotice = service.selectNotice(paramMap); PageMaker pageMaker = new PageMaker(); pageMaker.setCri(cri); pageMaker.setTotalCount(service.boardListCnt(paramMap)); model.addAttribute("boardIdx", boardIdx); model.addAttribute("bbsList", bbsList); model.addAttribute("selectNotice", selectNotice); model.addAttribute("pageMaker", pageMaker); return "/seed/_extra/gtm/board/list"; } //상세화면 @RequestMapping("/board/{boardIdx}/view.do") public String boardView(ModelMap model, @RequestParam Map paramMap, @PathVariable(value="boardIdx") String boardIdx){ paramMap.put("dataIdx", paramMap.get("bbsNo")); System.out.println(paramMap.get("bbsNo")); model.addAttribute("bbsView", service.boardView(paramMap)); model.addAttribute("boardIdx", boardIdx); model.addAttribute("fileList", fileService.fileList(paramMap)); return "/seed/_extra/gtm/board/view"; } //삭제처리 @RequestMapping("/board/{boardIdx}/bbsDel.do") public String boardDel(HttpSession session, @RequestParam Map paramMap, @PathVariable(value="boardIdx") String boardIdx, Map map){ paramMap.put("dataIdx", paramMap.get("bbsNo")); service.boardDel(paramMap); fileService.fileDelAll(paramMap); this.setSessionMessageRemove(session); map.put("message", "common.message.del"); map.put("url", "/gtm/case/board/"+boardIdx+"/list.do?searchType=" + paramMap.get("searchType") + "&searchTilte=" + paramMap.get("searchTilte") + "&page=" + paramMap.get("page") ); return "/seed/_common/jsp/message"; } //GET 방식으로 수정화면 @RequestMapping(value="/board/{boardIdx}/edit.do", method=RequestMethod.GET) public String boardEdit(ModelMap model, @RequestParam Map paramMap, @PathVariable(value="boardIdx") String boardIdx){ paramMap.put("dataIdx", paramMap.get("bbsNo")); List> fileList = fileService.fileList(paramMap); model.addAttribute("boardIdx", boardIdx); model.addAttribute("bbsView", service.boardView(paramMap)); model.addAttribute("fileList", fileList); model.addAttribute("fileListSize", fileList.size()); return "/seed/_extra/gtm/board/edit"; } //POST 방식으로 수정처리 @RequestMapping(value="/board/{boardIdx}/edit.do", method=RequestMethod.POST) public String boardEdit(HttpSession session, HttpServletRequest request, @RequestParam Map paramMap, @PathVariable(value="boardIdx") String boardIdx, Map map){ paramMap.put("memberId", session.getAttribute("memberId")); paramMap.put("dataIdx", paramMap.get("bbsNo"));//fileInsert에서 필요 service.boardUpdate(paramMap); fileService.fileInsert(paramMap, request, session); fileService.fileDel(paramMap); this.setSessionMessageRemove(session); map.put("message", "common.message.mod"); map.put("url", "/gtm/case/board/"+boardIdx+"/view.do?bbsNo=" + paramMap.get("bbsNo") + "&searchType=" + paramMap.get("searchType") + "&searchTilte=" + paramMap.get("searchTilte") + "&page=" + paramMap.get("page")+ "&fileFuncType=" + paramMap.get("fileFuncType") ); return "/seed/_common/jsp/message"; } }