1 분 소요

JSP로 게시판 만들기(4)


이번 시간에는 글 내용 상세보기 페이지에서 댓글을 추가하고 삭제하는 기능을 구현해보자.

reply_ok.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="com.koreait.db.Dbconn"%>
<%
	request.setCharacterEncoding("UTF-8");
	String userid = (String)session.getAttribute("userid");
	if(userid == null){
%>
<script>
	alert('로그인 후 이용하세요');
	location.href='../login.jsp';
</script> 
<%		
	}else{
		
		String b_idx = request.getParameter("b_idx");
		String r_content = request.getParameter("r_content");
		
		Connection conn = null;
		PreparedStatement pstmt = null;
				
		String sql = "";
		
		try{
			conn = Dbconn.getConnection();
			if(conn != null){
				sql = "insert into tb_reply (r_userid, r_content, r_boardidx) values (?, ?, ?);";
				pstmt = conn.prepareStatement(sql);
				pstmt.setString(1, userid);
				pstmt.setString(2, r_content);
				pstmt.setString(3, b_idx);
				pstmt.executeUpdate();	
			}
		}catch (Exception e) {
			e.printStackTrace();
		}
%>
	<script>
		location.href='./view.jsp?b_idx=<%=b_idx%>';
	</script> 
<%	
	}
%>

지난 시간 view.jsp에서 글 인덱스 번호와 댓글 내용을 form 태그의 post방식으로 reply_ok.jsp에 보내주게되고 reply_ok.jsp에서는 작성자(userid), 댓글내용, 글 인덱스 번호와 함께 댓글 테이블에 데이터를 추가하게된다. 이후 등록 후 글 상세보기로 이동한다.


이제 댓글 삭제를 확인해보자.

view.jsp 일부

<% 
		if(r_userid.equals(userid)){
%>		
			<input type="button" value="삭제" onclick="replyDelete(<%=r_idx%>)">
<% 
		}
%>	

댓글 삭제는 저번시간 view.jsp에서 설명한 것처럼 현재 로그인하고있는 userid와 댓글을 작성한 사람의 이름이 같으면 삭제 버튼이 도출되게 된다.


이때 댓글 색제 버튼을 클릭시

function replyDelete(r_idx){
    const yn = confirm('삭제하시겠습니까?');

    if(yn){
        location.href="./reply_del_ok.jsp?r_idx="+r_idx+"&b_idx=<%=b_idx%>";
    }
}

GET 방식으로 URL에 댓글의 인덱스번호와 글번호를 담고 reply_del_ok.jsp로 이동한다.


reply_del_ok.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="com.koreait.db.Dbconn"%>
<%
	String userid = (String)session.getAttribute("userid");
	if(userid == null){
%>
	<script>
	alert('로그인 후 이용하세요');
	location.href='../login.jsp';
	</script>
<%			
	}else{
		
		String r_idx = request.getParameter("r_idx");
		String b_idx = request.getParameter("b_idx");
		
		Connection conn = null;
		PreparedStatement pstmt = null;

		String sql = "";
		
		try{
			conn = Dbconn.getConnection();
			if(conn != null){
				sql = "delete from tb_reply where r_idx=?";
				pstmt = conn.prepareStatement(sql);
				pstmt.setString(1, r_idx);
				pstmt.executeUpdate();
			}
		}catch (Exception e) {
			e.printStackTrace();
		}
	
%>
	<script>
		alert('댓글이 삭제되었습니다.');
		location.href='./view.jsp?b_idx=<%=b_idx%>';
	</script>
<%
}
%>

이 페이지에서는 글번호와 댓글번호를 request.getParameter로 받아 댓글번호와 맞는 데이터를 삭제(delete)하고 가져온 글번호를 이용하여 다시 글 상세보기페이지(view.jsp)로 이동한다.

현재 로그인 유저(banana))
jsp14_1

댓글 삭제 버튼 클릭시)
jsp14_2

댓글 삭제 결과)
jsp14_3

태그:

카테고리:

업데이트: