1.board_table.txt
drop table board;
create table board(
num number not null primary key,
writer varchar2(10) not null,
email varchar2(10),
subject varchar2(20) not null,
passwd varchar2(12) not null,
reg_date date not null,
readcount int default 0,
ref number not null,
re_step number not null,
re_level number not null,
content varchar2(20) not null,
ip varchar2(15) not null
);
drop sequence board_seq;
create sequence board_seq
increment by 1
start with 1
minvalue 1
maxvalue 10000
nocache;
select num,ref,re_step,re_level from board;
--아래 sql문은 답글까지 insert 한 것
insert into board(num,writer,email,subject,passwd,reg_date,ref,re_step,re_level,content,ip)
values(board_seq.nextval,'a1','a1','a1','1234','2015-1-1',1,0,0,'내용1','127.0.0.1');
insert into board(num,writer,email,subject,passwd,reg_date,ref,re_step,re_level,content,ip)
values(board_seq.nextval,'a2','a2','a2','1234','2015-1-1',2,0,0,'내용2','127.0.0.1');
insert into board(num,writer,email,subject,passwd,reg_date,ref,re_step,re_level,content,ip)
values(board_seq.nextval,'a21','a21','a21','1234','2015-1-1',2,4,1,'내용21','127.0.0.1');
insert into board(num,writer,email,subject,passwd,reg_date,ref,re_step,re_level,content,ip)
values(board_seq.nextval,'a22','a22','a22','1234','2015-1-1',2,1,1,'내용22','127.0.0.1');
insert into board(num,writer,email,subject,passwd,reg_date,ref,re_step,re_level,content,ip)
values(board_seq.nextval,'a221','a221','a221','1234','2015-1-1',2,3,2,'내용221','127.0.0.1');
insert into board(num,writer,email,subject,passwd,reg_date,ref,re_step,re_level,content,ip)
values(board_seq.nextval,'a222','a222','a222','1234','2015-1-1',2,2,2,'내용222','127.0.0.1');
insert into board(num,writer,email,subject,passwd,reg_date,ref,re_step,re_level,content,ip)
values(board_seq.nextval,'a3','a3','a3','1234','2015-1-1',7,0,0,'내용3','127.0.0.1');
insert into board(num,writer,email,subject,passwd,reg_date,ref,re_step,re_level,content,ip)
values(board_seq.nextval,'a31','a31','a31','1234','2015-1-1',7,6,1,'내용31','127.0.0.1');
insert into board(num,writer,email,subject,passwd,reg_date,ref,re_step,re_level,content,ip)
values(board_seq.nextval,'a311','a311','a311','1234','2015-1-1',7,7,2,'내용311','127.0.0.1');
insert into board(num,writer,email,subject,passwd,reg_date,ref,re_step,re_level,content,ip)
values(board_seq.nextval,'a32','a32','a32','1234','2015-1-1',7,2,1,'내용32','127.0.0.1');
insert into board(num,writer,email,subject,passwd,reg_date,ref,re_step,re_level,content,ip)
values(board_seq.nextval,'a321','a321','a321','1234','2015-1-1',7,5,2,'내용321','127.0.0.1');
insert into board(num,writer,email,subject,passwd,reg_date,ref,re_step,re_level,content,ip)
values(board_seq.nextval,'a322','a322','a322','1234','2015-1-1',7,3,2,'내용322','127.0.0.1');
insert into board(num,writer,email,subject,passwd,reg_date,ref,re_step,re_level,content,ip)
values(board_seq.nextval,'a3221','a3221','a3221','1234','2015-1-1',7,4,3,'내용3221','127.0.0.1');
insert into board(num,writer,email,subject,passwd,reg_date,ref,re_step,re_level,content,ip)
values(board_seq.nextval,'a33','a33','a33','1234','2015-1-1',7,1,1,'내용33','127.0.0.1');
commit;
SQL> col subject for a10
SQL> select rownum,num,subject,ref,re_step,re_level from board;
ROWNUM NUM SUBJECT REF RE_STEP RE_LEVEL
---------- ---------- ---------- ---------- ---------- ----------
1 1 a1 1 0 0
2 2 a2 2 0 0
3 3 a21 2 4 1
4 4 a22 2 1 1
5 5 a221 2 3 2
6 6 a222 2 2 2
7 7 a3 6 0 0
8 8 a31 6 6 1
9 9 a311 6 7 2
10 10 a32 6 2 1
11 11 a321 6 5 2
12 12 a322 6 3 2
13 13 a3221 6 4 3
14 14 a33 6 1 1
SQL> select rownum,num,subject,ref,re_step,re_level from board
2 order by ref desc, re_step asc;
ROWNUM NUM SUBJECT REF RE_STEP RE_LEVEL
---------- ---------- ---------- ---------- ---------- ----------
7 7 a3 6 0 0
14 14 a33 6 1 1
10 10 a32 6 2 1
12 12 a322 6 3 2
13 13 a3221 6 4 3
11 11 a321 6 5 2
8 8 a31 6 6 1
9 9 a311 6 7 2
2 2 a2 2 0 0
4 4 a22 2 1 1
6 6 a222 2 2 2
5 5 a221 2 3 2
3 3 a21 2 4 1
1 1 a1 1 0 0
14 개의 행이 선택되었습니다.
[topN절 사용의 1단계]
select num, subject, ref, re_step, re_level
from board
order by ref desc, re_step asc;
NUM SUBJECT REF RE_STEP RE_LEVEL
--------- ---------- ---------- ---------- ----------
7 a3 6 0 0
14 a33 6 1 1
10 a32 6 2 1
12 a322 6 3 2
13 a3221 6 4 3
11 a321 6 5 2
8 a31 6 6 1
9 a311 6 7 2
2 a2 2 0 0
4 a22 2 1 1
6 a222 2 2 2
5 a221 2 3 2
3 a21 2 4 1
1 a1 1 0 0
[topN절 사용의 2단계]
select rownum as rank, num, subject, ref, re_step, re_level
from (select num, subject, ref, re_step, re_level
from board
order by ref desc, re_step asc);
RANK NUM SUBJECT REF RE_STEP RE_LEVEL
--------- ---------- ---------- ---------- ---------- ----------
1 7 a3 6 0 0
2 14 a33 6 1 1
3 10 a32 6 2 1
4 12 a322 6 3 2
5 13 a3221 6 4 3
6 11 a321 6 5 2
7 8 a31 6 6 1
8 9 a311 6 7 2
9 2 a2 2 0 0
10 4 a22 2 1 1
11 6 a222 2 2 2
12 5 a221 2 3 2
13 3 a21 2 4 1
14 1 a1 1 0 0
[topN절 사용의 최종 3단계]
select rank, num, subject, ref, re_step, re_level
from (select rownum as rank, num, subject, ref, re_step, re_level
from (select num, subject, ref, re_step, re_level
from board
order by ref desc, re_step asc))
where rank between 3 and 7;
RANK NUM SUBJECT REF RE_STEP RE_LEVEL
------- ---------- ---------- ---------- ---------- ----------
3 10 a32 6 2 1
4 12 a322 6 3 2
5 13 a3221 6 4 3
6 11 a321 6 5 2
7 8 a31 6 6 1
2.BoardBean.java
package board;
import java.sql.Timestamp;
public class BoardBean {
private int num;
private String writer;
private String email;
private String subject;
private String passwd;
private Timestamp reg_date;
private int readcount;
private int ref;
private int re_step;
private int re_level;
private String content;
private String ip;
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 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 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 String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
}
3.BoardDao.java
package 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;
import javax.naming.spi.DirStateFactory.Result;
public class BoardDao {
private static BoardDao instance;
String driver="oracle.jdbc.driver.OracleDriver";
String url="jdbc:oracle:thin:@localhost:1521:orcl";
String id="sqlid";
String pw="sqlpw";
Connection conn=null;
private BoardDao() {
try {
System.out.println("드라이버 로드");
Class.forName(driver);
} catch (ClassNotFoundException e) {
System.out.println("드라이버 로드 실패");
e.printStackTrace();
}
}
public static BoardDao getInstance() {
if(instance==null) {
instance=new BoardDao();
}
return instance;
}
public void connect() {
try {
System.out.println("계정 접속");
conn=DriverManager.getConnection(url, id, pw);
} catch (SQLException e) {
System.out.println("계정 접속 실패");
e.printStackTrace();
}
}
public int getArticleCount() {
connect();
String sql="select count(*) as cnt from board";
int result=-1;
PreparedStatement ps=null;
ResultSet rs=null;
try {
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
if(rs.next()) {
result=rs.getInt("cnt");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(conn!=null)
conn.close();
if(ps!=null)
ps.close();
if(rs!=null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return result;
}
public ArrayList<BoardBean> getArticles(int start,int end){
connect();
String sql = "select num, writer, email, subject, passwd, reg_date, readcount, ref, re_step, re_level, content, ip " ;
sql += "from (select rownum as rank, num, writer, email, subject, passwd, reg_date, readcount, ref, re_step, re_level, content, ip ";
sql += "from (select num, writer, email, subject, passwd, reg_date, readcount, ref, re_step, re_level, content, ip ";
sql += "from board ";
sql += "order by ref desc, re_step asc )) ";
sql += "where rank between ? and ? ";
PreparedStatement ps=null;
ResultSet rs=null;
ArrayList<BoardBean> lists=new ArrayList<BoardBean>();
try {
ps=conn.prepareStatement(sql);
ps.setInt(1, start);
ps.setInt(2, end);
rs=ps.executeQuery();
while(rs.next()) {
BoardBean bb=new BoardBean();
bb.setNum(rs.getInt("num"));
bb.setWriter(rs.getString("writer"));
bb.setEmail(rs.getString("email"));
bb.setSubject(rs.getString("subject"));
bb.setPasswd(rs.getString("passwd"));
bb.setReg_date(rs.getTimestamp("reg_date"));
bb.setReadcount(rs.getInt("readcount"));
bb.setRef(rs.getInt("ref"));
bb.setRe_step(rs.getInt("re_step"));
bb.setRe_level(rs.getInt("re_level"));
bb.setContent(rs.getString("content"));
bb.setIp(rs.getString("ip"));
lists.add(bb);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(conn!=null)
conn.close();
if(ps!=null)
ps.close();
if(rs!=null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return lists;
}
//글쓰기(원글)
public int insertArticle(BoardBean bb) {
connect();
String sql="insert into board(num,writer,email,subject,passwd,reg_date,ref,re_step,re_level,content,ip)"+
" values(board_seq.nextval,?,?,?,?,?,board_seq.currval,?,?,?,?)";
//ref=>board_seq.currval
PreparedStatement ps=null;
int result=-1;
try {
ps=conn.prepareStatement(sql);
ps.setString(1, bb.getWriter());
ps.setString(2, bb.getEmail());
ps.setString(3, bb.getSubject());
ps.setString(4, bb.getPasswd());
ps.setTimestamp(5, bb.getReg_date());
ps.setInt(6,0); //re_step
ps.setInt(7,0); //re_level
ps.setString(8, bb.getContent());
ps.setString(9, bb.getIp());
result=ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(conn!=null)
conn.close();
if(ps!=null)
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return result;
}
public BoardBean getArticle(String num) {
connect();
String sql2="update board set readcount=readcount+1 where num="+num;
String sql="select * from board where num=?";
PreparedStatement ps=null;
ResultSet rs=null;
BoardBean bb=null;
try {
ps=conn.prepareStatement(sql2);
ps.executeUpdate();
ps=conn.prepareStatement(sql);
ps.setString(1, num);
rs=ps.executeQuery();
if(rs.next()) {
bb=new BoardBean();
bb.setNum(rs.getInt("num"));
bb.setWriter(rs.getString("writer"));
bb.setEmail(rs.getString("email"));
bb.setSubject(rs.getString("subject"));
bb.setPasswd(rs.getString("passwd"));
bb.setReg_date(rs.getTimestamp("reg_date"));
bb.setReadcount(rs.getInt("readcount"));
bb.setRef(rs.getInt("ref"));
bb.setRe_step(rs.getInt("re_step"));
bb.setRe_level(rs.getInt("re_level"));
bb.setContent(rs.getString("content"));
bb.setIp(rs.getString("ip"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(conn!=null)
conn.close();
if(ps!=null)
ps.close();
if(rs!=null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return bb;
}
public int replyArticle(BoardBean bb) {
connect();
String sql="insert into board(num,writer,email,subject,passwd,reg_date,ref,re_step,re_level,content,ip)"+
" values(board_seq.nextval,?,?,?,?,?,?,?,?,?,?)";
String sql2="update board set re_step=re_step+1 where ref=? and re_step>?";
PreparedStatement ps=null;
int result=-1;
try {
ps=conn.prepareStatement(sql2);
ps.setInt(1, bb.getRef());
ps.setInt(2, bb.getRe_step());
ps.executeUpdate();
ps=conn.prepareStatement(sql);
ps.setString(1, bb.getWriter());
ps.setString(2, bb.getEmail());
ps.setString(3, bb.getSubject());
ps.setString(4, bb.getPasswd());
ps.setTimestamp(5, bb.getReg_date());
ps.setInt(6,bb.getRef());
ps.setInt(7,(bb.getRe_step()+1));
ps.setInt(8,(bb.getRe_level()+1));
ps.setString(9, bb.getContent());
ps.setString(10, bb.getIp());
result=ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(conn!=null)
conn.close();
if(ps!=null)
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return result;
}
public BoardBean updateGetArticle(String num) {
connect();
String sql="select * from board where num=?";
BoardBean bb=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
ps=conn.prepareStatement(sql);
ps.setString(1, num);
rs=ps.executeQuery();
if(rs.next()) {
bb=new BoardBean();
bb.setNum(rs.getInt("num"));
bb.setWriter(rs.getString("writer"));
bb.setEmail(rs.getString("email"));
bb.setSubject(rs.getString("subject"));
bb.setPasswd(rs.getString("passwd"));
bb.setReg_date(rs.getTimestamp("reg_date"));
bb.setReadcount(rs.getInt("readcount"));
bb.setRef(rs.getInt("ref"));
bb.setRe_step(rs.getInt("re_step"));
bb.setRe_level(rs.getInt("re_level"));
bb.setContent(rs.getString("content"));
bb.setIp(rs.getString("ip"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(conn!=null)
conn.close();
if(ps!=null)
ps.close();
if(rs!=null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return bb;
}
public int updateArticle(BoardBean bb) {
connect();
String sql1="select * from board where num=?";
String sql2="update board set writer=?,email=?,subject=?,content=? where num=?";
PreparedStatement ps=null;
ResultSet rs=null;
int result=-1;
try {
ps=conn.prepareStatement(sql1);
ps.setInt(1, bb.getNum());
rs=ps.executeQuery();
if(rs.next()) {
if(rs.getString("passwd").equals(bb.getPasswd())) {
ps=conn.prepareStatement(sql2);
ps.setString(1, bb.getWriter());
ps.setString(2, bb.getEmail());
ps.setString(3, bb.getSubject());
ps.setString(4, bb.getContent());
ps.setInt(5, bb.getNum());
result=ps.executeUpdate();
} else {
result=-2;
}
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(conn!=null)
conn.close();
if(ps!=null)
ps.close();
if(rs!=null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return result;
}
public int deleteArticle(String num,String passwd) {
connect();
String sql="select passwd from board where num=?";
String sql2="delete board where num=?";
PreparedStatement ps=null;
ResultSet rs=null;
int result=-1;
try {
ps=conn.prepareStatement(sql);
ps.setString(1, num);
rs=ps.executeQuery();
if(rs.next()) {
if(rs.getString("passwd").equals(passwd)) {
ps=conn.prepareStatement(sql2);
ps.setString(1, num);
result=ps.executeUpdate();
} else {
result=-2;
}
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(conn!=null)
conn.close();
if(ps!=null)
ps.close();
if(rs!=null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return result;
}
}
4.list.jsp(메인)
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="board.BoardBean"%>
<%@page import="java.util.ArrayList"%>
<%@page import="board.BoardDao"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="color.jsp"%>
<style type="text/css">
body{
text-align: center;
}
table{
margin: auto;
}
</style>
list.jsp<br>
<%
int pageSize=10;
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
String pageNum=request.getParameter("pageNum");
if(pageNum==null){
pageNum="1";
}
int currentPage=Integer.parseInt(pageNum);
int startRow = (currentPage-1) * pageSize+1;
int endRow = currentPage * pageSize;
//1페이지 => startRow:1 endRow:10 => num칼럼 값은 아니다.
//2페이지 => startRow:11 endRow:20
BoardDao bdao=BoardDao.getInstance();
int count = bdao.getArticleCount();
System.out.println("count : "+count);
ArrayList<BoardBean> lists=null;
if(count>0){
lists = bdao.getArticles(startRow,endRow);
}
int number=count-(currentPage-1)*pageSize;
%>
<b>글목록(전체 글 : <%=count %>)</b>
<table border="1" width="700">
<tr>
<td align="right" bgcolor="<%=value_c%>">
<a href="writeForm.jsp">글쓰기</a>
</td>
</tr>
</table>
<%
if(count == 0){
%>
<table border="1" width="700">
<tr>
<td align="center">
게시글이 없습니다.
</td>
</tr>
</table>
<%
}//if
else{
%>
<table border="1" width="700">
<tr bgcolor="<%=value_c%>">
<td align="center">번호</td>
<td align="center">제목</td>
<td align="center">작성자</td>
<td align="center">작성일</td>
<td align="center">조회</td>
<td align="center">IP</td>
</tr>
<%
for(int i=0;i<lists.size();i++){
BoardBean bb = lists.get(i);
%>
<tr>
<td align="right"><%=number-- %></td>
<td >
<%
if(bb.getRe_level()>0){
%>
<img src="images/level.gif" width="<%=bb.getRe_level()*20 %>" height="15">
<img src="images/re.gif" height="15">
<% }
%>
<a href="content.jsp?num=<%=bb.getNum()%>&pageNum=<%=currentPage%>"><%=bb.getSubject() %></a>
<%if(bb.getReadcount()>=10){ %>
<img src="images/hot.gif" height="15" >
<%} %>
</td>
<td align="center"><%=bb.getWriter() %></td>
<td align="center"><%=sdf.format(bb.getReg_date())%></td>
<td align="right"><%=bb.getReadcount() %></td>
<td align="center"><%=bb.getIp() %></td>
</tr>
<%
}//for
%>
</table>
<%
}//else
if(count>0){
int pageCount=count/pageSize+(count%pageSize==0 ? 0 : 1);
//pageCount : 전체 페이지 수
int pageBlock=10;
int startPage = ((currentPage-1)/pageBlock*pageBlock)+1;
int endPage=startPage+pageBlock-1;
if(endPage>pageCount)
endPage=pageCount;
if(startPage>10){
%>
<a href="list.jsp?pageNum=<%=startPage-10%>">[이전]</a>
<%
}//if
for(int i=startPage;i<=endPage;i++){
%>
<a href="list.jsp?pageNum=<%=i%>">[<%=i %>]</a>
<%
}
if(endPage<pageCount){
%>
<a href="list.jsp?pageNum=<%=startPage+10%>">[다음]</a>
<%
}//if
}//if(count>0)
%>
5.content.jsp(글 조회)
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="board.BoardBean"%>
<%@page import="board.BoardDao"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@include file="color.jsp"%>
content.jsp<br>
<%
String num=request.getParameter("num"); //부모번호(선택한 글)
String pageNum=request.getParameter("pageNum");
BoardDao bdao=BoardDao.getInstance();
board.BoardBean article= bdao.getArticle(num);
System.out.println("num:"+article.getNum());
System.out.println("Ref:"+article.getRef()); //부모정보
System.out.println("Re_step:"+article.getRe_step()); //부모정보
System.out.println("Re_level:"+article.getRe_level()); //부모정보
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
%>
<form name="myform">
<table width="500" border="1" cellspacing="0" cellpadding="0"
bgcolor="<%=bodyback_c%>" align="center">
<tr height="30">
<td align="center" width="125" bgcolor="<%=value_c%>">글번호</td>
<td align="center" width="125"> <%=article.getNum()%></td>
<td align="center" width="125" bgcolor="<%=value_c%>">조회수</td>
<td align="center" width="125"> <%=article.getReadcount()%></td>
</tr>
<tr height="40">
<td align="center" width="125" bgcolor="<%=value_c%>">작성자</td>
<td align="center" width="125"> <%=article.getWriter()%></td>
<td align="center" width="125" bgcolor="<%=value_c%>" >작성일</td>
<td align="center" width="125"> <%= sdf.format(article.getReg_date()) %></td>
</tr>
<tr height="30">
<td align="center" width="125" bgcolor="<%=value_c%>">글제목</td>
<td align="center" width="375" colspan="3"> <%=article.getSubject()%></td>
</tr>
<tr height="40">
<td align="center" width="125" bgcolor="<%=value_c%>">글내용</td>
<td align="left" width="375" colspan="3"><pre><%=article.getContent()%></pre></td>
</tr>
<tr>
<td colspan="4" align="center" height="30">
<input type="button" value="글수정" onclick="location.href='updateForm.jsp?num=<%=article.getNum()%>&pageNum=<%=pageNum%>'">
<input type="button" value="글삭제" onclick="location.href='deleteForm.jsp?num=<%=article.getNum()%>&pageNum=<%=pageNum%>'">
<input type="button" value="답글쓰기"
onclick="location.href='replyForm.jsp?ref=<%=article.getRef()%>&re_step=<%=article.getRe_step()%>&re_level=<%=article.getRe_level()%>'">
<input type="button" value="글목록" onclick="location.href='list.jsp?pageNum=<%=pageNum%>'">
</tr>
</table>
</form>
6.writeForm.jsp(원글 작성)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@include file="color.jsp"%>
<style type="text/css">
body{
text-align: center;
}
table{
margin: auto;
}
</style>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="script.js"></script>
writeForm.jsp<br>
<body bgcolor="<%=bodyback_c%>">
<b>글쓰기</b> <br>
<form method="post" name="writeform" action="writePro.jsp" onsubmit="return writeSave()">
<table width="430" border="1" cellspacing="0" cellpadding="0"
bgcolor="<%=bodyback_c%>" align="center">
<tr>
<td align="right" colspan="2" bgcolor="<%=value_c%>">
<a href="list.jsp"> 글목록</a>
</td>
</tr>
<tr>
<td width="100" bgcolor="<%=value_c%>" align="center">이 름</td>
<td width="330" align="left">
<input type="text" size="30" maxlength="10" name="writer"
value="홍길동"></td>
</tr>
<tr>
<td width="100" bgcolor="<%=value_c%>" align="center">제 목</td>
<td width="330" align="left">
<input type="text" size="50" maxlength="50" name="subject"
value="어떤글">
</td>
</tr>
<tr>
<td width="100" bgcolor="<%=value_c%>" align="center">Email</td>
<td width="330" align="left">
<input type="text" size="50" maxlength="30" name="email"
value="aa@xx.com"></td>
</tr>
<tr>
<td width="100" bgcolor="<%=value_c%>" align="center">내 용</td>
<td width="330" align="left">
<textarea name="content" id="abc" rows="13" cols="50">호호호</textarea>
</td>
</tr>
<tr>
<td width="100" bgcolor="<%=value_c%>" align="center">비밀번호</td>
<td width="330" align="left">
<input type="password" size="10" maxlength="12" name="passwd"
value="1234">
</td>
</tr>
<tr>
<td colspan=2 bgcolor="<%=value_c%>" align="center" height="30">
<input type="submit" value="글쓰기">
<input type="reset" value="다시작성">
<input type="button" value="목록보기"
OnClick="window.location='list.jsp'">
</td>
</tr>
</table>
</form>
7.writePro.jsp(작성 처리)
<%@page import="java.sql.Timestamp"%>
<%@page import="board.BoardDao"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
writePro.jsp<br>
<%request.setCharacterEncoding("UTF-8"); %>
<jsp:useBean id="bb" class="board.BoardBean"/>
<jsp:setProperty property="*" name="bb"/>
<%
BoardDao bdao=BoardDao.getInstance();
bb.setReg_date(new Timestamp(System.currentTimeMillis()));
bb.setIp(request.getRemoteAddr());
int result = bdao.insertArticle(bb);
String msg;
String url;
if(result>0){
msg="삽입성공";
url="list.jsp";
} else{
msg="삽입실패";
url="writeForm.jsp";
}
%>
<script>
alert("<%=msg%>");
location.href="<%=url%>";
</script>
8.updateForm.jsp(수정하기)
<%@page import="board.BoardDao"%>
<%@page import="board.BoardBean"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
content.jsp => updateForm.jsp<br>
<%
BoardDao bdao=BoardDao.getInstance();
String num=request.getParameter("num");
BoardBean bb=bdao.updateGetArticle(num);
String pageNum=request.getParameter("pageNum");
%>
<%@include file="color.jsp"%>
<style type="text/css">
body{
text-align: center;
}
table{
margin: auto;
}
</style>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="script.js"></script>
writeForm.jsp<br>
<body bgcolor="<%=bodyback_c%>">
<b>글쓰기</b> <br>
<form method="post" name="writeform" action="updatePro.jsp" onsubmit="return writeSave()">
<input type="hidden" name="num" value="<%=bb.getNum()%>">
<input type="hidden" name="pageNum" value="<%=pageNum%>">
<table width="430" border="1" cellspacing="0" cellpadding="0"
bgcolor="<%=bodyback_c%>" align="center">
<tr>
<td align="right" colspan="2" bgcolor="<%=value_c%>">
<a href="list.jsp"> 글목록</a>
</td>
</tr>
<tr>
<td width="100" bgcolor="<%=value_c%>" align="center">이 름</td>
<td width="330" align="left">
<input type="text" size="30" maxlength="10" name="writer"
value="<%=bb.getWriter()%>"></td>
</tr>
<tr>
<td width="100" bgcolor="<%=value_c%>" align="center">제 목</td>
<td width="330" align="left">
<input type="text" size="50" maxlength="50" name="subject"
value="<%=bb.getSubject()%>">
</td>
</tr>
<tr>
<td width="100" bgcolor="<%=value_c%>" align="center">Email</td>
<td width="330" align="left">
<input type="text" size="50" maxlength="30" name="email"
value="<%=bb.getEmail()%>"></td>
</tr>
<tr>
<td width="100" bgcolor="<%=value_c%>" align="center">내 용</td>
<td width="330" align="left">
<textarea name="content" id="abc" rows="13" cols="50"><%=bb.getContent() %></textarea>
</td>
</tr>
<tr>
<td width="100" bgcolor="<%=value_c%>" align="center">비밀번호</td>
<td width="330" align="left">
<input type="password" size="10" maxlength="12" name="passwd"
value="">
</td>
</tr>
<tr>
<td colspan=2 bgcolor="<%=value_c%>" align="center" height="30">
<input type="submit" value="글쓰기">
<input type="reset" value="다시작성">
<input type="button" value="목록보기"
OnClick="window.location='list.jsp'">
</td>
</tr>
</table>
</form>
9.updatePro.jsp(수정처리)
<%@page import="board.BoardBean"%>
<%@page import="board.BoardDao"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
updatePro.jsp<br>
<%request.setCharacterEncoding("UTF-8"); %>
<jsp:useBean id="bb" class="board.BoardBean"/>
<jsp:setProperty property="*" name="bb"/>
<%
BoardDao bdao=BoardDao.getInstance();
String pageNum=request.getParameter("pageNum");
int result=bdao.updateArticle(bb);
System.out.println(pageNum);
String msg;
String url;
if(result>0){
msg="수정 완료";
url="list.jsp?pageNum="+pageNum;
} else if(result==-2){
msg="비밀번호가 틀렸습니다.";
url="updateForm.jsp?num="+bb.getNum()+"&pageNum="+pageNum;
} else {
msg="수정 실패.";
url="updateForm.jsp?num="+bb.getNum()+"&pageNum="+pageNum;
}
%>
<script type="text/javascript">
alert("<%=msg%>");
location.href="<%=url%>";
</script>
10.replyForm.jsp(답글 쓰기)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@include file="color.jsp"%>
<style type="text/css">
body{
text-align: center;
}
table{
margin: auto;
}
</style>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="script.js"></script>
replyForm.jsp<br>
<%
String ref=request.getParameter("ref");
String re_step=request.getParameter("re_step");
String re_level=request.getParameter("re_level");
System.out.println(ref);
System.out.println(re_step);
System.out.println(re_level);
%>
<body bgcolor="<%=bodyback_c%>">
<b>답글쓰기</b> <br>
<form method="post" name="writeform" action="replyPro.jsp" onsubmit="return writeSave()">
<input type="hidden" name="ref" value="<%=ref%>">
<input type="hidden" name="re_step" value="<%=re_step%>">
<input type="hidden" name="re_level" value="<%=re_level%>">
<table width="430" border="1" cellspacing="0" cellpadding="0"
bgcolor="<%=bodyback_c%>" align="center">
<tr>
<td align="right" colspan="2" bgcolor="<%=value_c%>">
<a href="list.jsp"> 글목록</a>
</td>
</tr>
<tr>
<td width="100" bgcolor="<%=value_c%>" align="center">이 름</td>
<td width="330" align="left">
<input type="text" size="30" maxlength="10" name="writer"
value="홍길동"></td>
</tr>
<tr>
<td width="100" bgcolor="<%=value_c%>" align="center">제 목</td>
<td width="330" align="left">
<input type="text" size="50" maxlength="50" name="subject"
value="[답글]어떤글">
</td>
</tr>
<tr>
<td width="100" bgcolor="<%=value_c%>" align="center">Email</td>
<td width="330" align="left">
<input type="text" size="50" maxlength="30" name="email"
value="aa@xx.com"></td>
</tr>
<tr>
<td width="100" bgcolor="<%=value_c%>" align="center">내 용</td>
<td width="330" align="left">
<textarea name="content" id="abc" rows="13" cols="50">호호호</textarea>
</td>
</tr>
<tr>
<td width="100" bgcolor="<%=value_c%>" align="center">비밀번호</td>
<td width="330" align="left">
<input type="password" size="10" maxlength="12" name="passwd"
value="1234">
</td>
</tr>
<tr>
<td colspan=2 bgcolor="<%=value_c%>" align="center" height="30">
<input type="submit" value="답글쓰기">
<input type="reset" value="다시작성">
<input type="button" value="목록보기"
OnClick="window.location='list.jsp'">
</td>
</tr>
</table>
</form>
11.replyPro.jsp(답글처리)
<%@page import="java.sql.Timestamp"%>
<%@page import="board.BoardDao"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
replyPro.jsp<br> <!-- 입력한 정보 5개+부모3가지+(작성일+ip부가로 생성) -->
<%request.setCharacterEncoding("UTF-8"); %>
<jsp:useBean id="bb" class="board.BoardBean"/>
<jsp:setProperty property="*" name="bb"/>
<%
BoardDao bdao=BoardDao.getInstance();
bb.setReg_date(new Timestamp(System.currentTimeMillis()));
bb.setIp(request.getRemoteAddr());
System.out.println("ref:"+bb.getRef());
System.out.println("re_level:"+bb.getRe_level());
System.out.println("re_step:"+bb.getRe_step());
int result = bdao.replyArticle(bb);
String msg;
String url;
if(result>0){
msg="삽입성공";
url="list.jsp";
} else{
msg="삽입실패";
url="replyForm.jsp?ref="+bb.getRef()+"&re_step="+bb.getRe_step()+
"&re_level="+bb.getRe_level();
}
%>
<script>
alert("<%=msg%>");
location.href="<%=url%>";
</script>
12.deleteForm.jsp(삭제하기)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
deleteForm.jsp<br>
<b>글삭제</b>
<%@include file="color.jsp"%>
<%
String num=request.getParameter("num");
String pageNum=request.getParameter("pageNum");
%>
<style type="text/css">
body{
text-align: center;
}
table{
margin: auto;
}
</style>
<script type="text/javascript">
function deleteCheck(){
if(document.myform.passwd.value==""){
alert('비밀번호를 입력하세요.');
document.myform.passwd.focus();
return false;
}
}
</script>
<form name="myform" method="post" action="deletePro.jsp" onsubmit="return deleteCheck()">
<input type="hidden" name="num" value="<%=num%>">
<input type="hidden" name="pageNum" value="<%=pageNum%>">
<table width="360" border="1" cellspacing="0" cellpadding="0"
bgcolor="<%=bodyback_c%>" align="center">
<tr>
<td colspan='4' align="center" height="40" bgcolor="<%=title_c%>"><b>비밀번호를 입력해 주세요.</b></td>
</tr>
<tr>
<td colspan='4' align="center" height="50" bgcolor="<%=value_c%>">비밀번호 : <input type="password" name="passwd"></td>
</tr>
<tr>
<td colspan='4' align="center" height="40" bgcolor="<%=title_c%>"><input type="submit" value="글삭제">
<input type="button" value="글목록" onclick="location.href='list.jsp?pageNum=<%=pageNum%>'"></td>
</tr>
</table>
</form>
13.deletePro.jsp(삭제처리)
<%@page import="board.BoardDao"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
deleteForm.jsp=>deletePro.jsp<br>
<%
String num=request.getParameter("num");
int pageNum=Integer.parseInt(request.getParameter("pageNum"));
String passwd=request.getParameter("passwd");
BoardDao bdao=BoardDao.getInstance();
int result= bdao.deleteArticle(num,passwd);
int count=bdao.getArticleCount();
int pageCount=count/10+(count%10==0 ? 0 : 1);
String msg;
String url;
if(result>0){
msg="삭제 완료";
if(pageCount<pageNum){
url="list.jsp?pageNum="+(pageNum-1);
} else {
url="list.jsp?pageNum="+pageNum;
}
} else if(result==-2){
msg="비밀번호가 틀렸습니다.";
url="deleteForm.jsp?num="+num+"&pageNum="+pageNum;
} else {
msg="삭제 실패.";
url="deleteForm.jsp?num="+num+"&pageNum="+pageNum;
}
%>
<script type="text/javascript">
alert("<%=msg%>");
location.href="<%=url%>";
</script>
14.color.jsp(css/style)
<%
String bodyback_c="#e0ffff";
String back_c="#8fbc8f";
String title_c="#5f9ea0";
String value_c="#b0e0e6";
String bar="#778899";
%>
15.script.js(무결성검사)
/**
* script.js
*/
function writeSave(){
if($('input[name=writer]').val()==""){
alert('이름을 입력하세요');
$('input[name=writer]').focus();
return false;
}
if($('input[name=subject]').val()==""){
alert('제목을 입력하세요');
$('input[name=subject]').focus();
return false;
}
if($('input[name=email]').val()==""){
alert('이메일을 입력하세요');
$('input[name=email]').focus();
return false;
}
if($('#abc').val()==""){
alert('내용을 입력하세요');
$('#abc').focus();
return false;
}
if($('input[name=passwd]').val()==""){
alert('비밀번호를 입력하세요');
$('input[name=passwd]').focus();
return false;
}
}
'Develop > JavaScript JQuery JSP' 카테고리의 다른 글
0808 JSP Servlet (0) | 2022.08.10 |
---|---|
0805 XML,EL,JSTL (0) | 2022.08.10 |
0720 JSP JDBC로 만든 칼럼 추가 삭제 (0) | 2022.07.22 |
0721 게시판의 구조 + ip주소 방식 설정 (0) | 2022.07.22 |
0720 JSP (0) | 2022.07.22 |