46일차 JSP [ 게시판 만들기 ]
DB설계 -> 자바빈 생성 -> server.xml에서 DBCP 환경설정 -> DAO클래스에 DB 연결 -> JSP 파일 폼 생성 (BoardForm.jsp) -> 폼에 입력한 값을 BoardWriterForm.jsp서버에 값 넘기기 (=폼에 쓴 내용을 자바빈즈에 저장하고 디비애도 삽입을 해야함) ->
ref=글 re_step=대댓글 re_level=최신대댓글 /
ref는 1은 가장 기존글 다음글2 그다음글3 ...
re_step은 원글은1 댓글은2 대댓글은3 대대댓글은4 ...
re_level을 일단 re_step이랑 똑같이 쓰고 최신꺼 설정할때 기존댓글에 +1을 더해줌
번호 제목 ref re_step re_level
1 배고파 1 1 1
2 공부한다 2 1 1
3 [re]나도 배고파 1 2 3
4 [re]놀러가고싶은데 1 2 2
---------------------------------------------------------------
2 공부한다 2 1 1 -> 원글중 ref가 가장 큰 값이 가장 최신글 ref같으면 (댓글먼저x) 원글먼저
1 배고파 1 1 1
4 [re]놀러가고싶은데 1 2 2 -> 나도배고파보다 최신댓글
3 [re]나도 배고파 1 2 3
번호 제목 ref re_step re_level
1 파묘보고싶다 1 1 1
2 [re]난 파묘봄 1 2 2 -> 파묘보고싶다의 댓글
3 [re]재밌었어? 1 3 3 -> 난 파묘봄의 대댓글
---------------------------------------------------------------------
1 파묘보고싶다 1 1 1
4 [re]난 파묘못봤어 1 2 2 -> 파묘보고싶다의 난 파묘봄보다 최신 댓글 !! 그래서 순서가 바뀜
최신댓글이 re_level 2번으로 바뀌고 나머진 오름차순으로 밀림
2 [re]난 파묘봄 1 2 3 -> 파묘보고싶다의 댓글
3 [re]재밌었어? 1 3 4 -> 난 파묘봄의 대댓글
1) DB 설계 -> board table 생성
reg_date - 등록 날짜
ref - 답글이라는 뜻 게시판 만들 때 사용 됨 re_step 대댓글 , re_level 대댓글도 댓글과 관련 된 것 원글에다한건지 ...
readcount - 조회수
content - 게시판 내용
create table board(
num int primary key auto_increment,
writer varchar(20),
email varchar(20),
subject varchar(20),
password varchar(10),
reg_date date,
ref int,
re_step int,
re_level int,
readcount int,
content varchar(500));
2) Bean package 생성 -> BoardBean 클래스 생성 -> 필드 선언 ( date는 String으로 ) -> Getter & Setter 생성
package bean;
public class BoardBean {
private int num;
private String writer;
private String email;
private String subject;
private String password;
private String reg_date;
private int ref;
private int re_step;
private int re_level;
private int readcount;
private String content;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getWriter() {
return writer;
}
public void setWriter(String writer) {
this.writer = writer;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getReg_date() {
return reg_date;
}
public void setReg_date(String reg_date) {
this.reg_date = reg_date;
}
public int getRef() {
return ref;
}
public void setRef(int ref) {
this.ref = ref;
}
public int getRe_step() {
return re_step;
}
public void setRe_step(int re_step) {
this.re_step = re_step;
}
public int getRe_level() {
return re_level;
}
public void setRe_level(int re_level) {
this.re_level = re_level;
}
public int getReadcount() {
return readcount;
}
public void setReadcount(int readcount) {
this.readcount = readcount;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
3) 이 상태에서 BoardJSP project File을 Run 하면 오류가 뜨지만 Servers File에 server.xml에 BoardJSP에 대한 서버가 저장 됨
밑에 코드에서 프로젝트명, DB 정보 수정 후 server.xml에 DBCP 환경 설정
<Context docBase="BoardJSP" path="/BoardJSP" reloadable="true" source="org.eclipse.jst.jee.server:BoardJSP">
<Resource auth="Container" driverClassName="com.mysql.cj.jdbc.Driver"
name="jdbc/pool" password="00000000" type="javax.sql.DataSource"
url="jdbc:mysql://localhost:3306/yujung" username="root"/>
</Context>
4) bean package에 BoardDAO 클래스 생성 -> DB연결 작업 (DBCP)
lookup뒤에 들어오는 name 값은 sever.xml에 name 값이랑 똑같음 !! => "java:comp/env/jdbc/pool"
package bean;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class BoardDAO {
Connection con;
PreparedStatement pstmt;
ResultSet rs;
public void getCon() { // DB에 연결하는 작업 (DBCP)
try {
Context init = new InitialContext();
DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/pool");
con = ds.getConnection();
} catch (Exception e) {
e.printStackTrace();
}
}
}
5) JSP 파일에 폼 생성 (이때 JSP 파일은 항상 webapp에 위치해야 함) -> BoardForm.jsp 파일 생성
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<form action="BoardWriteForm.jsp" method="post">
<table width="600" border="1"> <!-- table width가 600이므로 tr&td width도 600안으로 맞춰줘야 함 -->
<tr height="40">
<td align="center" width="150">작성자</td>
<td width="450" align="center"><input type="text" name="writer" size="50"></td>
</tr>
<tr height="40">
<td align="center" width="150">제목</td>
<td width="450" align="center"><input type="text" name="subject" size="50"></td>
</tr>
<tr height="40">
<td align="center" width="150">이메일</td>
<td width="450" align="center"><input type="email" name="email" size="50"></td>
</tr>
<tr height="40">
<td align="center" width="150">비밀번호</td>
<td width="450" align="center"><input type="password" name="password" size="50"></td>
</tr>
<tr height="40">
<td align="center" width="150">글내용</td>
<td width="450" align="center"><textarea rows="10" cols="60" name="content"></textarea></td>
</tr>
<tr height="40">
<td align="center" colspan="2">
<input type="submit" value="글쓰기">
<input type="reset" value="재작성">
<button onclick="location.href='BoardList.jsp'">전체글보기</button>
</td>
</tr>
</table>
</form>
</body>
</html>
6) BoardWriteForm.jsp JSP 파일 생성 -> 폼에서 넘어온 정보 서버에 저장 -> 폼에 쓴 내용을 자바빈즈에 저장하고 디비에도 삽입
<%@page import="bean.BoardDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<%
request.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="boardbean" class="bean.BoardBean">
<jsp:setProperty property="*" name="boardbean" />
</jsp:useBean>
<%
BoardDAO bdao=new BoardDAO();
bdao.insertBoard(boardbean);
response.sendRedirect("BoardList.jsp"); //글쓰기 한 후 바로 글쓴 목록 보기 위해
%>
</body>
</html>
7) BoardDAO.java 파일에 insertBoard 쿼리문 작성 하기
num은 고정값이여서 바인드변수(=?)로 설정하지 않아도 됨. date는 현재날짜 now()함수 사용, 조회수는 0으로 설정
bean으로부터 getWriter값 꺼내서 table에 insert
댓글을 나타내는 ref, re_step, re_level은 int로 설정하고 변수로 가져옴
댓글은 보통 최신댓글이 맨위에 먼저 뜸 ! 그걸 가져오기 위한 코드 !!
String rsql="select max(ref) from board"; //가장 최신댓글을 찾아내는 쿼리문
pstmt=con.prepareStatement(rsql);
rs=pstmt.executeQuery();
if(rs.next()) {
ref=rs.getInt(1)+1;
}
package bean;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class BoardDAO {
Connection con;
PreparedStatement pstmt;
ResultSet rs;
public void getCon() { // DB에 연결하는 작업 (DBCP)
try {
Context init = new InitialContext();
DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/pool");
con = ds.getConnection();
} catch (Exception e) {
e.printStackTrace();
}
}
public void insertBoard(BoardBean bean) {
getCon();
int ref=0;
int re_step=1;
int re_level=1;
try {
String rsql="select max(ref) from board"; //가장 최신댓글을 찾아내는 쿼리문
pstmt=con.prepareStatement(rsql);
rs=pstmt.executeQuery();
if(rs.next()) {
ref=rs.getInt(1)+1;
}
// num은 고정값이여서 바인드변수(=?)로 설정하지 않아도 됨 , date는 현재날짜 now()로 설정 , 조회수는 0으로 설정
String sql = "insert into board values(num,?,?,?,?,now(),?,?,?,0,?)";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, bean.getWriter()); // bean으로부터 writer값 꺼내서 table에 insert
pstmt.setString(2, bean.getEmail());
pstmt.setString(3, bean.getSubject());
pstmt.setString(4, bean.getPassword());
pstmt.setInt(5, ref); // ref는 폼이없음 댓글 작업 ->
pstmt.setInt(6, re_step);
pstmt.setInt(7, re_level);
pstmt.setString(8, bean.getContent());
pstmt.executeUpdate();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
8) BoardList.jsp JSP 전체 게시글 파일 만들기
<%@page import="bean.BoardDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<h2>전체 게시글</h2>
<%
int count=0; //전체글 개수 알아내기 위해
int number=0;
BoardDAO bdao=new BoardDAO();
count=bdao.getAllCount(); //전체 게시글 갯수 읽어온다
%>
</body>
</html>
9) BoardDAO.java 파일에 getAllCount 작성 하기
public int getAllCount() {
getCon();
int count = 0;
try {
String sql = "select count(*) from board";
pstmt = con.prepareStatement(sql);
rs = pstmt.executeQuery();
if (rs.next()) {
count = rs.getInt(1);
}
con.close();
} catch (Exception e) {
e.printStackTrace();
}
return count;
}
10) 다시 BoardList.jsp JSP 파일로 돌아와서 table 작성하기 (+vector를 활용하여 반복문으로 출력하기)
11) BoardIn.jsp JSP 파일 생성 -> 게시글 상세보기 작업(제목을 누르면 제목에 대한 글번호 알아내서 int num에 저장)
<%@page import="bean.BoardBean"%>
<%@page import="bean.BoardDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<%
//게시글 상세보기 작업(제목을 누르면 제목에대한 글번호를 알아내서 int num에 저장)
int num=Integer.parseInt(request.getParameter("num").trim());
BoardDAO bdao=new BoardDAO();
BoardBean bean = bdao.oneBoard(num); //한 게시물만 볼 거임
%>
</body>
</html>
12) BoardDAO.java 파일에 oneBoard 작성 하기 - 조회수증가, 번호를 기준으로 한 게시글에 대한 정보 가져오기
public BoardBean oneBoard(int num) {
// 조회수 증가, 번호를 기준으로 한 게시글에 대한 정보 가져오기
BoardBean bean = new BoardBean();
getCon();
try {
String readsql = "update board set readcount=readcount+1 where num=?";
pstmt = con.prepareStatement(readsql);
pstmt.setInt(1, num);
pstmt.executeUpdate();
String sql = "select * from board where num=?";
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, num);
rs = pstmt.executeQuery();
if (rs.next()) {
bean.setNum(rs.getInt(1));
bean.setWriter(rs.getString(2));
bean.setEmail(rs.getString(3));
bean.setSubject(rs.getString(4));
bean.setPassword(rs.getString(5));
bean.setReg_date(rs.getDate(6).toString());
bean.setRef(rs.getInt(7));
bean.setRe_step(rs.getInt(8));
bean.setRe_level(rs.getInt(9));
bean.setReadcount(rs.getInt(10));
bean.setContent(rs.getString(11));
}
con.close();
} catch (Exception e) {
e.printStackTrace();
}
return bean;
}
13) 다시 BoardIn.jsp JSP 파일로 돌아와서 table 작성하기 (댓글쓰기 버튼 만들기)
<%@page import="bean.BoardBean"%>
<%@page import="bean.BoardDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<%
//게시글 상세보기 작업(제목을 누르면 제목에 대한 글번호를 알아내서 int num에 저장)
int num = Integer.parseInt(request.getParameter("num").trim());
BoardDAO bdao = new BoardDAO();
BoardBean bean = bdao.oneBoard(num); // 한 게시물만 볼 거임
%>
<h2>하나의 게시글</h2>
<table width="600" border="1">
<tr height="40">
<td width="120" align="center">번호</td>
<td width="120" align="center"><%= bean.getNum() %></td>
<td width="120" align="center">조회수</td>
<td width="120" align="center"><%= bean.getReadcount() %></td>
</tr>
<tr height="40">
<td width="120" align="center">작성자</td>
<td width="120" align="center"><%= bean.getWriter() %></td>
<td width="120" align="center">작성날짜</td>
<td width="120" align="center"><%= bean.getReg_date() %></td>
</tr>
<tr height="40">
<td width="120" align="center">이메일</td>
<td width="480" colspan="3" align="center"><%= bean.getEmail() %></td>
</tr>
<tr height="40">
<td width="120" align="center">제목</td>
<td width="480" colspan="3" align="center"><%= bean.getSubject() %></td>
</tr>
<tr height="40">
<td width="120" align="center">글내용</td>
<td width="480" colspan="3" align="center"><%= bean.getContent() %></td>
</tr>
<tr height="40">
<td width="200" align="center" colspan="4" >
<input type="button" value="댓글쓰기"
onclick="location.href='ReWriteForm.jsp?num=<%=bean.getNum() %>&ref=<%=bean.getRef() %>&re_step=<%=bean.getRe_step() %>&re_level=<%=bean.getRe_level() %>'">
<input type="button" value="수정" onclick="location.href='UpdateForm.jsp?num=<%=bean.getNum()%>'">
<input type="button" value="삭제" onclick="location.href='DeleteForm.jsp?num=<%=bean.getNum()%>'">
<input type="button" value="목록" onclick="location.href='BoardList.jsp'">
</tr>
</table>
</body>
</html>
14) UpdateFrom.jsp JSP 파일 작성
<%@page import="bean.BoardBean"%>
<%@page import="bean.BoardDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<h2>게시글 수정</h2>
<%
int num=Integer.parseInt(request.getParameter("num"));
BoardDAO dao=new BoardDAO();
BoardBean bean=dao.oneUpdateBoard(num);
%>
</body>
</html>
15) BoardDAO.java 파일에 oneUpdateBoard 작성 하기
public BoardBean oneUpdateBoard(int num) {
BoardBean bean = new BoardBean();
getCon();
try {
String sql = "select * from board where num=?";
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, num);
rs = pstmt.executeQuery();
if (rs.next()) {
bean.setNum(rs.getInt(1));
bean.setWriter(rs.getString(2));
bean.setEmail(rs.getString(3));
bean.setSubject(rs.getString(4));
bean.setPassword(rs.getString(5));
bean.setReg_date(rs.getDate(6).toString());
bean.setRef(rs.getInt(7));
bean.setRe_step(rs.getInt(8));
bean.setRe_level(rs.getInt(9));
bean.setReadcount(rs.getInt(10));
bean.setContent(rs.getString(11));
}
con.close();
} catch (Exception e) {
e.printStackTrace();
}
return bean;
}
16) 다시 UpdateForm.jsp JSP 파일로 돌아와서 table 작성하기
<%@page import="bean.BoardBean"%>
<%@page import="bean.BoardDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<h2>게시글 수정</h2>
<%
int num=Integer.parseInt(request.getParameter("num"));
BoardDAO dao=new BoardDAO();
BoardBean bean=dao.oneUpdateBoard(num);
%>
<form action="UpdateProc.jsp" method="post">
<table width="600" border="1">
<tr height="40">
<td align="center" width="150">작성자</td>
<td align="center" width="150"><%=bean.getWriter() %></td>
<td align="center" width="150">작성일</td>
<td align="center" width="150"><%=bean.getReg_date() %></td>
</tr>
<tr height="40">
<td align="center" width="150">제목</td>
<td width="150" colspan="3">
<input type="text" name="subject" value="<%=bean.getSubject() %>">
</td>
</tr>
<tr height="40">
<td align="center" width="150">비밀번호</td>
<td width="150" colspan="3">
<input type="password" name="password" value="<%=bean.getPassword() %>">
</td>
</tr>
<tr height="40">
<td align="center" width="150">글내용</td>
<td width="150" colspan="3">
<textarea rows="10" cols="50" name="content">
<%=bean.getContent() %>
</textarea>
</td>
</tr>
<tr height="40">
<td width="150" colspan="4">
<input type="hidden" name="num" value="<%=bean.getNum() %>">
<input type="submit" value="글수정">
<input type="button" value="전체글보기" onclick="location.href='BoardList.jsp'">
</td>
</tr>
</table>
</form>
</body>
</html>
17) UpdateProc.jsp JSP 파일 작성
<%@page import="bean.BoardDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<%
request.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="boardbean" class="bean.BoardBean">
<jsp:setProperty property="*" name="boardbean"/>
</jsp:useBean>
<%
BoardDAO bdao=new BoardDAO();
String pass=bdao.getPass(boardbean.getNum()); //hidden으로 넘긴 값 받는다
//앞에pass는 DB에들어잇는값 / getPass는 폼에입력한값
if(pass.equals(boardbean.getPassword())) {
bdao.updateBoard(boardbean);
response.sendRedirect("BoardList.jsp");
}
else{
%>
<script type="text/javascript">
alert("비밀번호가 일치하지 않는다. 다시 입력해라");
history.go(-1);
</script>
<%
}
%>
</body>
</html>
18) BoardDAO.java 파일에 getPass와 updateBoard 작성 하기
public String getPass(int num) {
String pass = "";
getCon();
try {
String sql = "select password from board where num=?";
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, num);
rs = pstmt.executeQuery();
if (rs.next()) {
pass = rs.getString(1);
}
con.close();
} catch (Exception e) {
e.printStackTrace();
}
return pass;
}
public void updateBoard(BoardBean bean) {
getCon();
try {
String sql="update board set subject=?,content=?, where num=?";
pstmt=con.prepareStatement(sql);
pstmt.setString(1, bean.getSubject());
pstmt.setString(2, bean.getContent());
pstmt.setInt(3, bean.getNum());
pstmt.executeUpdate();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
19) BoardLis.jsp JSP 파일로 돌아와서 pageCount 총 페이지수 작성 - 이미 존재하는 수식들이라서 짜기보단 이해 하기 !!!
글이 66개가 있으면 한페이지에 10개의 글이 들어갈 수 있다면 총 페이지가 7페이지가 필요함 !
66을 10으로 나누고 ! 6에다가 나머지가 0이 아니라면 한페이지가 더 필요하니까 6에다 +1 더해서 7!
즉, 총 7페이지가 필요 !!!
한페이지에 10개씩 보면 1페이지에는 1부터~10까지 / 2페이지에서부터는 11부터~20까지
<%@page import="java.util.Vector"%>
<%@page import="bean.BoardBean"%>
<%@page import="bean.BoardDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<body>
<h2>전체 게시글</h2>
<%
int pageSize=10;
String pageNum=request.getParameter("pageNum");
if(pageNum==null) {
pageNum="1";
}
int count = 0; //전체글 개수 알아내기 위해
int number = 0;
BoardDAO bdao = new BoardDAO();
count = bdao.getAllCount(); //전체 게시글 갯수 읽어온다
int currentPage=Integer.parseInt(pageNum); //현재 페이지 인덱스 번호
int startRow=(currentPage-1)*pageSize+1;
// 1 - 1 * 10 + 1
int endRow=currentPage * pageSize; //1 * 10
Vector<BoardBean> vec = bdao.allBoard(startRow, endRow);
number = count-(currentPage-1)*pageSize;
%>
<table width="800" border="1">
<tr height="40">
<td width="50" align="center">번호</td>
<td width="420" align="center">제목</td>
<td width="100" align="center">작성자</td>
<td width="150" align="center">작성날짜</td>
<td width="80" align="center">조회수</td>
</tr>
<%
//vector객체를 만들어서 전체게시물의 갯수만큼 가져와서 bean에 담기(브라우저에 전체 게시글을 출력해야 하기 떄문에)
//벡터에 있는거 꺼내와서 BoardBean에 저장
for (int i = 0; i < vec.size(); i++) {
BoardBean bean = vec.get(i);
%>
<tr height="40">
<td width="50" align="center"><%=number--%></td>
<td width="420" align="center"><a
href="BoardIn.jsp?num=<%=bean.getNum()%>"
style="text-decoration: none"></a></td>
<td width="100" align="center"><%=bean.getWriter()%></td>
<td width="150" align="center"><%=bean.getReg_date()%></td>
<td width="80" align="center"><%=bean.getReadcount()%></td>
</tr>
<%
}
%>
<tr height="40">
<td colspan="5" align="center"><input type="button" value="글작성"
onclick="location.href='BoardForm.jsp'"></td>
</tr>
</table>
<%
if (count > 0) { // 127/10 + (127 % 10)
int pageCount = count / pageSize + (count % pageSize == 0 ? 0 : 1);
//총 페이지 수
int startPage = 1;
//현재페이지가 5면 맨처음 시작페이지는 1부터 시작한다는 뜻
if (currentPage % 10 != 0) { //currentPage가 11일 때 라고 생각해 보면
startPage = (int) (currentPage / 10) * 10 + 1; //답은 11
} else { //currentPage가 10일 때
startPage = ((int) (currentPage / 10) - 1) * 10 + 1;
}
int pageBlock = 10;
int endPage = startPage + pageBlock - 1;
if (endPage > pageCount) {
endPage = pageCount;
}
if (startPage > 10) {
%>
<a href="BoardList.jsp?pageNum=<%=startPage - 10%>">[이전]</a>
<%
}
for (int i = startPage; i <= endPage; i++) {
%>
<a href="BoardList.jsp?pageNum=<%=i%>">[<%=i%>]</a>
<%
}
if (endPage < pageCount) {
%>
<a href="BoardList.jsp?pageNum=<%=startPage + 10%>">[다음]</a>
<%
}
}
%>
</body>
</html>
20) BoardDAO.java 파일에 allBoard 작성 하기
public Vector<BoardBean> allBoard(int startRow, int endRow){
Vector<BoardBean> v=new Vector<BoardBean>();
getCon();
try {
String sql="select * from board order by ref desc, re_step asc limit ?,?";
pstmt=con.prepareStatement(sql);
pstmt.setInt(1, startRow-1);
pstmt.setInt(2, endRow);
rs=pstmt.executeQuery();
while(rs.next()) {
BoardBean bean=new BoardBean();
bean.setNum(rs.getInt(1));
bean.setWriter(rs.getString(2));
bean.setEmail(rs.getString(3));
bean.setSubject(rs.getString(4));
bean.setPassword(rs.getString(5));
bean.setReg_date(rs.getDate(6).toString());
bean.setRef(rs.getInt(7));
bean.setRe_step(rs.getInt(8));
bean.setRe_level(rs.getInt(9));
bean.setReadcount(rs.getInt(10));
bean.setContent(rs.getString(11));
v.add(bean);
}
con.close();
}catch(Exception e) {
e.printStackTrace();
}
return v;
}
21) ReWriteForm.jsp JSP 파일 작성
) DeleteForm.jsp JSP 파일 작성
) DeleteProc.jsp JSP 파일 작성
) BoardDAO.java 파일에 deleteBoard 작성 하기