ㅎㅇ
detail.jsp
삭제버튼 옆에 수정버튼을 만들어줍시다
<div class="container">
<c:if test="${sessionScope.principal.id == dto.userId}">
<a href="/blog/board?cmd=updateForm&id=${dto.id}" class="btn btn-warning" >수정</a>
<button onClick="deleteById(${dto.id})" class="btn btn-danger">삭제</button>
</c:if>
updateForm.jsp
<%@page import="com.cos.blog.domain.user.User"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="../layout/header.jsp" %>
<!-- 해당 페이지로 직접 URL(자원에 직접 파일.확장자) 접근을 하게 되면 또 파일 내부에서 세션 체크를 해야함. -->
<!-- 필터에 .jsp로 접근하는 모든 접근을 막아버리면 됨. -->
<div class="container">
<form action="/blog/board?cmd=update" method="POST">
<input type="hidden" name="id" value="${dto.id}" />
<div class="form-group">
<label for="title">Title:</label>
<input type="text" class="form-control" placeholder="title" id="title" name="title" value="${dto.title}" />
</div>
<div class="form-group">
<label for="content">Content:</label>
<textarea id="summernote" class="form-control" rows="5" id="content" name="content">
${dto.content}
</textarea>
</div>
<button type="submit" class="btn btn-primary">글쓰기 수정</button>
</form>
</div>
<script>
$('#summernote').summernote({
placeholder: '글을 쓰세요.',
tabsize: 2,
height: 400
});
</script>
</body>
</html>
saveForm 복붙해서 만든겁니다.
title 과 content에 작성했던 내용들이 있어야하니까 value = ${dto.title} 이렇게 넣어줬습니다
나중에 컨트롤러에서 setAttribute 해서 키값 dto로 줘야겠지요??
BoardDao.java
public int update(UpdateReqDto dto) {
String sql = "UPDATE board SET title = ?, content = ? WHERE id = ?";
Connection conn = DB.getConnection();
PreparedStatement pstmt = null;
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, dto.getTitle());
pstmt.setString(2, dto.getContent());
pstmt.setInt(3, dto.getId());
int result = pstmt.executeUpdate();
return result;
} catch (Exception e) {
e.printStackTrace();
} finally { // 무조건 실행
DB.close(conn, pstmt);
}
return -1;
}
무수한 SQL문의 반복
UpdateReqDto.java
package com.cos.blog.domain.board.dto;
import lombok.Data;
@Data
public class UpdateReqDto {
private int id;
private String title;
private String content;
}
글 수정에만 필요한 데이터 전송객체
BoardService.java
public int 글수정(UpdateReqDto dto) {
return boardDao.update(dto);
}
BoardController.java
else if(cmd.equals("updateForm")) {
int id = Integer.parseInt(request.getParameter("id"));
DetailRespDto dto = boardService.글상세보기(id);
request.setAttribute("dto", dto);
RequestDispatcher dis = request.getRequestDispatcher("board/updateForm.jsp");
dis.forward(request, response);
}else if(cmd.equals("update")) {
int id = Integer.parseInt(request.getParameter("id"));
String title = request.getParameter("title");
String content = request.getParameter("content");
UpdateReqDto dto = new UpdateReqDto();
dto.setId(id);
dto.setTitle(title);
dto.setContent(content);
int result = boardService.글수정(dto);
if(result == 1) {
// 고민해보세요. 왜 RequestDispatcher 안썻는지... 한번 써보세요. detail.jsp 호출
response.sendRedirect("/blog/board?cmd=detail&id="+id);
}else {
Script.back(response,"글 수정에 실패하였습니다.");
}
}
updateForm 은 글 수정하기 페이지를 들어갔을 때 ,
update는 글 수정 완료 버튼을 눌렀을 때.
결과
'국비지원 Spring프레임워크 > JSP dynamic web project blog' 카테고리의 다른 글
blog 12. 댓글 목록 보기 (0) | 2021.03.03 |
---|---|
blog 11. 댓글 쓰기 ajax (gson 정리) (0) | 2021.03.02 |
blog 9. 글 삭제 ajax, 공통Dto (0) | 2021.02.23 |
blog 8. 글 상세보기 (0) | 2021.02.23 |
blog 7. 페이지 버튼 disable, progress bar (0) | 2021.02.23 |