관리 메뉴

공부한것들을 정리하는 블로그 입니다.

12. 카테고리 항목 추가 : 카테고리별로 불러오기(DB조인) 본문

(2017) 사이드 프로젝트/fnl-project(게시판)

12. 카테고리 항목 추가 : 카테고리별로 불러오기(DB조인)

호 두 2017. 6. 4. 17:37
반응형
설명 : 
화면 상단의 nav에 있는 category bar를 이용하여 게시판 글을 볼 때, 원하는 category 별로 정렬하여 출력 가능 


추가로 공부해볼만한 것 :  

spring에서 파라미터값 넘기는 방법  
참고 :  


----------------------------------------------------------------------------------------------

index.jsp





menu/menuList.jsp
	




NoriterController
@RequestMapping(value="/noriterList.do", method = RequestMethod.GET)
	public ModelAndView noriterList(/*@RequestParam(value="category") int category,*/ Noriter noriter, ModelAndView mv, Paging npaging, HttpServletRequest request) throws Exception{

		// paging
		int a = 1;
		int b = 1;
		a = noriterService.noriterTC(noriter);
		pu.setChangedTotalCount(a);
		pu.setChangedPage(b);
		
		//전달받은 현재 페이지 추출
		if(request.getParameter("page") != null){
			b =Integer.parseInt(request.getParameter("page"));
			pu.setChangedPage(b);
		}
		npaging = pu.noticePaging();
		
		// category 추출 : @RequestParam
		int c = 1;
		int category;
		if(request.getParameter("category") == null){
			category = c;
		} else {
			c = Integer.parseInt(request.getParameter("category"));
			category = c;
		}
		System.out.println("category : " + category);
		
		// List 출력(get)
		List<noriter> nlist = noriterService.noriterList(noriter, npaging, category);
		
		mv.setViewName("noriter/noriterList");
		mv.addObject("nlist", nlist);
		mv.addObject("page", npaging.getPage());
		mv.addObject("countList", npaging.getCountList());
		mv.addObject("countPage", npaging.getCountPage());
		mv.addObject("totalPage", npaging.getTotalPage());
		mv.addObject("startPage", npaging.getStartPage());
		mv.addObject("endPage", npaging.getEndPage());
		mv.addObject("category", category);
		
		System.out.println(npaging);

		return mv;
	}

인자값을 받는 부분중에 주석처리된 /*@RequestParam(value="category") int category,*/ 부분이 있는데 이렇게 처리할 경우, 글을 새로 생성(nInsert.do) 후 noriterList 메서드를 다시 호출하여 List를 출력하는 과정에서 category 값이 없게됨. 해결방법은, ninsert.do에서 noriterList를 호출할때 mv.setViewName("redirect:/noriter/noriterList.do?category=1"); 이와같이 직접 넘겨주거나 request를 이용하여 유효성 검사를 따로 하는 방법이 있다. 후자쪽이 더 좋다고 판단하여 그렇게 하였음 





NoriterService
	
List<noriter> noriterList(Noriter noriter, Paging paging, int category) throws Exception;





Noriterdao
	@SuppressWarnings("unchecked")
	public List<noriter> noriterList(Noriter noriter, Paging paging, int category) throws Exception {
		Map map = new HashMap();
		int start = ((paging.getPage() -1 ) * 10) + 1;
		int end = (paging.getPage() * 10);
		System.out.println("start : " + start);
		System.out.println("end : " + end);
		
		map.put("noriter", noriter);
		map.put("start", start);
		map.put("end", end);
		map.put("category", category);
		
		// category가 1일 경우, 전체 출력
		return (List<noriter>) sqlSession.selectList("noriterList", map);
	}





noriter-mapper
	<resultmap id="noriterResult" type="noriter">
		<id property="classNo" column="N_CLASSNO">
		<result property="category" column="N_CATEGORY">
		<result property="nickname" column="N_NICKNAME">
		<result property="classTitle" column="N_CLASSTITLE">
		<result property="detail" column="N_DETAIL">
		<result property="video" column="N_VIDEO">
		<result property="career" column="N_CAREER">
		<result property="water" column="N_WATER">
		<result property="like" column="N_LIKE">
		<result property="count" column="N_COUNT">
		<result property="hidden" column="N_HIDDEN">
		<result property="date" column="N_DATE">
		<result property="visibility" column="N_VISIBILITY">
		<result property="videopath" column="N_VIDEOPATH">
		<result property="videoname" column="N_VIDEONAME">
	</result>

	


반응형
Comments