팀프로젝트/SpringBoot

스프링부트 팀플) 20240318_수정/삭제 비밀번호 확인 + 삭제 경고창 + 정렬

일일일코_장민기 2024. 3. 18. 17:52
728x90

https://codingbroker.tistory.com/42

 

[HTML, JAVASCRIPT] 브라우저에서 확인창, 경고창 띄우는 법 - confirm

confirm 브라우저 창에서 확인창, 경고창 띄우기 구문 result = window.confirm(message); message 확인창에 띄울 문구 result 사용자가 '확인'을 누르면 true / '취소'를 누르면 false 예시 버튼을 클릭하면 배경화

codingbroker.tistory.com

 

 

 

 

OㅡO

 

글 수정 버튼 클릭

 

 

ajax를 통해 비밀번호 오류 확인 출력  - 취소를 누르면 이전 화면으로 돌아간다.
올바르게 입력하면 글 수정 에디터로 이동
수정 종료

 

글 삭제 버튼 클릭
마찬가지로 틀리면 ajax 출력  - 취소를 누르면 이전 화면으로 돌아간다.
맞게 입려갛면 경고창 출력 - 취소를 누르면 이전 화면으로 돌아간다.

 

삭제 종료

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

 

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>게시판 글 삭제 확인</title>

 

<script type="text/javascript" src="//code.jquery.com/jquery-1.11.0.min.js"></script>

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">

 

</head>

<body>

 

<form id="board" action="<c:url value='/deletePost'/>" method="post">

<input type="hidden" id="boardNum" name="boardNum" value="${dto.boardNum}">

글 삭제를 위해 비밀번호를 입력해주세요.<br>

<input type="text" id="password" name="password">

<div id="falsePW"></div>

 

<input id="ajaxCheck" type="button" value="제출">

<input id="goBack" type="button" value="취소">

</form>

 

<script type="text/javascript">

 

$(function(){

 

$("#ajaxCheck").on("click", function(){

var boardNum = $("#boardNum").val()

var password = $("#password").val()

 

$.ajax({

 

type: "POST",

url: "<c:url value='/checkPostPW'/>",

data: {

boardNum: boardNum,

password: password,

},

success: function(response) {

if(response == "yes"){

if(window.confirm("정말로 삭제하시겠습니까?\n삭제된 게시물은 복구할 수 없습니다.")){

$("#board")[0].submit();

} else (

window.history.go(-1)

)

} else {

$("#falsePW").text("비밀번호가 다릅니다.");

}

},

error: function(error) {

console.error("추천 기능 에러:", error);

}

})

 

})

 

$("#goBack").on("click", function(){

window.history.go(-1)

})

})

 

</script>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"

integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p"

crossorigin="anonymous"></script>

 

</body>

</html>

- delete 페이지

 

 

 

 

//글 수정 / 글 삭제 시 비밀번호 확인

@PostMapping("/checkPostPW")

public String checkPostPW(int boardNum, String password) {

DebugBoardDTO dto = dServ.viewDBoardContent(boardNum);

if(dto.getPassword().equals(password)) {

return "yes";

} else {

return "no";

}

}

ajax 출력

 

 

 

 

package com.moonBam.controller.member;

import java.util.Date;
import java.util.HashMap;
import java.util.List;

import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.servlet.ModelAndView;

import com.moonBam.dto.DebugBoardDTO;
import com.moonBam.service.member.DebugBoardService;

@Controller
public class DebugBoardController {

	@Autowired
	DebugBoardService serv;
	
	//게시판 글 목록 보기
	@GetMapping("/viewDBoardList")
	public ModelAndView viewDBoardList() {
		List<DebugBoardDTO> list = serv.viewDBoardList();
		ModelAndView mav = new ModelAndView();
			mav.addObject("list", list);
			mav.setViewName("member/Test/viewDBoardList");
		return mav;
	}
	
