위로
아래
글 작성 페이지 수정
답글은 페이지를 따로 만들지 않고 글 작성 페이지를 같이 쓴다.
답글을 누르면 제목 앞에 [답글]이 나오도록 한다.
우선 컨트롤러에 주소를 추가해준다.
switch(command) {
...
case "reply" : {
page = "view/BoardWriteForm.jsp";
break;
}
...
}
글 작성 페이지에 태그라이브러리를 넣어준다
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
글 작성 페이지 로딩 후,
bno가 이미 있으면 알아서 답글로 분류,
dto 정보가 아예 없으면 새글로 분류한다.
<tr>
<th>제목</th>
<c:choose>
<c:when test="${dto.bno==0}">
<td><input type="text" name="subject" class="chk" title="제목"></td>
</c:when>
<c:when test="${dto!=null}">
<td><input type="text" name="subject" class="chk" title="제목" value="[답글]"></td>
</c:when>
</c:choose>
</tr>
답글로 분류된 경우엔 제목 앞에 [답글] 글씨를 미리 써놓고,
새글로 분류된 경우엔 원래처럼 빈 칸으로 설정한다.
답글로 분류된 경우 제목에 [답글]이 쓰여 있는 걸 볼 수 있다.
답글 제목에 이전 제목 붙이기
답글 페이지에 파라미터를 넘겨줄 글 보기 페이지를 수정한다.
form 태그 맨 밑에 hidden으로 subject를 넣는다.
<form>
<input type="hidden" name="bno" value="${dto.bno}">
<input type="hidden" name="bref" value="${dto.bref}">
<input type="hidden" name="bstep" value="${dto.bstep}">
<input type="hidden" name="blevel" value="${dto.blevel}">
<input type="hidden" name="subject" value="${dto.subject}">
</form>
컨트롤러에서 주소 이동 전, DTO 객체를 생성해 제목을 포함한 여러 요소의 파라미터를 저장한다.
case "reply" : {
BoardDTO dto = new BoardDTO();
dto.setBno(Integer.parseInt(request.getParameter("bno")));
dto.setBref(Integer.parseInt(request.getParameter("bref")));
dto.setBstep(Integer.parseInt(request.getParameter("bstep")));
dto.setBlevel(Integer.parseInt(request.getParameter("blevel")));
dto.setSubject(request.getParameter("subject"));
request.setAttribute("dto", dto);
page = "view/BoardWriteForm.jsp";
break;
}
input 태그의 value 값에 저장된 답글 옆에 가져온 subject 값을 넣어준다.
<c:when test="${dto!=null}">
<td><input type="text" name="subject" class="chk" title="제목" value="[답글] ${dto.subject}"></td>
</c:when>
답글을 누르면 이전 제목도 같이 써져 있는 것을 확인할 수 있다.
전체 코드
더보기
<!-- BoardWriteForm.jsp -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri = "http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri = "http://java.sun.com/jsp/jstl/functions" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>글 작성</title>
<link rel="stylesheet" type="text/css" href="css/Form.css">
<script src="jquery/jquery-3.7.0.min.js"></script>
<script type="text/javascript">
$().ready(function(){
$("#submit11").on("click",function(){
if(validate()){
$("form[name=form1]").submit();
}
})
})
function validate(){
let flen = $("form[name=form1] .chk").length;
for(i=0;i<flen;i++){
if($(".chk").eq(i).val()=="" ||
$(".chk").eq(i).val()==null ||
$(".chk").eq(i).val().trim()==""){
alert($(".chk").eq(i).attr("title") + "은 꼭 입력해주세요.");
$(".chk").focus();
return false;
}
}
return true;
}
</script>
</head>
<body>
<form name="form1" method="post" action="jb?command=writeAction">
<table>
<tr><td colspan="2"><h3>게시글 쓰기</h3></td></tr>
<tr>
<th>제목${dto.subject}</th>
<c:choose>
<c:when test="${dto.bno==0}">
<td><input type="text" name="subject" class="chk" title="제목"></td>
</c:when>
<c:when test="${dto!=null}">
<td><input type="text" name="subject" class="chk" title="제목" value="[답글] ${dto.subject}"></td>
</c:when>
</c:choose>
</tr>
<tr>
<th>작성자</th>
<td><input type="text" name="writer" class="chk" title="작성자"></td>
</tr>
<tr>
<th>글 내용</th>
<td><textarea name="content" class="chk" title="글내용"></textarea></td>
</tr>
<tr>
<th>비밀번호</th>
<td><input type="password" name="passwd" class="chk" title="비밀번호"></td>
</tr>
<tr>
<td colspan="2">
<input class="btn" type="button" value="글 저장" id="submit11">
<input class="btn" type="button" value="글 목록" onclick="location.href='jb?command=list'">
</td>
</tr>
</table>
</form>
</body>
</html>
<!-- BoardContent.jsp -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${dto.subject}</title>
<link rel="stylesheet" type="text/css" href="css/Form.css">
<script src="jquery/jquery-3.7.0.min.js"></script>
<script type="text/javascript">
$().ready(function(){
let f = $("form[name=form1]");
$("#re").on("click",function(){
if(checkpw()){
f.attr("action","jb?command=update");
f.submit();
}
})
$("#de").on("click",function(){
if(checkpw()){
if(confirm("정말 삭제하시겠습니까?")){
f.attr("action","jb?command=delete");
f.submit();
}
}
})
$("#reply").on("click",function(){
f.attr("action","jb?command=reply");
f.submit();
})
})
function checkpw(){
let user_passwd = prompt("비밀번호를 입력하시오.");
let com_passwd = ${dto.passwd};
if(user_passwd == com_passwd) {
return true;
} else {
alert("비밀번호가 틀렸습니다.");
return false;
}
}
</script>
</head>
<body>
<form name="form1" method="post" action="">
<table>
<tr><td colspan="2"><h3>${dto.subject}</h3></td></tr>
<tr>
<th>작성자</th>
<td><input type="text" name="writer" title="작성자" value="${dto.writer}" readonly="readonly"></td>
</tr>
<tr>
<th>글 내용</th>
<td><textarea name="content" title="글내용" readonly="readonly">${dto.content}</textarea></td>
</tr>
<tr>
<th>비밀번호</th>
<td><input type="password" name="passwd" readonly="readonly" title="비밀번호" value = "${dto.passwd}"></td>
</tr>
<tr>
<td colspan="2">
<input class="btn" type="button" value="글 수정" id="re">
<input class="btn" type="button" value="글 삭제" id="de">
<input class="btn" type="button" value="답글" id="reply">
<input class="btn" type="button" value="글 목록" onclick="location.href='jb?command=list'">
</td>
</tr>
</table>
<input type="hidden" name="bno" value="${dto.bno}">
<input type="hidden" name="bref" value="${dto.bref}">
<input type="hidden" name="bstep" value="${dto.bstep}">
<input type="hidden" name="blevel" value="${dto.blevel}">
<input type="hidden" name="subject" value="${dto.subject}">
</form>
</body>
</html>
//BoardController
package controller;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import bean.BoardDTO;
/**
* Servlet implementation class BoardController
*/
@WebServlet("/jb")
public class BoardController extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public BoardController() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String command = null;
String page = null;
if(request.getParameter("command")==null)
command = "list";
else
command = request.getParameter("command");
switch(command) {
case "list" : {
page = "action/BoardListAction.jsp";
break;
}
case "writeForm" : {
page = "view/BoardWriteForm.jsp";
break;
}
case "writeAction" : {
page = "action/BoardWriteAction.jsp";
break;
}
case "content" : {
page = "action/BoardContentAction.jsp";
break;
}
case "update" : {
page = "action/BoardUpdateAction.jsp";
break;
}
case "updateProc" : {
page = "action/BoardUpdateProc.jsp";
break;
}
case "delete" : {
page = "action/BoardDeleteAction.jsp";
break;
}
case "reply" : {
BoardDTO dto = new BoardDTO();
dto.setBno(Integer.parseInt(request.getParameter("bno")));
dto.setBref(Integer.parseInt(request.getParameter("bref")));
dto.setBstep(Integer.parseInt(request.getParameter("bstep")));
dto.setBlevel(Integer.parseInt(request.getParameter("blevel")));
dto.setSubject(request.getParameter("subject"));
request.setAttribute("dto", dto);
page = "view/BoardWriteForm.jsp";
break;
}
default : {
page = "view/Error.jsp";
break;
}
}
RequestDispatcher dp = request.getRequestDispatcher(page);
dp.forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}