updateForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>게시판 글 수정</title>
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/style.css" type="text/css">
<script type="text/javascript">
window.onload=function(){
const myForm = document.getElementById('update_form');
myForm.onsubmit=function(){
const title = document.getElementById('title');
if(title.value.trim()==''){
alert('제목을 입력하세요');
title.value='';
title.focus();
return false;
}
const content = document.getElementById('content');
if(content.value.trim()==''){
alert('내용을 입력하세요');
content.value='';
content.focus();
return false;
}
};
};
</script>
</head>
<body>
<div class="page-main">
<jsp:include page="/WEB-INF/views/common/header.jsp"/>
<div class="content-main">
<h2>글 수정</h2>
<form id="update_form" action="update.do" method="post" enctype="multipart/form-data">
<input type="hidden" name="board_num" value="${board.board_num}">
<ul>
<li>
<label for="title">제목</label>
<input type="text" name="title" id="title" value="${board.title}" maxlength="50">
</li>
<li>
<label for="content">내용</label>
<textarea rows="5" cols="40" name="content" id="content">${board.content}</textarea>
</li>
<li>
<label for="filename">이미지</label>
<input type="file" name="filename" id="filename" accept="image/gif,image/png,image/jpeg">
<c:if test="${!empty board.filename}">
<div id="file_detail">
<img src="${pageContext.request.contextPath}/upload/${board.filename}" width="100">
<br>
<input type="button" value="파일 삭제" id="file_del">
</div>
<script type="text/javascript" src = "${pageContext.request.contextPath}/js/jquery-3.7.1.min.js"></script>
<script type="text/javascript">
$(function(){
$('#file_del').click(function(){
let choice = confirm('삭제하시겠습니까?');
if(choice){
//서버와 통신
$.ajax({
url:'deleteFile.do',
type:'post',
data:{board_num:${board.board_num}},
dataType:'json',
success:function(param){
if(param.result == 'logout'){
alert('로그인 후 사용하세요.');
}else if(param.result == 'success'){
$('#file_detail').hide();
}else if(param.result == 'wrongAccess'){
alert('잘못된 접속입니다.');
}else{
alert('파일 삭제 오류 발생');
}
},
error:function(){
alert('네트워크 오류 발생');
}
});
}
});
});
</script>
</c:if>
</li>
</ul>
<div class="align-center">
<input type="submit" value="수정">
<input type="button" value="목록" onclick="location.href='list.do'">
</div>
</form>
</div>
</div>
</body>
</html>
UpdateFormAction
package kr.board.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import kr.board.dao.BoardDAO;
import kr.board.vo.BoardVO;
import kr.controller.Action;
import kr.util.StringUtil;
public class UpdateFormAction implements Action{
@Override
public String execute(HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpSession session = request.getSession();
Integer user_num = (Integer)session.getAttribute("user_num");
if(user_num == null) {
return "redirect:/member/login.do";
}
//로그인O
int board_num = Integer.parseInt(request.getParameter("board_num"));
BoardDAO dao = BoardDAO.getInstance();
BoardVO board = dao.getBoard(board_num);
if(user_num != board.getMem_num()) {
return "/WEB-INF/views/common/notice.jsp";
}
//큰 따옴표 처리
//수정폼의 input 태그에서 큰 따옴표 오류 보정
board.setTitle(StringUtil.parseQuot(board.getTitle()));
//로그인O , 로그인한 회원번호와 작성자 회원번호 일치
request.setAttribute("board", board);
return "/WEB-INF/views/board/updateForm.jsp";
}
}
UpdateAction
package kr.board.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import kr.board.dao.BoardDAO;
import kr.board.vo.BoardVO;
import kr.controller.Action;
import kr.util.FileUtil;
public class UpdateAction implements Action{
@Override
public String execute(HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpSession session = request.getSession();
Integer user_num = (Integer)session.getAttribute("user_num");
if(user_num == null) {
return "redirect:/member/login.do";
}
//로그인O
request.setCharacterEncoding("utf-8");
int board_num = Integer.parseInt(request.getParameter("board_num"));
BoardDAO dao = BoardDAO.getInstance();
//수정전 데이터
BoardVO db_board = dao.getBoard(board_num);
//로그인한 회원번호와 작성자 회원번호 일치 여부 체크
if(user_num!=db_board.getMem_num()) {
//로그인한 회원번호와 작성자 회원번호 불일치
return "WEB-INF/views/common/notice.jsp";
}
//로그인한 회원번호와 작성자 회원번호 일치
BoardVO board = new BoardVO();
board.setBoard_num(board_num);
board.setTitle(request.getParameter("title"));
board.setContent(request.getParameter("content"));
board.setIp(request.getRemoteAddr());
board.setFilename(FileUtil.createFile(request, "filename"));
dao.updateBoard(board);
if(board.getFilename()!=null && !"".equals(board.getFilename())){
//새 파일로 교체할 때 원래 파일을 제거
FileUtil.removeFile(request, db_board.getFilename());
}
return "redirect:/board/detail.do?board_num="+board_num;
}
}
DeleteFileAction
package kr.board.action;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.codehaus.jackson.map.ObjectMapper;
import kr.board.dao.BoardDAO;
import kr.board.vo.BoardVO;
import kr.controller.Action;
import kr.util.FileUtil;
public class DeleteFileAction implements Action{
@Override
public String execute(HttpServletRequest request, HttpServletResponse response) throws Exception {
Map<String,String> mapAjax = new HashMap<String,String>();
HttpSession session = request.getSession();
Integer user_num = (Integer)session.getAttribute("user_num");
if(user_num == null) {//로그인X
mapAjax.put("result", "logout");
}else {//로그인O
//전송된 데이터 인코딩 타입 지정
request.setCharacterEncoding("utf-8");
//전송된 데이터 반환
int board_num = Integer.parseInt(request.getParameter("board_num"));
BoardDAO dao = BoardDAO.getInstance();
BoardVO db_board = dao.getBoard(board_num);
//로그인한 회원번호와 작성자 회원번호 일치 여부 체크
if(user_num!=db_board.getMem_num()) {
mapAjax.put("result", "wrongAccess");
}else {
dao.deleteFile(board_num);
//파일 삭제
FileUtil.removeFile(request, db_board.getFilename());
mapAjax.put("result", "success");
}
}
//JSON 데이터 생성
ObjectMapper mapper = new ObjectMapper();
String ajaxData = mapper.writeValueAsString(mapAjax);
request.setAttribute("ajaxData", ajaxData);
return "/WEB-INF/views/common/ajax_view.jsp";
}
}
DeleteAction
package kr.board.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import kr.board.dao.BoardDAO;
import kr.board.vo.BoardVO;
import kr.controller.Action;
import kr.util.FileUtil;
public class DeleteAction implements Action{
@Override
public String execute(HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpSession session = request.getSession();
Integer user_num = (Integer)session.getAttribute("user_num");
if(user_num == null) {
return "redirect:/member/login.do";
}
//로그인O
int board_num = Integer.parseInt(request.getParameter("board_num"));
BoardDAO dao = BoardDAO.getInstance();
BoardVO db_board = dao.getBoard(board_num);
//로그인한 회원번호와 작성자 회원 일치 여부 체크
if(user_num != db_board.getMem_num()) {//로그인한 회원번호와 작성자 회원 일치X
return "/WEB-INF/views/common/notice.jsp";
}
//로그인한 회원번호와 작성자 회원 일치
dao.deleteBoard(board_num);
//파일 삭제
FileUtil.removeFile(request, db_board.getFilename());
request.setAttribute("notice_msg", "글 삭제 완료");
request.setAttribute("notice_url", request.getContextPath()+"/board/list.do");
return "/WEB-INF/views/common/alert_view.jsp";
}
}
table.sql 내용추가 (좋아요) => 기존내용 밑에 추가명시
--좋아요
create table zboard_fav(
board_num number not null,
mem_num number not null,
constraint zboard_fav_fk1 foreign key (board_num) references zboard(board_num),
constraint zboard_fav_fk2 foreign key (mem_num) references zmember(mem_num)
);
'쌍용교육(JAVA) > MVC' 카테고리의 다른 글
쌍용교육 -JSP수업 65일차 - ch06_mvcPageMVC(10) (0) | 2024.05.23 |
---|---|
쌍용교육 -JSP수업 63~64일차 - ch06_mvcPageMVC(9) (0) | 2024.05.21 |
쌍용교육 -JSP수업 60~61일차 - ch06_mvcPageMVC(7) (0) | 2024.05.16 |
쌍용교육 -JSP수업 59일차 - ch06_mvcPageMVC(6) (0) | 2024.05.14 |
쌍용교육 -JSP수업 57~58일차 - ch06_mvcPageMVC(6) (0) | 2024.05.10 |