board_list.jsp에 게시글 추가 버튼을 만들자!

mapping.properties에서 insert.go 작성

view -> board_write.jsp 생성
=============================코드=============================
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div align = "center">
<hr width = "30%" color = "gray">
<h3>BOARD 테이블 게시판 글쓰기 폼 페이지</h3>
<hr width = "30%" color = "gray">
<br/><br/>
<form method = "post" action = "<%=request.getContextPath() %>/insert_ok.go">
<table border = "1" width = "350">
<tr>
<th>작성자</th>
<td>
<input type = "text" name = "writer">
</td>
</tr>
<tr>
<th>글 제목</th>
<td>
<input type = "text" name = "title">
</td>
</tr>
<tr>
<th>글내용</th>
<td>
<textarea rows="7" cols="25" name = "cont"></textarea>
</td>
</tr>
<tr>
<th>글 비밀번호</th>
<td>
<input type = "password" name = "pwd">
</td>
</tr>
<tr>
<td colspan = "2" align = "center">
<input type = "submit" value = "글쓰기">
<input type = "reset" value = "다시작성">
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
mapping.properties에서 insert_ok.go 작성

action 패키지에 BoardWriteOkAction 클래스 생성
=============================코드=============================
package com.board.action;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.board.model.BoardDAO;
import com.board.model.BoardDTO;
public class BoardWriteOkAction implements Action {
@Override
public ActionForward execute(HttpServletRequest request, HttpServletResponse response) throws IOException {
// 글쓰기 폼 페이지에서 넘어온 데이터들을 board 테이블에 저장하는 비지니스 로직
String board_writer = request.getParameter("writer").trim();
String board_title = request.getParameter("title").trim();
String board_cont = request.getParameter("cont").trim();
String board_pwd = request.getParameter("pwd").trim();
BoardDTO dto = new BoardDTO();
dto.setBoard_writer(board_writer);
dto.setBoard_title(board_title);
dto.setBoard_cont(board_cont);
dto.setBoard_pwd(board_pwd);
BoardDAO dao = BoardDAO.getInstance();
int check = dao.insertBoard(dto);
PrintWriter out = response.getWriter();
if(check > 0) {
out.println("<script>");
out.println("alert('게시글 추가 성공!')");
out.println("location.href='select.go'");
out.println("</script>");
}else {
out.println("<script>");
out.println("alert('게시글 추가 실패...')");
out.println("history.back()");
out.println("</script>");
}
return null;
}
}
BoardDAO에서 insertBoard() 생성
=============================코드=============================
// board 테이블에 게시글을 추가해주는 메서드
public int insertBoard(BoardDTO dto) {
int result = 0, count = 0;
try {
openConn();
sql = "select max(board_no) from board";
pstmt = con.prepareStatement(sql);
rs = pstmt.executeQuery();
if(rs.next()) {
count = rs.getInt(1) + 1;
}
sql = "insert into board values(?, ?, ?, ?, ?, default, sysdate, '')";
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, count);
pstmt.setString(2, dto.getBoard_writer());
pstmt.setString(3, dto.getBoard_title());
pstmt.setString(4, dto.getBoard_cont());
pstmt.setString(5, dto.getBoard_pwd());
result = pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeConn(rs, pstmt, con);
}
return result;
}
main.jsp에서 실행




추가 성공!
이제 상세정보를 조회할 수 있도록 만들어보자

mapping.properties 에서 content.go 작성

