Programming/스프링(spring) - Enterprise
스프링(spring)/ +더하기 3(세션 활용 게시물 등록)
esoog Polaris
2023. 8. 4. 17:34
1. 세션을 활용하여 회원 권한으로 글 쓰는 시스템을 만들어 본다.
먼저, jsp단에서 시작할 링크로 태그를 걸어준다.
<a href="/board/write?sub_idx=${subject.sub_idx}">글쓰기</a>
* '?쿼리'를 사용하여 어떠한 값을 포함해서 get요청을 보냈다. 이것은 외래키로 참고할 데이터를 커스텀.
2. 그리고는 get요청을 처리할 Controller에서 url매핑 먼저 해준다.
//게시물 작성
@RequestMapping(value = "/write", method = RequestMethod.GET)
public void getWirte(@RequestParam("sub_idx") int sub_idx, Model model) throws Exception {
List<BoardVO> subject = null;
subject = service.subject(sub_idx);
model.addAttribute("subject", subject);
}
*파라미터로 get요청 인자를 받아서 데이터를 리스트 모델화 시켜준다. 이는 뷰에서 써먹을 데이터를 위함이다.
* service.subject는 이전에 데이터 상호작용 파트에서 사용했었다.
3. 그리고 write.jsp파일을 열어 살포시 로직을 추가해본다.
제일 윗단에 로그인 처리 로직에 포함되어 있는 ${member}를 활용하여 구현한다.
<c:if test="${member == null}">
<script>
alert("로그인을 해야 작성이 가능합니다.");
window.location.href = '/'; // 여기서 '/페이지'는 이동하고자 하는 페이지의 URL입니다.
</script>
</c:if>
그리고 그 아래(절차에 따라 내려오니까) 로그인 세션이 존재한다면,
post 폼을 열어주도록 한다.
<c:if test="${not empty member}">
<c:forEach items="${subject}" var="subject">
<form method="post">
<label>주제</label> ${subject.title} <br />
<input type="hidden" name="title" value="${subject.title}">
<input type="hidden" name="sub_idx" value="${subject.sub_idx}">
<label>작성자</label> ${member.id} <br />
<input type="hidden" name="nick" value="${member.id}">
<div class="mb-3">
<label for="exampleFormControlTextarea1" class="form-label">내용</label>
<textarea class="form-control" id="exampleFormControlTextarea1"
rows="3" name="text"></textarea>
</div>
<button type="submit">작성</button>
</form>
</c:forEach>
</c:if>
* 데이터의 subject 테이블과 세션을 활용해서
글쓰기가 가능하도록 한다.
그리고 <input type="hidden">을 사용해서 post로 숨겨서 보낼 내용을 추가해준다.
4. 그럼 이 post 폼을 받아 처리하기 위해 Controller를 다시 코드 추가한다.
@RequestMapping(value = "/write", method = RequestMethod.POST)
public String postWirte(BoardVO vo) throws Exception {
service.write(vo);
return "redirect:/board/subject?sub_idx=" + vo.getSub_idx();
}
5. 다음은? 자동이다시피 나오는 DAO와 Service를 건드려준다.
//게시물 작성
public void write(BoardVO vo) throws Exception;
그리고 DAOImpl파일에 아래 코드 추가.
// 게시물 작성
@Override
public void write(BoardVO vo) throws Exception {
sql.insert(namespace + ".write", vo);
}
ServiceImpl 파일에 아래 코드 추가
@Override
public void write(BoardVO vo) throws Exception {
dao.write(vo);
}
6. 그리고 데이터를 처리할 매퍼로 상호작용 하기.~
<!-- 게시물 작성 -->
<insert id="write" parameterType="com.project.model.BoardVO" >
insert into
board(title, text,
nick, sub_idx)
values(#{title}, #{text}, #{nick}, #{sub_idx})
</insert>
확인. 나이스
반응형