테이블 작성
데이터를 저장할 자바빈 생성
BoardDataBean.jsp
package ch13.board;
import com.sun.jmx.snmp.Timestamp;
public class BoardDateBean {
private int num;
private String writer;
private String subject;
private String email;
private String content;
private String passwd;
private Timestamp reg_date;
private int readcount;
private String ip;
private int ref;
private int re_step;
private int re_level;
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 getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
public Timestamp getReg_date() {
return reg_date;
}
public void setReg_date(Timestamp reg_date) {
this.reg_date = reg_date;
}
public int getReadcount() {
return readcount;
}
public void setReadcount(int readcount) {
this.readcount = readcount;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
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;
}
}
BoardDBBean.jsp
package ch13.board;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class BoardDBBean {
private static BoardDBBean instance = new BoardDBBean();
//.jsp페이지에서 DB연동빈인 BoardDBBean클래스의 메소드에 접근시 필요
public static BoardDBBean getInstance() {
return instance;
}
private BoardDBBean() {}
//커넥션풀로부터 Connection객체를 얻어냄
private Connection getConnection() throws Exception {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)envCtx.lookup("jdbc/jspmysql");
return ds.getConnection();
}
//board테이블에 글을 추가(inset문)<=writePro.jsp페이지에서 사용
public void insertArticle(BoardDataBean article)
throws Exception {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
int num=article.getNum();
int ref=article.getRef();
int re_step=article.getRe_step();
int re_level=article.getRe_level();
int number=0;
String sql="";
try {
conn = getConnection();
pstmt = conn.prepareStatement("select max(num) from board");
rs = pstmt.executeQuery();
if (rs.next())
number=rs.getInt(1)+1;
else
number=1;
if (num!=0) {
sql="update board set re_step=re_step+1 ";
sql += "where ref= ? and re_step> ?";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, ref);
pstmt.setInt(2, re_step);
pstmt.executeUpdate();
re_step=re_step+1;
re_level=re_level+1;
}else{
ref=number;
re_step=0;
re_level=0;
}
// 쿼리를 작성
sql = "insert into board(writer,email,subject,passwd,reg_date,";
sql+="ref,re_step,re_level,content,ip) values(?,?,?,?,?,?,?,?,?,?)";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, article.getWriter());
pstmt.setString(2, article.getEmail());
pstmt.setString(3, article.getSubject());
pstmt.setString(4, article.getPasswd());
pstmt.setTimestamp(5, article.getReg_date());
pstmt.setInt(6, ref);
pstmt.setInt(7, re_step);
pstmt.setInt(8, re_level);
pstmt.setString(9, article.getContent());
pstmt.setString(10, article.getIp());
pstmt.executeUpdate();
} catch(Exception ex) {
ex.printStackTrace();
} finally {
if (rs != null) try { rs.close(); } catch(SQLException ex) {}
if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
if (conn != null) try { conn.close(); } catch(SQLException ex) {}
}
}
//board테이블에 저장된 전체글의 수를 얻어냄(select문)<=list.jsp에서 사용
public int getArticleCount()
throws Exception {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
int x=0;
try {
conn = getConnection();
pstmt = conn.prepareStatement("select count(*) from board");
rs = pstmt.executeQuery();
if (rs.next()) {
x= rs.getInt(1);
}
} catch(Exception ex) {
ex.printStackTrace();
} finally {
if (rs != null) try { rs.close(); } catch(SQLException ex) {}
if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
if (conn != null) try { conn.close(); } catch(SQLException ex) {}
}
return x;
}
//글의 목록(복수개의 글)을 가져옴(select문) <=list.jsp에서 사용
public List<BoardDataBean> getArticles(int start, int end)
throws Exception {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
List<BoardDataBean> articleList=null;
try {
conn = getConnection();
pstmt = conn.prepareStatement(
"select * from board order by ref desc, re_step asc limit ?,? ");
pstmt.setInt(1, start-1);
pstmt.setInt(2, end);
rs = pstmt.executeQuery();
if (rs.next()) {
articleList = new ArrayList<BoardDataBean>(end);
do{
BoardDataBean article= new BoardDataBean();
article.setNum(rs.getInt("num"));
article.setWriter(rs.getString("writer"));
article.setEmail(rs.getString("email"));
article.setSubject(rs.getString("subject"));
article.setPasswd(rs.getString("passwd"));
article.setReg_date(rs.getTimestamp("reg_date"));
article.setReadcount(rs.getInt("readcount"));
article.setRef(rs.getInt("ref"));
article.setRe_step(rs.getInt("re_step"));
article.setRe_level(rs.getInt("re_level"));
article.setContent(rs.getString("content"));
article.setIp(rs.getString("ip"));
articleList.add(article);
}while(rs.next());
}
} catch(Exception ex) {
ex.printStackTrace();
} finally {
if (rs != null) try { rs.close(); } catch(SQLException ex) {}
if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
if (conn != null) try { conn.close(); } catch(SQLException ex) {}
}
return articleList;
}
//글의 내용을 보기(1개의 글)(select문)<=content.jsp페이지에서 사용
public BoardDataBean getArticle(int num)
throws Exception {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
BoardDataBean article=null;
try {
conn = getConnection();
pstmt = conn.prepareStatement(
"update board set readcount=readcount+1 where num = ?");
pstmt.setInt(1, num);
pstmt.executeUpdate();
pstmt = conn.prepareStatement(
"select * from board where num = ?");
pstmt.setInt(1, num);
rs = pstmt.executeQuery();
if (rs.next()) {
article = new BoardDataBean();
article.setNum(rs.getInt("num"));
article.setWriter(rs.getString("writer"));
article.setEmail(rs.getString("email"));
article.setSubject(rs.getString("subject"));
article.setPasswd(rs.getString("passwd"));
article.setReg_date(rs.getTimestamp("reg_date"));
article.setReadcount(rs.getInt("readcount"));
article.setRef(rs.getInt("ref"));
article.setRe_step(rs.getInt("re_step"));
article.setRe_level(rs.getInt("re_level"));
article.setContent(rs.getString("content"));
article.setIp(rs.getString("ip"));
}
} catch(Exception ex) {
ex.printStackTrace();
} finally {
if (rs != null) try { rs.close(); } catch(SQLException ex) {}
if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
if (conn != null) try { conn.close(); } catch(SQLException ex) {}
}
return article;
}
//글 수정폼에서 사용할 글의 내용(1개의 글)(select문)<=updateForm.jsp에서 사용
public BoardDataBean updateGetArticle(int num)
throws Exception {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
BoardDataBean article=null;
try {
conn = getConnection();
pstmt = conn.prepareStatement(
"select * from board where num = ?");
pstmt.setInt(1, num);
rs = pstmt.executeQuery();
if (rs.next()) {
article = new BoardDataBean();
article.setNum(rs.getInt("num"));
article.setWriter(rs.getString("writer"));
article.setEmail(rs.getString("email"));
article.setSubject(rs.getString("subject"));
article.setPasswd(rs.getString("passwd"));
article.setReg_date(rs.getTimestamp("reg_date"));
article.setReadcount(rs.getInt("readcount"));
article.setRef(rs.getInt("ref"));
article.setRe_step(rs.getInt("re_step"));
article.setRe_level(rs.getInt("re_level"));
article.setContent(rs.getString("content"));
article.setIp(rs.getString("ip"));
}
} catch(Exception ex) {
ex.printStackTrace();
} finally {
if (rs != null) try { rs.close(); } catch(SQLException ex) {}
if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
if (conn != null) try { conn.close(); } catch(SQLException ex) {}
}
return article;
}
//글 수정처리에서 사용(update문)<=updatePro.jsp에서 사용
public int updateArticle(BoardDataBean article)
throws Exception {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs= null;
String dbpasswd="";
String sql="";
int x=-1;
try {
conn = getConnection();
pstmt = conn.prepareStatement(
"select passwd from board where num = ?");
pstmt.setInt(1, article.getNum());
rs = pstmt.executeQuery();
if(rs.next()){
dbpasswd= rs.getString("passwd");
if(dbpasswd.equals(article.getPasswd())){
sql="update board set writer=?,email=?,subject=?,passwd=?";
sql+=",content=? where num=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, article.getWriter());
pstmt.setString(2, article.getEmail());
pstmt.setString(3, article.getSubject());
pstmt.setString(4, article.getPasswd());
pstmt.setString(5, article.getContent());
pstmt.setInt(6, article.getNum());
pstmt.executeUpdate();
x= 1;
}else{
x= 0;
}
}
} catch(Exception ex) {
ex.printStackTrace();
} finally {
if (rs != null) try { rs.close(); } catch(SQLException ex) {}
if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
if (conn != null) try { conn.close(); } catch(SQLException ex) {}
}
return x;
}
//글삭제처리시 사용(delete문)<=deletePro.jsp페이지에서 사용
public int deleteArticle(int num, String passwd)
throws Exception {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs= null;
String dbpasswd="";
int x=-1;
try {
conn = getConnection();
pstmt = conn.prepareStatement(
"select passwd from board where num = ?");
pstmt.setInt(1, num);
rs = pstmt.executeQuery();
if(rs.next()){
dbpasswd= rs.getString("passwd");
if(dbpasswd.equals(passwd)){
pstmt = conn.prepareStatement(
"delete from board where num=?");
pstmt.setInt(1, num);
pstmt.executeUpdate();
x= 1; //글삭제 성공
}else
x= 0; //비밀번호 틀림
}
} catch(Exception ex) {
ex.printStackTrace();
} finally {
if (rs != null) try { rs.close(); } catch(SQLException ex) {}
if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
if (conn != null) try { conn.close(); } catch(SQLException ex) {}
}
return x;
}
}
기타 페이지
script.js
function writeSave(){
eval writeform = document.writeform;
if(!writeform.writer.value){
alert("작성자를 입력하십시요.");
writeform.writer.focus();
return false;
}
if(!writeform.subject.value){
alert("제목을 입력하십시요.");
writeform.subject.focus();
return false;
}
if(!writeform.content.value){
alert("내용을 입력하십시요.");
writeform.content.focus();
return false;
}
if(!writeform.passwd.value){
alert(" 비밀번호를 입력하십시요.");
writeform.passwd.focus();
return false;
}
};
color.jspf
<%
String bodyback_c="#FFF0B5";
String value_c="#FFE271";
%>
style.css
@CHARSET "UTF-8";
body {
font-size: 9pt;
text-align: center;
}
table {
font-size: 9pt;
text-align: center;
border: 1pt solid black;
}
select {
font-size: 9pt;
}
form {
font-size: 9pt;
}
p{
font-weight: 700;
}
글쓰기 폼과 글쓰기 처리 페이지의 작성
'개발 > JSP' 카테고리의 다른 글
[JSP] JSP 페이지에서 테이블 관련 [수정] (0) | 2021.04.06 |
---|---|
[JSP] JSP 페이지에서 테이블 관련 [추가 및 화면에 보기] (0) | 2021.04.06 |
[JSP] JDBC를 사용한 JSP와 데이터베이스 연동 (0) | 2021.04.06 |
[JSP] 자바 빈 (java bean) (0) | 2021.04.05 |
[JSP] 에러 처리 (0) | 2021.04.05 |