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

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>[ <c:out value="${list.reply_count}"/> ]</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> 를통하여 조건을 주어서 나타나게 하였습니다.

글을 작성하게 되면 이런 식으로 표현이 됩니다.
'Spring > Study' 카테고리의 다른 글
| [Spring]장바구니 기능 구현 (0) | 2022.11.21 |
|---|---|
| [Spring]별점기능 구현 (0) | 2022.10.11 |
| [Spring]Ajax를 이용한 좋아요 기능 구현 (0) | 2022.09.25 |
| [Spring]Ajax를 이용한 댓글(답글) 구현 (0) | 2022.09.25 |
| [Spring]비밀번호 인코딩(BCryptPasswordEncoder 적용)-로그인 부분 (0) | 2022.05.21 |