action패키지에 BoardContentAction 클래스 생성
=============================코드=============================
package com.board.action;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.board.model.BoardDAO;
import com.board.model.BoardDTO;
public class BoardContentAction implements Action {
@Override
public ActionForward execute(HttpServletRequest request, HttpServletResponse response) throws IOException {
// 상세내역
int board_no = Integer.parseInt(request.getParameter("no").trim());
int nowPage = Integer.parseInt( request.getParameter("page").trim());
BoardDAO dao = BoardDAO.getInstance();
BoardDTO content = dao.contentBoard(board_no);
BoardDAO에서 contentBoard() 메서드 생성
게시글을 클릭했을 때 +1되는 것도 함께 처리
=============================코드=============================
// 상세 정보
public BoardDTO contentBoard(int no) {
BoardDTO dto = null;
try {
openConn();
sql = "update board set board_hit = board_hit + 1 where board_no = ?";
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, no);
pstmt.executeUpdate();
sql = "select * from board where board_no = ?";
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, no);
rs = pstmt.executeQuery();
if(rs.next()) {
dto = new BoardDTO();
dto.setBoard_no(rs.getInt("board_no"));
dto.setBoard_writer(rs.getString("board_writer"));
dto.setBoard_title(rs.getString("board_title"));
dto.setBoard_cont(rs.getString("board_cont"));
dto.setBoard_pwd(rs.getString("board_pwd"));
dto.setBoard_hit(rs.getInt("board_hit"));
dto.setBoard_date(rs.getString("board_date"));
dto.setBoard_update(rs.getString("board_update"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeConn(rs, pstmt, con);
}
return dto;
}
다시 BoardContentAction 클래스로 가자
=============================코드=============================
package com.board.action;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.board.model.BoardDAO;
import com.board.model.BoardDTO;
public class BoardContentAction implements Action {
@Override
public ActionForward execute(HttpServletRequest request, HttpServletResponse response) throws IOException {
// 상세내역
int board_no = Integer.parseInt(request.getParameter("no").trim());
int nowPage = Integer.parseInt( request.getParameter("page").trim());
BoardDAO dao = BoardDAO.getInstance();
BoardDTO content = dao.contentBoard(board_no);
request.setAttribute("Content", content);
request.setAttribute("Page", nowPage);
ActionForward forward = new ActionForward();
forward.setRedirect(false);
forward.setPath("view/board_content.jsp");
return forward;
}
}
view -> board_content.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>Insert title here</title>
</head>
<body>
<div align = "center">
<c:set var = "cont" value = "${Content }" />
<hr width = "30%" color = "green">
<h3>${cont.getBoard_writer() } 상세 페이지</h3>
<hr width = "30%" color = "green">
<br/> <br/>
<table border = "1" align = "center" width = "350">
<c:if test="${!empty cont }">
<tr>
<th>글 No.</th>
<td>
${cont.getBoard_no() }
</td>
</tr>
<tr>
<th>조회수</th>
<td>
${cont.getBoard_hit() }
</td>
</tr>
<tr>
<th>작성자</th>
<td>
${cont.getBoard_writer() }
</td>
</tr>
<tr>
<th>글 제목</th>
<td>
${cont.getBoard_title() }
</td>
</tr>
<tr>
<th>글 내용</th>
<td>
<textarea rows="7" cols="30" readonly>${cont.getBoard_cont() }</textarea>
</td>
</tr>
<tr>
<th>글 비밀번호</th>
<td>
<c:forEach begin = "1" end = "${cont.getBoard_pwd().length() }">
*
</c:forEach>
</td>
</tr>
<tr>
<th>작성날짜</th>
<td>
${cont.getBoard_date() }
</td>
</tr>
<tr>
<c:if test = "${!empty cont.getBoard_update() }">
<th>수정날짜</th>
<td>
${cont.getBoard_update() }
</td>
</c:if>
</tr>
</c:if>
<c:if test="${empty cont }">
<tr>
<td colspan = '2' align = "center">
<h3>전체 회원 리스트가 없습니다...</h3>
</td>
</tr>
</c:if>
</table>
<br/><br/>
<input type = "button" value = "글 수정" onclick = "location.href='modify.go?no=${cont.getBoard_no()}&page=${Page }'">
<input type = "button" value = "글 삭제" onclick = "if(confirm('게시글을 정말 삭제하시겠습니까?')) {
location.href='delete.go?no=${cont.getBoard_no()}&page=${Page }'
}else { return; }">
<input type = "button" value = "게시글 목록" onclick = "location.href='select.go?page=${Page }'">
</div>
</body>
</html>

게시글 제목 '테팉' 클릭
