일반 게시판에서 일정 회원 등급 이상이 되면 게시판 상단에 메인 공지를 쓸 수 있게 구현을 해봤습니다.

 

DB 테이블 입니다. 기본적인 컬럼에 b_group 라는 컬럼을 추가 해줬습니다.

기본값으로 1을 주었으며, b_group의 값에 따라 일반 글이 되느냐, 메인공지가 되느냐를  판단하기 위해 넣었습니다.

 

이상 간단히 구현해보았습니다.

OracleDB

//목록
select * from board order by b_group desc, bno desc

//작성
<insert id="register">
	<selectKey keyProperty="bno" order="BEFORE" resultType="int">
		select seq_board_id.nextval from dual
	</selectKey>
	<![CDATA[
		insert into board(bno,title,content,id,b_group)
		values(seq_board_id.nextval,#{title},#{content},#{id},#{b_group})
	]]>
</insert>

 

목록

Controller&Service&DAO

//목록
//Controller
	@RequestMapping(value="list.do" , method = RequestMethod.GET)
	public ModelAndView list(HttpServletRequest request)throws Exception{
		
		String viewName = getViewName(request);
		ModelAndView mav = new ModelAndView(viewName);
		List<Map<String,Object>>list =  boardService.list();

		mav.addObject("list",list);
		
		return mav;
	}
    
//Service
	@Override
	public List<Map<String,Object>> list()throws Exception{
		return boardDAO.list();
	}
    
 //DAO
 	@Override
	public List<Map<String,Object>> list()throws DataAccessException{
		return session.selectList("mapper.board.list");
	}
  • Controller&Service&DAO 등 일반 목록을 구현하는것과 같습니다.

JSP

<c:forEach var="list" items="${list}">
	<tr>
		<td>
		<c:choose>
			<c:when test="${list.b_group == 1}"> ● </c:when>
			<c:when test="${list.b_group == 2}"> ? </c:when>
			<c:when test="${list.b_group == 3}">
		<img src="${Path}/resources/image/notice.png" alt="공지사항" width="40px" height="40px">
			</c:when>
		</c:choose>
			</td>
			<td>
				<a href='<c:url value='/board/detail.do?bno=${list.bno }&b_group=${list.b_group }&id=${memberVO.id }'/>'>${list.title}
					<c:if test="${list.reply_count != 0 }">
						<span><b>[&nbsp;<c:out value="${list.reply_count}"/>&nbsp;]</b></span>
					</c:if>
				</a>
			</td>	
			<td>${list.content}</td>
			<td>${list.id}</td>
		</tr>
</c:forEach>
  • <c:when> 조건에 따라 1번은 일반, 2번은 Q&A, 3번 공지사항 으로 작성부분에 설정해 뒀습니다.
  • 값에 따라 앞에 모양이 다르게 나타나게 했습니다.

작성

Controller&Service&DAO

//Controller
	//게시글 작성 GET
	@GetMapping("register.do")
	public ModelAndView register(HttpServletRequest request) {
		ModelAndView mav = new ModelAndView();
		String viewName = (String)request.getAttribute("viewName");
		mav.setViewName(viewName);
		return mav;
	}
	//게시글 작셍 POST
	@PostMapping("register.do")
	public ModelAndView register(BoardVO board) {
		boardService.register(board);		
		ModelAndView mav = new ModelAndView("redirect:/board/list.do");
		return mav;
	}
    
  //Service
  	@Override
	public void register(BoardVO board) {
		boardDAO.register(board);
	}
    
  //DAO
  	@Override
	public void register(BoardVO board) {
		session.insert("mapper.board.register",board);
	}
  • 작성부분 또한 일반 작성 구현과 같습니다.

JSP

<select class="check" name="b_group" >
	<option value="" selected>말머리 선택해주세요</option>
	<option value="1">일반</option>
	<option value="2">Q&A</option>
<c:if test="${memberVO.m_class == '우수회원' }">
	<option value="3">공지사항</option>
</c:if>
</select>
  • 글 작성 부분에서 select-option 태그를 사용해서 각 옵션에 value값들을 주어서 DB에 값이 들어가며, 목록 부분에서 번호 별로 구분한 모양에 맞게 나타납니다.
  • 공지사항 부분은 우수회원만 사용할수 있게 <c:if> 를통하여 조건을 주어서 나타나게 하였습니다.

글을 작성하게 되면 이런 식으로 표현이 됩니다.

복사했습니다!