BoardController.java (조건문 추가)
else if(com.equals("/write_view.do")) {
/*http://localhost:8282/servlet_yjy_board/write_view.do*/
viewPage = "write_view.jsp";
} else if(com.equals("/write.do")) {
/*http://localhost:8282/servlet_yjy_board/write.do*/
command = new BWriteCommand();
command.execute(request, response);
viewPage = "list.do";
}
BWriteCommand.java
package edu.global.board.command;
import java.io.IOException;
import java.util.List;
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 edu.global.board.dao.BDao;
import edu.global.board.vo.BoardVO;
public class BWriteCommand implements BCommand {
@Override
public void execute(HttpServletRequest request, HttpServletResponse response) {
String bname = request.getParameter("bname");
String btitle = request.getParameter("btitle");
String bcontent = request.getParameter("bcontent");
BDao dao = new BDao();
dao.write(bname, btitle, bcontent);
}
}
BDao.java (함수 추가)
/* 5. Content Write */
public int write(String bname, String btitle, String bcontent) {
Connection connection = null;
PreparedStatement preparedStatement = null;
int rn = 0;
try {
String query = "insert into mvc_board (bid, bname, btitle, bcontent, bhit, bgroup, bstep, bindent) values (mvc_board_seq.nextval, ?, ?, ?, 0, mvc_board_seq.currval, 0, 0 )";
connection = dataSource.getConnection();
preparedStatement = connection.prepareStatement(query);
preparedStatement.setString(1, bname);
preparedStatement.setString(2, btitle);
preparedStatement.setString(3, bcontent);
rn = preparedStatement.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (preparedStatement != null) {
preparedStatement.close();
}
if (connection != null) {
connection.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return rn;
}
BoardController.java (조건문 추가)
else if(com.equals("/reply_view.do")) {
/*http://localhost:8282/servlet_yjy_board/reply_view.do?bid=19*/
command = new BReplyViewCommand();
command.execute(request, response);
viewPage = "reply_view.jsp";
}
BReplyViewCommand.java
package edu.global.board.command;
import java.io.IOException;
import java.util.List;
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 edu.global.board.dao.BDao;
import edu.global.board.vo.BoardVO;
public class BReplyViewCommand implements BCommand {
@Override
public void execute(HttpServletRequest request, HttpServletResponse response) {
String bid = request.getParameter("bid");
BDao dao = new BDao();
BoardVO vo = dao.replyView(bid);
request.setAttribute("reply_view", vo);
}
}
}
BDao.java (함수 추가)
/* 6. Reply View */
public BoardVO replyView(String strId) {
BoardVO board = null;
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
String query = "select * from mvc_board where bid = ?";
connection = dataSource.getConnection();
preparedStatement = connection.prepareStatement(query);
preparedStatement.setInt(1, Integer.valueOf(strId));
resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
int bid = resultSet.getInt("bid");
String bname = resultSet.getString("bname");
String btitle = resultSet.getString("btitle");
String bcontent = resultSet.getString("bcontent");
Timestamp bdate = resultSet.getTimestamp("bdate");
int bhit = resultSet.getInt("bhit");
int bgroup = resultSet.getInt("bgroup");
int bstep = resultSet.getInt("bstep");
int bindent = resultSet.getInt("bindent");
board = new BoardVO(bid, bname, btitle, bcontent, bdate, bhit, bgroup, bstep, bindent);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (resultSet != null)
resultSet.close();
if (preparedStatement != null)
preparedStatement.close();
if (connection != null)
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return board;
}
reply_view.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>답변</title>
</head>
<body>
<table width="500" cellpadding="0" cellspacing="0" border="1">
<form action="reply.do" method="post">
<input type="hidden" name="bid" value="${reply_view.bid}"> <input
type="hidden" name="bgroup" value="${reply_view.bgroup}"> <input
type="hidden" name="bstep" value="${reply_view.bstep}"> <input
type="hidden" name="bindent" value="${reply_view.bindent}">
<tr>
<td>번호</td>
<td>${reply_view.bid}</td>
</tr>
<tr>
<td>히트</td>
<td>${reply_view.bhit}</td>
</tr>
<tr>
<td>이름</td>
<td><input type="text" name="bname" value="${reply_view.bname}"></td>
</tr>
<tr>
<td>제목</td>
<td><input type="text" name="btitle"
value="${reply_view.btitle}"></td>
</tr>
<tr>
<td>내용</td>
<td><textarea rows="10" name="bcontent">${reply_view.bcontent}</textarea></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="답변"> <a
href="list.do">목록</a></td>
</tr>
</form>
</table>
</body>
</html>
BoardController.java (조건문 추가)
else if(com.equals("/reply.do")) {
/*http://localhost:8282/servlet_yjy_board/reply.do*/
command = new BReplyCommand();
command.execute(request, response);
viewPage = "list.do";
}
BReplyCommand.java
package edu.global.board.command;
import java.io.IOException;
import java.util.List;
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 edu.global.board.dao.BDao;
import edu.global.board.vo.BoardVO;
public class BReplyCommand implements BCommand {
@Override
public void execute(HttpServletRequest request, HttpServletResponse response) {
String bid = request.getParameter("bid");
String bname = request.getParameter("bname");
String btitle = request.getParameter("btitle");
String bcontent = request.getParameter("bcontent");
String bgroup = request.getParameter("bgroup");
String bstep = request.getParameter("bstep");
String bindent = request.getParameter("bindent");
BDao dao = new BDao();
dao.reply(bid, bname, btitle, bcontent, bgroup, bstep, bindent);
}
}
BDao.java (함수 추가)
/* 댓글 창 관련 함수 */
public int replyShape(String strGroup, String strStep) {
Connection connection = null;
PreparedStatement preparedStatement = null;
int rn = 0;
try {
String query = "update mvc_board set bstep = bstep + 1 where bgroup = ? and bstep > ?";
/* bgroup 안에 해당하는 댓글이면서, bstep이 해당하는 곳보다 클 때 step을 하나씩 증가시킨다. */
connection = dataSource.getConnection();
preparedStatement = connection.prepareStatement(query);
preparedStatement.setString(1, strGroup);
preparedStatement.setString(2, strStep);
rn = preparedStatement.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (preparedStatement != null) {
preparedStatement.close();
}
if (connection != null) {
connection.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return rn;
}
/* 7. Reply */
public int reply(String bid, String bname, String btitle, String bcontent, String bgroup, String bstep,
String bindent) {
Connection connection = null;
PreparedStatement preparedStatement = null;
int rn = 0;
replyShape(bgroup, bstep); // step을 +1하기
try {
String query = "insert into mvc_board (bid, bname, btitle, bcontent, bgroup, bstep, bindent) values (mvc_board_seq.nextval, ?, ?, ?, ?, ?, ?)";
connection = dataSource.getConnection();
preparedStatement = connection.prepareStatement(query);
preparedStatement.setString(1, bname);
preparedStatement.setString(2, btitle);
preparedStatement.setString(3, bcontent);
preparedStatement.setInt(4, Integer.parseInt(bgroup));
preparedStatement.setInt(5, Integer.parseInt(bstep) + 1);
preparedStatement.setInt(6, Integer.parseInt(bindent) + 1);
rn = preparedStatement.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (preparedStatement != null)
preparedStatement.close();
if (connection != null)
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return rn;
}
String query = "select * from mvc_board order by bgroup desc, bstep asc";
list.jsp (댓글 부분 html 수정)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>게시판 리스트</title>
</head>
<body>
<table width="500" cellpadding="0" cellspacing="0" border="1">
<tr>
<td>번호</td>
<td>이름</td>
<td>제목</td>
<td>날짜</td>
<td>히트</td>
</tr>
<c:forEach var="board" items="${boards}">
<!-- request.setAttribute에 맞춰서 쓴다 -->
<tr>
<td>${board.bid}</td>
<td>${board.bname}</td>
<td><c:forEach begin="1" end="${board.bindent}">[Re]</c:forEach> <a
href="content_view.do?bid=${board.bid}">${board.btitle}</a></td>
<td>${board.bdate}</td>
<td>${board.bhit}</td>
</tr>
</c:forEach>
<tr>
<td colspan="5"><a href="write_view.do">글작성</a></td>
</tr>
</table>
</body>
</html>