본문 바로가기
개발 공부 Today I Learned

[국비 47일차 TIL] 댓글 수정버튼 눌렀을 때

by 개발자신입 2024. 1. 25.
반응형

 

 

 

detail.jsp

 

// 댓글수정 comment-btn 버튼 눌렀을 때 cno값, commentcontent값 가져오는 function 만들기

 

  // 이벤트 핸들러
  $(document).on('click', ".comment-btn", function(){
		
        // 데이터 추출
        let cno = $(this).prev().val(); // 댓글 번호
		let recomment = $('.commentcontent').val(); // 수정할 댓글 내용
	 	
        // Ajax 비동기 요청
		$.ajax({
			url : './recomment',   //주소
			type : 'post',          //get, post
			dataType : 'text',		//수신타입 json
			data : {'cno' : cno, 'comment' : recomment},   //보낼 값
			success : function(result){
                alert("통신 성공! : " + result);
            },
            error: function(error){ // 통신오류
                alert("문제 발생?!!???!?!?! 도대체 왜?!?!? " + error);
            }
        }); // end ajax
  });

 

 

Recomment.java

 

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
        // 파라미터 값을 받아와서 콘솔에 출력 (작동 확인)
        System.out.println(request.getParameter("cno"));
		System.out.println(request.getParameter("comment"));
		
		// 세션 확인
        HttpSession session = request.getSession();
		int result = 0;
        
        // 세션에서 "mid"속성이 존재하고, "cno"가 정수로 변환 가능하며, "comment"가 null이 아닌 경우
		if(session.getAttribute("mid") != null && Util.intCheck2(request.getParameter("cno")) 
				&& request.getParameter("comment") != null) {
			
            // 위의 조건이 만족된 경우 CommentDTO 객체 생성하고 "mid"값 설정
			CommentDTO dto = new CommentDTO();
			dto.setMid((String)session.getAttribute("mid")); 
			dto.setCno(Util.str2Int2(request.getParameter("cno"))); // 정수로 변환 
			dto.setComment(Util.addBR(request.getParameter("comment")));
			
			CommentDAO dao = new CommentDAO();
			result = dao.commentUpdate(dto);				
		}
		PrintWriter pw = response.getWriter();
		pw.print(result);
	}
}

 

 

CommentDAO.java

 

	public int commentUpdate(CommentDTO dto) {
		// 데이터베이스 연결 설정
        Connection con = db.getConnection();
		PreparedStatement pstmt = null;
		
        // 댓글 테이블에서 comment 컬럼 업데이트하는 sql문
        String sql = "UPDATE comment SET ccomment=? "
				+ "WHERE cno=? AND mno=(SELECT mno FROM member WHERE mid=?)";
		int result = 0;
		
		try {
			pstmt = con.prepareStatement(sql); // 객체 생성
			pstmt.setString(1, dto.getComment()); // 매개변수(댓글 내용) 설정
			pstmt.setInt(2, dto.getCno());
			pstmt.setString(3, dto.getMid());
			result = pstmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			close(null, pstmt, con);
		}		
		return result;
	}

}
반응형

댓글