괴발개발/Spring Framework

jsp와 게시판 코드 하나로 여러 게시판 만들기

moonday 2021. 9. 2. 10:39

방법1 : get방식을 이용해 url에서 직접 매개변수의 값을 설정해서 게시판으로 이동하는 방법

조건 : 모든 화면jsp파일을 동일하게 써야 할 것. 구조가 다르다면 방법2를 써야 함.

 

1-1. ?객체명.변수명=원하는게시판값 

게시판 경로로 이동하는 메뉴바(네비nav)에서 해당 경로에 ?객체명.변수명=원하는게시판값 을 넣어준다.

컨트롤러에서 사용하는 Criteria 클래스의 객체 cri에는 이미 게시판종류에 대한 변수가 선언되어있음.

+ addObject를 이용해서 cri의 값을보내서 화면을 페이지에 맞춰 띄워주기

@GetMapping("/list")
	public ModelAndView boardListGet(ModelAndView mv, Criteria cri) {
		if(cri.getBoardType() == null || cri.getBoardType().equals("")) {
			cri.setBoardType("free");
		}
		ArrayList<BoardVO> list = boardService.getBoardList(cri);
		int totalCount = boardService.getTotalCount(cri);
		PageMaker pm = new PageMaker(totalCount, 4, cri);
		mv.addObject("pm",pm);	
		mv.addObject("list", list);
		mv.addObject("cri", cri);	
		mv.setViewName("/board/list");
		return mv;
	}
@Data
public class Criteria {
		
		private int currentPage; //현재 페이지
		private int contentPerPage; //한 페이지 당 컨텐츠(게시글) 갯수
		private String boardType; //검색타입이 아니라, 게시글 타입
		private String sortType; //id, authority 정렬
		private String sort; //desc, asc

네비바에 있는 URL에서 값을 줌

<li><a href="<%=request.getContextPath()%>/board/list?boardType=free">자유게시판</a></li>
<li><a href="<%=request.getContextPath()%>/board/list?boardType=notice">공지사항</a></li>

1-2. ?변수명=게시판값

위와달리 criteria 클래스 처럼 게시판 타입을 처리해줄 변수를 가진 객체를 이용하지 않고 매개변수를 이용해서 바로 실행할 수 있음.

@GetMapping("/list")
	public ModelAndView boardListGet(ModelAndView mv, String type) {
		if(type == null || type.equals("")) {
			type= "free";
		}
		ArrayList<BoardVO> list = boardService.getBoardList(cri);
		int totalCount = boardService.getTotalCount(cri);
		PageMaker pm = new PageMaker(totalCount, 4, cri);
		mv.addObject("pm",pm);	
		mv.addObject("list", list);
		mv.addObject("type", type);	
		mv.setViewName("/board/list");
		return mv;
	}

네비바에 있는 URL에서 값을 줌

<li><a href="<%=request.getContextPath()%>/board/list?type=free">자유게시판</a></li>
<li><a href="<%=request.getContextPath()%>/board/list?type=notice">공지사항</a></li>

 

 

방법2.

2-1. 컨트롤러 코드만 새로만들고 해당 컨트롤러에서 자체적으로 "notice" "free"와 같은 게시판값을 지정해줌

*기존에 만들었던 게시판 컨트롤러코드를 그대로 복붙해서 만든 뒤, 게시판 명만 바르게 설정해주면 됨

@Controller
@RequestMapping("/CS/board")
@AllArgsConstructor
public class CSBoardController {	
    BoardService boardService;
    TeacherService teacherService;
	
	@GetMapping("/list")
	public ModelAndView boardListGet(ModelAndView mv, Criteria cri) {
		cri.setBoardType("CS");
		ArrayList<BoardVO> list = boardService.getBoardList(cri);
		int totalCount = boardService.getTotalCount(cri);
		PageMaker pm = new PageMaker(totalCount, 4, cri);
		mv.addObject("pm",pm);	
		mv.addObject("list", list);
		mv.addObject("boardType", "CS/");
		mv.setViewName("/board/list");
		return mv;
	}

네비바에서 URL을 통해 이동할 때, 경로값을 지정으로 바로 넣어주면 됨.

<li><a href="<%=request.getContextPath()%>/CS/board/list">문의사항</a></li>