본문 바로가기
BackEnd/Spring

스프링 6일차(카테고리 자동 생성)

by JaeHa.K 2021. 8. 30.
728x90

 

관리자 페이지에서 카테고리 생성시 게시판과 글쓰기 카테고리에 자동으로 추가 시키기

 

오늘은 관리자 기능을 만들어 보았습니다. 바로 관리자가 카테고리를 생성하면 사용자가 보는 게시판과 글쓰기 페이지에 자동으로 관리자가 추가한 카테고리를 생성하는 것입니다!

 

매번 새로운 카테고리를 생성할 때마다 일일이 수작업으로 만든다면 엄청 번거롭지만 이렇게 관리자 페이지에서 생성과 수정을 하고 그것이 따로 작업하지 않더라도 자동으로 페이지에 생성이 된다면 엄청 편하겠죠? ㅎㅎ

 

 

1. AdminController

	@GetMapping(value = "/admin/category")
	public ModelAndView category(HttpServletRequest request) {
		ModelAndView mv = new ModelAndView("/admin/category");
		List<HashMap<String, Object>> category = adminService.getCategory();
		mv.addObject("category", category);
        
		return mv;
	}//관리자 페이지 진입 시
	
	@PostMapping(value="/admin/category")
	public String categoryInsert(HttpServletRequest request){
		String categoryName = request.getParameter("categoryName");
		adminService.categoryInsert(categoryName);
		
		return "redirect:/admin/category";//get다시 호출
	}// 카테고리 생성 시

 

 

2. AdminService

	public List<HashMap<String, Object>> getCategory() {
		return adminDAO.getCategory();
	}

	public int categoryInsert(String categoryName) {
		return adminDAO.categoryInsert(categoryName);
	}

 

 

3. AdminDAO

	public List<HashMap<String, Object>> getCategory() {
		return sqlSession.selectList("admin.getCategory");
	}

	public int categoryInsert(String categoryName) {
		return sqlSession.insert("admin.categoryInsert", categoryName);
	}

 

 

4. AdminMapper

	<select id="getCategory" resultType="hashMap">
		SELECT * FROM scategory
	</select>
	
	<insert id="categoryInsert">
		INSERT INTO scategory (sc_category) VALUES (#{categoryName})
	</insert>

여기까지가 관리자 페이지에서 카테고리를 생성하기 위한 절차입니다.

수정 기능은 등록과 비슷함으로 생략하겠습니다(혹시라도 도움이 필요하면 댓글 남겨주십쇼! ㅎㅎ 아는 선에서 도움 드리겠습니다😣)

 

 

이제부터 게시판과 글쓰기 페이지에 자동으로 추가 될 수 있도록 설정하겠습니다.

여기서부터는 지난 차시에서 했던 내용이 많이 포함되어 있어 생략된 부분이 많으므로

쉽게 이해가 되지 않으시다면 이전 글을 보고 오시면 될 것 같습니다.

5.  TestController(게시판과 글쓰기를 담당하는 컨트롤러입니다.)

		String category = (String)categoryList.get(0).get("sc_category");
		for (HashMap<String, Object> list : categoryList) {
			if(((int)list.get("sc_no")) == sb_cate) {
				category = (String) list.get("sc_category");
			}
		}
        
        mv.addObject("category", category);

기존에는 파라미터 값을 받아 해당 카테고리 번호에 맞는 카테고리 이름을 뽑기 위해

String category = testService.getCategory(sb_cate);라고 했었지만 이제는 모든 카테고리를 갖고 와야되기 때문에 이부분을 수정해줬습니다.

 

 

6. TestService

	public List<HashMap<String, Object>> categoryList() {
		return testDAO.categoryList();
	}

 

 

7. TestDAO

	public List<HashMap<String, Object>> categoryList() {
		return sqlSession.selectList("test.categoryList");
	}

 

 

8. testMapper

	<select id="categoryList" resultType="hashMap">
		SELECT * FROM scategory
	</select>

 

 

9. Board.jsp

TestController에서 categoryList를 return해줬기 때문에

		<c:forEach items="${categoryList }" var="cl">
			<a href="./board?sb_cate=${cl.sc_no }">${cl.sc_category }</a> |			
		</c:forEach>

이렇게 해주면 끝!

 

 

이제 write페이지로 넘어가기전 컨트롤러에서 categoryList를 잡아주는 설정만 하면 끝난다.

10. TestController(write)

	@GetMapping("/write")
	public ModelAndView write(@RequestParam("sb_cate") int sb_cate) {
		ModelAndView mv = new ModelAndView("write");
		List<HashMap<String, Object>> categoryList = testService.categoryList();
		mv.addObject("categoryList", categoryList);
		return mv;
	}

그리고 write.jsp는 이런식으로 해주면 된다.

<select name="sb_cate" id="selectCate">
  <c:forEach items="${categoryList }" var="cl">
  	<option value="${cl.sc_no }">${cl.sc_category }</option>
  </c:forEach>
</select>

select부분을 이렇게 해주면 된다.

 

++추가적으로 글쓰기 페이지에 보면 게시판으로 다시 돌아가는 버튼이 두가지가 있는데 하나는 select에서 선택된 카테고리 게시판으로 이동하는 기능이고, 다른 하나는 글쓰기 페이지로 넘어오기 직전 게시판으로 이동하는 기능이다.

		<button id="board">게시판으로 이동</button> -> select에서 선택된 카테고리로 이동
		<a href="./board?sb_cate=${param.sb_cate }">게시판으로 이동</a> -> 이전 페이지로 이동

그냥 만들고 싶어서 만들어봤다 ㅎㅎ (https://unknown-coding.tistory.com/8 [Ramg's Programming]" href="http://%20 출처: https://unknown-coding.tistory.com/8 [Ramg's Programming]" target="_blank">글쓰기 페이지 제이쿼리 기능 보러가기)

반응형