JSP day14
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))
댓글 삭제 버튼 클릭시)
댓글 삭제 결과)