게시판 만들기
board - 게시판
게시판 글 작성
게시판 리스트
(+ 페이징 처리)
게시판 글 본문 보기
게시판 글 수정
게시판 글 삭제
+ 게시판 답글 쓰기
+ 게시판 첨부파일 업로드/다운로드
[MySQL 워크벤처 들어가서 게시판 테이블 생성]
CREATE TABLE `jspdb`.`itwill_board` (
`bno` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NOT NULL,
`pass` VARCHAR(45) NOT NULL,
`subject` VARCHAR(100) NOT NULL,
`content` VARCHAR(2000) NULL,
`readcount` INT NULL,
`re_ref` INT NULL,
`re_lev` INT NULL,
`re_seq` INT NULL,
`date` DATE NULL,
`ip` VARCHAR(45) NULL,
`file` VARCHAR(200) NULL,
PRIMARY KEY (`bno`));
* 예외 처리 : 예상하지 못한 예외상황을 처리구문
=> 주로 외부 시스템과의 연결,IO,...
=> 예외가 발생하면 예외객체를 생성, catch에게 던진다
받은 예외객체를 확인후 처리
* 자바에서는 예외상황을 '객체'로 표시함
코드1;
try {
Class.forName(DRIVER);
// 에러 발생!!!!! -> 모든 코드 실행 X
Class.forName(DRIVER2);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
코드2;
try{
예외가 발생 할지도 모르는 코드
}catch(Exception e){
예외 처리(에러메세지 출력)
}finally{
예외 발생여부와 상관없이 무조건 실행
}
writeForm.jsp
writePRO.jsp
<%
// 한글 인코딩 처리
request.setCharacterEncoding("UTF-8");
// 전달정보 저장(파라메터) => 자바빈-액션태그 사용
%>
<jsp:useBean id="bb" class="com.itwillbs.board.BoardBean"/>
<jsp:setProperty property="*" name="bb"/>
<%
System.out.println(bb.toString());
// IP주소 저장
bb.setIp(request.getRemoteAddr());
System.out.println(bb);
// DB에 글정보 저장
// BoardDAO 객체 생성
BoardDAO dao = new BoardDAO();
dao.insertBoard(bb);
// 리스트 페이지로 이동
response.sendRedirect("boardList.jsp");
%>
* 배열
//(기본형타입-8)
int[] arr = new int[10];
//(참조형타입)
//=> 객체배열
String[] arr2 = new String[10];
BoardBean[] arr3 = new BoardBean[10];
1) 객체 배열은 객체를 생성 (X)
BoardBean bb = new BoardBean();
BoardBean bb = new BoardBean();
...
BoardBean bb = new BoardBean(); X10
2) 객체 배열은 객체 레퍼런스 생성(O)
BoardBean bb;
BoardBean bb;
...
BoardBean bb; X10
-> arr3[0] = new BoardBean();
arr3[0].setAAA(100);
-> 고정길이 배열
-> 가변길이 배열
ArrayList 객체
객체 생성
ArrayList arr = new ArrayList();
요소값 추가
arr[0] = 값; (x)
arr.add(값); (O)
요소값 사용
arr.get()
BoardBean
package com.itwillbs.board;
import java.sql.Date;
/**
itwill_board 테이블의 정보를
한번에 저장하기위해서 생성한 객체
*/
public class BoardBean {
private int bno; // 글번호 PK
private String name; // 글작성자 이름 NN
private String pass; // 글비밀번호 NN
private String subject; // 글 제목 NN
private String content; // 글 내용
private int readcount; // 조회수
private int re_ref; // 답글 정보
private int re_lev; // 답글 정보
private int re_seq; // 답글 정보
private Date date; // 글 작성일/시간
private String ip; // 글 작성자 IP
private String file; // 파일업로드 정보
//public BoardBean() { }
// alt shift s + r
public int getBno() {
return bno;
}
public void setBno(int bno) {
this.bno = bno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public int getReadcount() {
return readcount;
}
public void setReadcount(int readcount) {
this.readcount = readcount;
}
public int getRe_ref() {
return re_ref;
}
public void setRe_ref(int re_ref) {
this.re_ref = re_ref;
}
public int getRe_lev() {
return re_lev;
}
public void setRe_lev(int re_lev) {
this.re_lev = re_lev;
}
public int getRe_seq() {
return re_seq;
}
public void setRe_seq(int re_seq) {
this.re_seq = re_seq;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getFile() {
return file;
}
public void setFile(String file) {
this.file = file;
}
// alt shift s + s
@Override
public String toString() {
return "BoardBean [bno=" + bno + ", name=" + name + ", pass=" + pass + ", subject=" + subject + ", content="
+ content + ", readcount=" + readcount + ", re_ref=" + re_ref + ", re_lev=" + re_lev + ", re_seq="
+ re_seq + ", date=" + date + ", ip=" + ip + ", file=" + file + "]";
}
}//class
BoardDAO
package com.itwillbs.board;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
/**
* DAO : Data Access Object, 데이터 처리 객체
* => DB데이터,Mysql과 관련된 모든 처리를 수행하는 객체
*
* DTO : Data Transfer Object, 데이터 전송 객체
* => 자바빈객체 / VO
* => DB에 저장된 데이터를 한번에 저장하는 객체
*/
public class BoardDAO {
// 공통 변수 선언
private Connection con = null;
private PreparedStatement pstmt = null;
private ResultSet rs = null;
private String sql = "";
/**
* getConnection()
* BoardDAO 객체 안에서만 사용가능한 메서드
* 디비 연결에 관한 동작 모두 처리
* @throws ClassNotFoundException
*/
// 디비연결처리 메서드-getConnection()
private Connection getConnection() throws Exception {
// 디비연결정보
final String DRIVER = "com.mysql.cj.jdbc.Driver";
final String DBURL = "jdbc:mysql://localhost:3306/jspdb";
final String DBID = "root";
final String DBPW = "1234";
// 1. 드라이버 로드
Class.forName(DRIVER);
System.out.println(" DAO : 드라이버 로드 성공!");
// 2. 디비 연결
con = DriverManager.getConnection(DBURL, DBID, DBPW);
System.out.println(" DAO : 디비 연결 성공! ");
System.out.println(" DAO : "+con);
return con;
}
// 디비연결처리 메서드-getConnection()
// 글정보 저장 메서드 - insertBoard()
public void insertBoard(BoardBean bb) {
// 디비연결정보
final String DRIVER = "com.mysql.cj.jdbc.Driver";
final String DBURL = "jdbc:mysql://localhost:3306/jspdb";
final String DBID = "root";
final String DBPW = "1234";
int bno = 0;
try {
// 1. 드라이버 로드
Class.forName(DRIVER);
System.out.println(" DAO : 드라이버 로드 성공!");
// 2. 디비 연결
Connection con
= DriverManager.getConnection(DBURL, DBID, DBPW);
System.out.println(" DAO : 디비 연결 성공! ");
// 3. SQL구문 & pstmt 객체
// -> 글번호 계산
String sql ="select max(bno) from itwill_board";
PreparedStatement pstmt
= con.prepareStatement(sql);
// 4. sql 실행
ResultSet rs = pstmt.executeQuery();
// 5. 데이터처리
if(rs.next()) {
//System.out.println("ttttttttttttt");
//bno = rs.getInt("bno")+1; (x)
//bno = rs.getInt("max(bno)")+1; // 컬럼명
bno = rs.getInt(1)+1; // 컬럼인덱스-첫번째 요소조회
// => getInt() 리턴값이 SQL-null일때 0을 리턴
}
System.out.println(" DAO : bno:"+bno);
// 3. SQL구문(insert) & pstmt 객체
sql
="insert into itwill_board(bno,name,pass,subject,content,readcount,"
+ "re_ref,re_lev,re_seq,date,ip,file) values(?,?,?,?,?,?,?,?,?,now(),?,?)";
pstmt = con.prepareStatement(sql);
// ????
pstmt.setInt(1, bno); // 계산한 글번호
pstmt.setString(2, bb.getName());
pstmt.setString(3, bb.getPass());
pstmt.setString(4, bb.getSubject());
pstmt.setString(5, bb.getContent());
pstmt.setInt(6, 0); // 조회수 0
pstmt.setInt(7, bno); // bno == re_ref (신규글)
pstmt.setInt(8, 0); //re_lev 0 (신규글)
pstmt.setInt(9, 0); //re_seq 0 (신규글)
pstmt.setString(10, bb.getIp());
pstmt.setString(11, bb.getFile());
// 4. SQL 실행
pstmt.executeUpdate();
System.out.println(" DAO : 글쓰기 완료! ");
}
catch (Exception e) {
e.printStackTrace();
}
}
// 글정보 저장 메서드 - insertBoard()
// 글 개수 계산 메서드 - getBoardCount()
public int getBoardCount() {
int result = 0;
//디비연결정보
final String DRIVER = "com.mysql.cj.jdbc.Driver";
final String DBURL = "jdbc:mysql://localhost:3306/jspdb";
final String DBID = "root";
final String DBPW = "1234";
try {
//1. 드라이버 로드
Class.forName(DRIVER);
System.out.println(" DAO : 드라이버로드 성공! ");
//2. 디비 연결
Connection con =
DriverManager.getConnection(DBURL, DBID, DBPW);
System.out.println(" DAO : 디비연결 성공! ");
//3. sql 작성(select) & pstmt 객체
String sql = "select count(*) from itwill_board";
PreparedStatement pstmt = con.prepareStatement(sql);
//4. sql 실행
ResultSet rs= pstmt.executeQuery();
//5. 데이터 처리 - 개수를 저장
if(rs.next()) {
result = rs.getInt(1);
//result = rs.getInt("count(*)");
}
System.out.println(" DAO : 개수 "+result+"개");
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
// 글 개수 계산 메서드 - getBoardCount()
// 글 정보 목록을 가져오는 메서드 - getBoardList()
public ArrayList getBoardList(){
// 글정보를 저장하는 배열
ArrayList boardList = new ArrayList();
try {
// 디비연결정보
// 1. 드라이버 로드
// 2. 디비 연결
con = getConnection();
// 3. SQL 작성(select) & pstmt 객체
sql = "select * from itwill_board";
pstmt = con.prepareStatement(sql);
// 4. SQL 실행
rs = pstmt.executeQuery();
// 5. 데이터 처리
// 글정보 전부 가져오기
// BoardBean 객체 여러개 => ArrayList 저장
while(rs.next()) {
// 글 하나의 정보 => BoardBean저장
BoardBean bb = new BoardBean();
bb.setBno(rs.getInt("bno"));
bb.setContent(rs.getString("content"));
bb.setDate(rs.getDate("date"));
bb.setFile(rs.getString("file"));
bb.setIp(rs.getString("ip"));
bb.setName(rs.getString("name"));
bb.setPass(rs.getString("pass"));
bb.setRe_ref(rs.getInt("re_ref"));
bb.setRe_lev(rs.getInt("re_lev"));
bb.setRe_seq(rs.getInt("re_seq"));
bb.setReadcount(rs.getInt("readcount"));
bb.setSubject(rs.getString("subject"));
// 글 하나의 정보를 배열의 한칸에 저장
boardList.add(bb);
}// while
System.out.println(" DAO : 게시판 글 목록 조회성공! ");
System.out.println(" DAO : "+boardList.size());
} catch (Exception e) {
e.printStackTrace();
}
return boardList;
}
// 글 정보 목록을 가져오는 메서드 - getBoardList()
}// DAO
최종 boardList.jps
<%@page import="com.itwillbs.board.BoardBean"%>
<%@page import="java.util.ArrayList"%>
<%@page import="com.itwillbs.board.BoardDAO"%>
<%@ 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>
<h1>boardList.jsp </h1>
<h2> 게시판 목록 </h2>
<h3><a href="writeForm.jsp">글쓰기</a></h3>
<%
// BoardDAO 객체 생성
BoardDAO dao = new BoardDAO();
// DB에 저장된 글의 개수 계산 후 가져오기
int result = dao.getBoardCount();
// DB에 저장된 글정보를 모두 가져오기
ArrayList boardList = dao.getBoardList();
%>
<h3> 글 개수 : <%=result %> 개 </h3>
<table border="1">
<tr>
<td>번호</td>
<td>제목</td>
<td>작성자</td>
<td>작성일</td>
<td>조회수</td>
<td>ip</td>
</tr>
<%for(int i=0;i<boardList.size();i++){
// 배열에 있는 요소를 꺼내기
// boardList[i];
BoardBean bb = (BoardBean)boardList.get(i);
%>
<tr>
<td><%=bb.getBno() %></td>
<td><%=bb.getSubject() %></td>
<td><%=bb.getName() %></td>
<td><%=bb.getDate() %></td>
<td><%=bb.getReadcount() %></td>
<td><%=bb.getIp() %></td>
</tr>
<%} %>
</table>
</body>
</html>
페이지 번호 추가하기
/*********************페이징처리 1*******************/
// 한 페이지에 출력할 글의 개수 설정
int pageSize = 10;
// 현 페이지가 몇 페이지인지 확인
String pageNum = request.getParameter("pageNum");
if(pageNum == null){
pageNum = "1";
}
// 시작행 번호 계산하기
// 1 11 21 31 41.....
int currentPage = Integer.parseInt(pageNum);
int startRow = (currentPage -1)*pageSize + 1;
// 끝헹 번호 계산
// 10 20 30 40 50 ...
int endRow = currentPage * pageSize;
/*********************페이징처리 1*******************/
jspdb.을 붙여야 테이블이 보이는 오류는 use jspdb;를 입력하면 해결된다!
추가의추가의추가... 미래의 복습할 나 자신아 미안해 필기를 개떡같이 해서...

// 글 정보 목록을 가져오는 메서드 - getBoardList(int startRow,int pageSize)
public ArrayList getBoardList(int startRow,int pageSize){
// 글정보를 저장하는 배열
ArrayList boardList = new ArrayList();
try {
// 디비연결정보
// 1. 드라이버 로드
// 2. 디비 연결
con = getConnection();
// 3. SQL 작성(select) & pstmt 객체
sql = "select * from itwill_board order by bno desc limit ?,?";
pstmt = con.prepareStatement(sql);
// ????
pstmt.setInt(1, startRow-1); // 시작행 번호-1
pstmt.setInt(2, pageSize); // 개수
// 4. SQL 실행
rs = pstmt.executeQuery();
// 5. 데이터 처리
// 글정보 전부 가져오기
// BoardBean 객체 여러개 => ArrayList 저장
while(rs.next()) {
// 글 하나의 정보 => BoardBean저장
BoardBean bb = new BoardBean();
bb.setBno(rs.getInt("bno"));
bb.setContent(rs.getString("content"));
bb.setDate(rs.getDate("date"));
bb.setFile(rs.getString("file"));
bb.setIp(rs.getString("ip"));
bb.setName(rs.getString("name"));
bb.setPass(rs.getString("pass"));
bb.setRe_ref(rs.getInt("re_ref"));
bb.setRe_lev(rs.getInt("re_lev"));
bb.setRe_seq(rs.getInt("re_seq"));
bb.setReadcount(rs.getInt("readcount"));
bb.setSubject(rs.getString("subject"));
// 글 하나의 정보를 배열의 한칸에 저장
boardList.add(bb);
}// while
System.out.println(" DAO : 게시판 글 목록 조회성공! ");
System.out.println(" DAO : "+boardList.size());
} catch (Exception e) {
e.printStackTrace();
}
return boardList;
}
// 글 정보 목록을 가져오는 메서드 -getBoardList(int startRow,int pageSize)
페이지 번호 링크
<%
/****************페이징 처리 2****************/
// 페이지 블럭(1,2,3,...,10) 생성
if(result != 0){ // 게시판에 글이 있을 때
// 전체 페이지수
// 글 15 / 페이지당 10 -> 2개
// 글 78 / 페이지당 10 -> 8개
int pageCount = result/pageSize + (result%pageSize == 0? 0:1);
// 한 화면에 보여줄 페이지 블럭 개수
int pageBlock = 10;
// 페이지 블럭의 시작 번호 계산
// 1 페이지 -> 1 , 11 페이지 -> 11
// 5 페이지 -> 1 , 25 페이지 -> 21
int startPage = ((currentPage-1)/pageBlock) * pageBlock + 1;
// 페이지 블럭의 마지막번호 계산
// 1페이지 -> 10, 13페이지-> 20
int endPage = startPage + pageBlock -1 ;
// 페이지의 글이 없는 경우
if(endPage > pageCount){
endPage = pageCount;
}
// 1...10 11...20 21...30
for(int i = startPage ; i<=endPage ; i++){
%>
<a href="boardList.jsp?pageNum=<%=i%>"> [<%=i %>] </a>
<%
}
} // count!=0
/****************페이징 처리 2****************/
%>
페이지 다음/이전 버튼 만들기
// 이전
if(startPage > pageBlock){
%>
<a href="boardList.jsp?pageNum=<%=startPage-pageBlock%>">[이전]</a>
<%
}
// 1.....10 11...20 21...30
for(int i=startPage;i<=endPage;i++){
%>
<a href="boardList.jsp?pageNum=<%=i %>">[<%=i %>]</a>
<%
}
// 다음
if(endPage < pageCount){
%>
<a href="boardList.jsp?pageNum=<%=startPage+pageBlock%>">[다음]</a>
<%
}
해당글 조회수 1 증가
boardContent 만들어 주기
DAO로 가서
// 글 정보 목록을 가져오는 메서드 -getBoardList(int startRow,int pageSize)
// 해당글 조회수 1증가 - updateReadCount()
public void updateReadCount(int bno) {
// 디비연결 정보
// 1. 드라이버로드 2. 디비연결
try {
con = getConnection();
// 3. SQL작성 & pstmt 객체
// 특정 글의 조회수를 1증가
sql = "update itwill_board set readcount=readcount + 1 where bno = ?";
pstmt = con.prepareStatement(sql);
// ????
pstmt.setInt(1, bno);
// 4. SQL 실행
pstmt.executeUpdate();
System.out.println("DAO : 게시판 조회수 1증가 완료!");
} catch (Exception e) {
e.printStackTrace();
}
}
글 내용 보기 boardContent.jsp 만들어주기
<%@page import="com.itwillbs.board.BoardBean"%>
<%@page import="com.itwillbs.board.BoardDAO"%>
<%@ 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>
<h1>boardContent.jsp</h1>
<h2> 게시판 본문 </h2>
<%
// 전달정보 저장 (파라메터 - bno,pageNum)
int bno = Integer.parseInt(request.getParameter("bno"));
String pageNum = request.getParameter("pageNum");
// BoardDAO 객체 생성
BoardDAO bdao = new BoardDAO();
// 해당글 조회수 1증가
bdao.updateReadCount(bno);
// 특정 번호에 해당하는 글정보를 가져오기
BoardBean bb = bdao.getBoard(bno);
// 화면에 글정보 출력
%>
<table border="1">
<tr>
<td>글번호</td>
<td><%=bb.getBno()%></td>
<td>조회수</td>
<td><%=bb.getReadcount() %></td>
</tr>
<tr>
<td>작성자</td>
<td><%=bb.getName() %></td>
<td>작성일</td>
<td><%=bb.getDate() %></td>
</tr>
<tr>
<td>제목</td>
<td colspan="3"><%=bb.getSubject() %></td>
</tr>
<tr>
<td>첨부파일</td>
<td colspan="3"><%=bb.getFile() %></td>
</tr>
<tr>
<td>내용</td>
<td colspan="3"><%=bb.getContent() %></td>
</tr>
<tr>
<td colspan="4">
<input type="button" value="수정하기" onclick=" location.href='updateForm.jsp?bno=<%=bb.getBno()%>&pageNum=<%=pageNum%>'; ">
<input type="button" value="삭제하기">
<input type="button" value="답글쓰기">
<input type="button" value="목록으로" onclick=" location.href='boardList.jsp?pageNum=<%=pageNum%>';">
</td>
</tr>
</table>
</body>
</html>
DAO로 가서
// 특정 번호에 해당하는 글정보를 가져오기 - getBoard(bno);
public BoardBean getBoard(int bno) {
//BoardBean bb;
// System.out.println(bb.getBno());
// => 컴파일 에러
BoardBean bb = null;
//System.out.println(bb.getBno());
// => 예외 발생
try {
// 1.2. 디비연결
con = getConnection();
// 3. sql작성(select) & pstmt 객체
sql = "select * from itwill_board where bno=?";
pstmt = con.prepareStatement(sql);
// ???
pstmt.setInt(1, bno);
// 4. sql실행
rs = pstmt.executeQuery();
// 5. 데이터처리 (rs->BoardBean)
if(rs.next()) {
bb = new BoardBean();
bb.setBno(rs.getInt("bno"));
bb.setContent(rs.getString("content"));
bb.setDate(rs.getDate("date"));
bb.setFile(rs.getString("file"));
bb.setIp(rs.getString("ip"));
bb.setName(rs.getString("name"));
bb.setPass(rs.getString("pass"));
bb.setRe_ref(rs.getInt("re_ref"));
bb.setRe_lev(rs.getInt("re_lev"));
bb.setRe_seq(rs.getInt("re_seq"));
bb.setReadcount(rs.getInt("readcount"));
bb.setSubject(rs.getString("subject"));
}
System.out.println(" DAO : 글정보 저장완료! ");
} catch (Exception e) {
e.printStackTrace();
}
return bb;
}
// 특정 번호에 해당하는 글정보를 가져오기 - getBoard(bno);
수정하기
Form
<%@page import="com.itwillbs.board.BoardBean"%>
<%@page import="com.itwillbs.board.BoardDAO"%>
<%@ 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>
<h1>updateForm.jsp</h1>
<%
// 전달정보(파라메터) 저장 - bno,pageNum
int bno = Integer.parseInt(request.getParameter("bno"));
String pageNum = request.getParameter("pageNum");
// BoardDAO 객체 생성
BoardDAO bdao = new BoardDAO();
// 특정 번호에 해당하는 글정보를 가져오기 - getBoard()
BoardBean bb = bdao.getBoard(bno);
// 정보 출력
%>
<fieldset>
<legend>ITWILL 게시판 글수정하기</legend>
<form action="updatePro.jsp" method="post">
<input type="hidden" name="bno" value="<%=bno%>">
글쓴이 : <input type="text" name="name" value="<%=bb.getName()%>"><br>
제목 : <input type="text" name="subject" value="<%=bb.getSubject()%>"><br>
내용 : <textarea rows="5" cols="20"
name="content"><%=bb.getContent() %></textarea><br>
비밀번호 : <input type="password" name="pass" placeholder="비밀번호를 입력하세요!"><hr>
<input type="submit" value="글 수정하기">
</form>
</fieldset>
</body>
</html>
Pro
<%@page import="com.itwillbs.board.BoardDAO"%>
<%@ 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>
<h1>updatePro.jsp</h1>
<%
// 한글데이터 처리
request.setCharacterEncoding("UTF-8");
//페이지번호
String pageNum = request.getParameter("pageNum");
// 전달정보(파라메터) 저장
// => 액션태그 - 자바빈 객체 사용저장
%>
<jsp:useBean id="bb" class="com.itwillbs.board.BoardBean"/>
<jsp:setProperty property="*" name="bb"/>
<%
// 확인
System.out.println(bb);
// BoardDAO - 정보 수정메서드
BoardDAO bdao = new BoardDAO();
int result = bdao.updateBoard(bb);
// result값에 따른 페이지 이동 (JS)
// -1 0 1
if(result == 1){
%>
<script type="text/javascript">
alert('수정완료! ');
location.href='boardList.jsp?pageNum=<%=pageNum%>';
</script>
<%
}
else if(result == 0){
%>
<script type="text/javascript">
alert('수정 실패-비밀번호 오류!');
history.back();
</script>
<%
}else{
// result == -1
%>
<script type="text/javascript">
alert('수정 실패-게시판 글없음!');
history.back();
</script>
<%
}
%>
</body>
</html>
BoardDAO 추가
// 게시판 글 수정하기 - updateBoard(bb)
public int updateBoard(BoardBean bb) {
int result = -1; // -1 0 1
try {
// 1.2. 디비연결
con = getConnection();
// 3. sql 작성 & pstmt 객체
sql = "select pass from itwill_board where bno = ?";
pstmt = con.prepareStatement(sql);
// ???
pstmt.setInt(1, bb.getBno());
// 4. sql 실행
rs = pstmt.executeQuery();
// 5. 데이터 처리
if(rs.next()) {
// 게시판 글있음
if(bb.getPass().equals(rs.getString("pass"))) {
// 게시판 글있음 - 비밀번호 같음
// => 글 수정
//3. sql 작성 & pstmt 객체
sql = "update itwill_board set name=?,subject=?,content=? where bno=?";
pstmt = con.prepareStatement(sql);
//???
pstmt.setString(1, bb.getName());
pstmt.setString(2, bb.getSubject());
pstmt.setString(3, bb.getContent());
pstmt.setInt(4, bb.getBno());
// 4. sql 실행
result = pstmt.executeUpdate();
//=> SQL구문(insert,update,delete)이 몇줄 영향을 미치는가를 정수형태로 리턴
System.out.println(" DAO : 게시판 글 수정 완료! ");
System.out.println(" DAO : result : "+result);
// 수정완료값 저장
//result = 1;
}else {
// 게시판 글있음 - 비밀번호 다름 0
result = 0;
}
}else {
// 게시판 글없음 -1
result = -1;
}
System.out.println(" DAO : 글 수정처리 완료 "+result);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
// 게시판 글 수정하기 - updateBoard(bb)
삭제하기
<%@ 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>
<h1>deleteForm.jsp</h1>
<h2> 게시판 글 삭제 </h2>
<%
//전달된 정보(bno,pageNum) 저장
int bno = Integer.parseInt(request.getParameter("bno"));
String pageNum = request.getParameter("pageNum");
%>
<fieldset>
<legend>글 삭제하기</legend>
<form action="deletePro.jsp?pageNum=<%=pageNum %>" method="post">
<input type="hidden" name="bno" value="<%=bno%>">
글 비밀번호 : <input type="password" name="pass">
<input type="submit" value="삭제하기">
</form>
</fieldset>
</body>
</html>
<%@page import="com.itwillbs.board.BoardDAO"%>
<%@ 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>
<h1>deletePro.jsp</h1>
<%
// 전달정보 저장(bno,pass,pageNum)
// bno,pass => 액션태그
// pageNum => 파라메터
String pageNum = request.getParameter("pageNum");
%>
<jsp:useBean id="bb" class="com.itwillbs.board.BoardBean"/>
<jsp:setProperty property="*" name="bb"/>
<%
// BoardDAO - 게시판 글 삭제메서드(bno,pass)
// BoardDAO - 게시판 글 삭제메서드(bb)
BoardDAO bdao = new BoardDAO();
// 글삭제 메서드-deleteBoard(bb) 호출
int result = bdao.deleteBoard(bb);
// 처리결과에 따른 페이지 이동
// result값에 따른 페이지 이동 (JS)
// -1 0 1
if(result == 1){
%>
<script type="text/javascript">
alert('삭제완료! ');
location.href='boardList.jsp?pageNum=<%=pageNum%>';
</script>
<%
}
else if(result == 0){
%>
<script type="text/javascript">
alert('삭제 실패-비밀번호 오류!');
history.back();
</script>
<%
}else{
// result == -1
%>
<script type="text/javascript">
alert('삭제 실패-게시판 글없음!');
history.back();
</script>
<%
}
%>
</body>
</html>
// 글삭제 메서드-deleteBoard(bb)
public int deleteBoard(BoardBean bb) {
int result = -1;
try {
//1.2. 디비연결
con = getConnection();
//3. sql 작성 & pstmt 객체
sql = "select pass from itwill_board where bno =?";
pstmt = con.prepareStatement(sql);
// ???
pstmt.setInt(1, bb.getBno());
// 4. sql 실행
rs = pstmt.executeQuery();
// 5. 데이터처리
if(rs.next()) {
if(bb.getPass().equals(rs.getString("pass"))) {
//3. sql 작성(delete) &pstmt
sql = "delete from itwill_board where bno=?";
pstmt = con.prepareStatement(sql);
// ???
pstmt.setInt(1, bb.getBno());
//4. sql 실행
result = pstmt.executeUpdate();
}else {
result = 0;
}
}else {
result = -1;
}
System.out.println(" DAO : 글삭제 완료! "+result);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
// 글삭제 메서드-deleteBoard(bb)
'⛏️ > JSP' 카테고리의 다른 글
[JSP] 11. 서블릿(Servlet) (0) | 2023.09.22 |
---|---|
[JSP] 10. 게시판 만들기2 (답글, 파일 업로드) (0) | 2023.09.20 |
[JSP] 8. 자바빈(JavaBean) (0) | 2023.09.04 |
[JSP] 7. DB(MySQL Workbench) 연결 (0) | 2023.08.28 |
[JSP] 6. Mysql (0) | 2023.08.25 |