	//게시판 글 쓰기 화면으로 이동
	@GetMapping("/newPost")
	public ModelAndView newPost() {
		ModelAndView mav = new ModelAndView();
			mav.setViewName("member/Test/newPost");
		return mav;
	}
	
	//게시판 글 등록(PRG 패턴을 통해 중복 등록 방지)
	@PostMapping("/insertPost")
	public ModelAndView insertPost(DebugBoardDTO dto) {
		System.out.println(dto);
		
		// 현재 날짜와 시간을 dto에 입력
	    Date now = new Date();
	    dto.setPostDate(now);
		
		serv.insertPost(dto);
		List<DebugBoardDTO> list = serv.viewDBoardList();
		ModelAndView mav = new ModelAndView();
			mav.addObject("list", list);
			mav.setViewName("redirect:/viewDBoardList");
		return mav;
	}
	
	//게시판 글 보기
	@GetMapping("/viewDBoardContent/{bNum}")
	public ModelAndView viewDBoardContent(@PathVariable("bNum") int boardNum) {
		
		DebugBoardDTO dto = serv.viewDBoardContent(boardNum);

		//게시판 글 조회수 올리기
		serv.updateDBoardViewCount(boardNum);					//조회수 증가 안 됨  - 이유 모름

		System.out.println(dto);
		
		ModelAndView mav = new ModelAndView();
		mav.addObject("dto", dto);
		mav.setViewName("member/Test/viewDBoardContent");
		return mav;
	}
	
	//게시판 글 수정하기	전 비밀번호 확인
	@GetMapping("/checkUpdatePost/{bNum}")
	public ModelAndView checkUpdatePost(@PathVariable("bNum") int boardNum) {
		DebugBoardDTO dto = serv.viewDBoardContent(boardNum);
	    ModelAndView mav = new ModelAndView("member/Test/checkUpdatePost");
	    	mav.addObject("dto", dto);
	    return mav;
	}
		
	//게시판 글 수정화면으로 이동
	@PostMapping("/checkUpdatePost/modifyPost")
	public ModelAndView modifyPost(int boardNum) {
		DebugBoardDTO dto = serv.viewDBoardContent(boardNum);
		ModelAndView mav = new ModelAndView();
		mav.addObject("dto", dto);
		mav.setViewName("member/Test/modifyPost");
	return mav;
	}

	//게시판 글 수정하기
	@PostMapping("/checkUpdatePost/updateDBoard")
	public String updateDBoard(DebugBoardDTO dto) {

		// 현재 날짜와 시간을 dto에 입력
	    Date now = new Date();
	    dto.setEdittedDate(now);
	    serv.updateDBoard(dto);
	    return "redirect:/viewDBoardContent/"+dto.getBoardNum();
	}
	
	//게시판 글 삭제 전 비밀번호 확인
	@GetMapping("/checkDeletePost/{bNum}")
	public ModelAndView checkDeletePost(@PathVariable("bNum") int boardNum) {
		DebugBoardDTO dto = serv.viewDBoardContent(boardNum);
		ModelAndView mav = new ModelAndView("member/Test/checkDeletePost");
	    mav.addObject("dto", dto);
	    return mav;
	}
		
	//게시판 글 삭제하기	
	@PostMapping("/deletePost")
	public ModelAndView deletePost(String nickname, int boardNum) {
		serv.deleteDBoard(boardNum);
		return viewDBoardList();
	}
	
	
}

컨트롤러는 사실상 갈아엎었다...

 

 

 

 

 

정렬은 마지막에 20분만에 호다닥 만들었다...

 

 

-추가 예정 기능-
부트스트랩을 이용한 글 목록 페이지네이션
게시판 + 세부 보기 꾸미기
세부 보기에서 이전글 / 다음글 보이기
게시판 입장 시 일정시간 유지되는 무작위 번호의 세션 생성 - 그 세션일 때 추천을 누르면 한동안 그 상태 저장
글 검색창