2013년 7월 13일 토요일

(130712) 15일차 Login.jsp 외 13개 (JSP를 이용한 게시판 관리 웹페이지)

 - Login.jsp (메인 - 로그인) 소스
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<center>
<h2> 로 그 인 </h2>
<form action = "LoginProc.jsp" method = "post">
  <table border = "1" bgcolor = "lightyellow" cellpadding = "5">
 
    <tr>
    <td> 아이디 </td>
    <td> <input type = "text" name = id> </td>
    </tr>
   
    <tr>
    <td> 비밀번호 </td>
    <td> <input type = "password" name = pass></td>
  </tr>
 
  <tr>
    <td colspan = "2" align = "center"> 
    <input type = "submit" value = "로그인">
    <input type = "button" value = "회원가입" onclick = "window.location='MemberJoin.jsp'"> </td>
    </tr>
  </table>
  </form>
</center>
</body>
</html>


 - MemberJoin.jsp (회원가입) 소스

<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<center>
<h2> 회 원 가 입 </h2>
<form action = "MemberJoinProc.jsp" method = "post">
  <table border = "1" bgcolor = "lightyellow" cellpadding = "5">
 
    <tr>
    <td> 아이디 </td>
    <td> <input type = "text" name = id> </td>
    <td colspan = "2" align = "right"><b> *10자이내 </b> </td>
    </tr>
   
    <tr>
    <td> 비밀번호 </td>
    <td> <input type = "password" name = pass></td>
    <td> 성명 </td>
    <td> <input type = "text" name = "name"></td>
  </tr>
 
    <tr>
    <td> 성별 </td>
    <td><input type = "radio" name = "gender" value = "남"> 남
    <input type = "radio" name = "gender" value = "여"> 여 </td>
    <td> 취미 </td>
    <td><input type = "checkbox" name = "hobby1" value = "음악감상"> 음악감상 
    <input type = "checkbox" name = "hobby2" value = "영화감상"> 영화감상 </td>
    </tr>
   
    <tr>
    <td> 주소 </td>
    <td> <input type = "text" name = "address"> </td>
    <td> 이메일 </td>
    <td> <input type = "text" name = "email"> </td>
    </tr>
   
<tr>
    <td> H.P </td>
    <td> <select name = "phone1">
<option value = "010"> 010 </option>
      <option value = "011"> 011 </option>
      <option value = "070"> 070 </option>
    </select> 
    &nbsp; - &nbsp; <input type = "text" name = "phone2" size = "4">
      &nbsp; - &nbsp; <input type = "text" name = "phone3" size = "4"> </td>
     
<td colspan = "2" align = "right"> <b>*필수입력 </b> </td>
</tr>

<tr>
    <td> 자기소개 </td>
    <td colspan = "3">
    <textarea cols = "50" rows = "3" name = "introduce"></textarea> </td>
    </tr>
   
    <tr>
    <td colspan = "4" align = "center"> 
    <input type = "submit" value = "전송">
    <input type = "reset" value = "취소"> </td>
    </tr>
  </table>

 </form>
</center>
</body>
</html>


 - MemberJoinProc.jsp (회원가입 프로시져) 소스

<%@page import="member.MemberDao"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<% request.setCharacterEncoding("euc-kr"); %>
<!-- 빈클래스 생성 -->
<jsp:useBean id = "mbean" class = "member.MemberBean"> </jsp:useBean>
<!-- 빈클래스에 데이터를 추가 -->
<jsp:setProperty property = "*" name = "mbean"/>
  
  <!-- 데이터를 추가 -->
  <%
MemberDao mdao = new MemberDao();
 
  // 데이터를 추가하는 메소드 호출
mdao.insertMember(mbean);

  // 데이터를 추가 후 제어권을 MemberList로 넘겨줌
response.sendRedirect("Login.jsp");
%>
</body>
</html>


 - MemberBean.java (회원가입 Bean) 소스

package member;

public class MemberBean {

// form 데이터의 name과 똑같은 이름의 멤버변수를 만듬
private String id;
private String pass;
private String name;
private String gender;
private String hobby1;
private String hobby2;
private String address;
private String email;
private String phone1;
private String phone2;
private String phone3;
private String introduce;

public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getHobby1() {
return hobby1;
}
public void setHobby1(String hobby1) {
this.hobby1 = hobby1;
}
public String getHobby2() {
return hobby2;
}
public void setHobby2(String hobby2) {
this.hobby2 = hobby2;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone1() {
return phone1;
}
public void setPhone1(String phone1) {
this.phone1 = phone1;
}
public String getPhone2() {
return phone2;
}
public void setPhone2(String phone2) {
this.phone2 = phone2;
}
public String getPhone3() {
return phone3;
}
public void setPhone3(String phone3) {
this.phone3 = phone3;
}
public String getIntroduce() {
return introduce;
}
public void setIntroduce(String introduce) {
this.introduce = introduce;
}

}


 - MemberDao.java (회원가입 JDBC) 소스
package member;

import java.sql.*;
import java.util.Vector;

public class MemberDao {

String url="jdbc:oracle:thin:@127.0.0.1:1521:XE";
String id="system";
String pass="123456";
Connection con;
PreparedStatement pstmt;
ResultSet rs;

// 데이터 베이스에 접근하는 메소드 
public void con(){
try {
// 1.어느 데이터 베이스를 사용할건지를 설정 
Class.forName("oracle.jdbc.driver.OracleDriver");
// 2.실제 데이터 베이스에 접근하기위한 소스를 작성 == 접속완료되면 커넥션을 리턴
con = DriverManager.getConnection(url, id, pass); 

}catch(Exception e){
e.printStackTrace();
}
}

// 로그인 시 권한 검사를 위한 메소드
public int login(String id, String pw) {
con();
try{
String sql = "select pass from member where id=?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
rs = pstmt.executeQuery();
if(!rs.next())
return 1;
if(rs.getString(1).equals(pw))  
return 0;  

pstmt.close();
rs.close();
con.close();
}
catch(Exception e) {
e.printStackTrace();
}
return 2;
}


// 맴버 데이터를 저장하는 메소드
public void insertMember(MemberBean mbean){
// 데이터 베이스에 접근
this.con();
// 쿼리준비
String sql ="insert into member values(?,?,?,?,?,?,?,?,?,?,?,?)";
// 쿼리 실행객체 준비
try {
pstmt = con.prepareStatement(sql);
// ?에 데이터 입력
pstmt.setString(1, mbean.getId());
pstmt.setString(2, mbean.getPass());
pstmt.setString(3, mbean.getName());
pstmt.setString(4, mbean.getGender());
pstmt.setString(5, mbean.getHobby1());
pstmt.setString(6, mbean.getHobby2());
pstmt.setString(7, mbean.getAddress());
pstmt.setString(8, mbean.getEmail());
pstmt.setString(9, mbean.getPhone1());
pstmt.setString(10, mbean.getPhone2());
pstmt.setString(11, mbean.getPhone3());
pstmt.setString(12, mbean.getIntroduce());

// 쿼리를 실행 하시오
pstmt.executeUpdate();
// 자원 반납
pstmt.close();
con.close();

} catch (SQLException e) {
e.printStackTrace();
}
}

// 모든 회원에 대한 가져오는 메소드
public Vector<MemberBean> getAllMember(){
Vector<MemberBean> vector = new Vector<>();
MemberBean bean;
try {
// 커넥션 연결
this.con();
// 쿼리 준비
String sql = "select * from member order by num";
// 쿼리 실행
pstmt = con.prepareStatement(sql);
// 쿼리 실행후 결과를 resultset이 받아줌
rs =pstmt.executeQuery();
// 반복문을 이용하여 데이터를 빈클래스에 담은후에 그빈 클래스를 백터에 저장
while(rs.next()){
bean = new MemberBean();
bean.setId(rs.getString(1));
bean.setPass(rs.getString(2));
bean.setName(rs.getString(3));
bean.setGender(rs.getString(4));
bean.setHobby1(rs.getString(5));
bean.setHobby2(rs.getString(6));
bean.setAddress(rs.getString(7));
bean.setEmail(rs.getString(8));
bean.setPhone1(rs.getString(9));
bean.setPhone2(rs.getString(10));
bean.setPhone3(rs.getString(11));
bean.setIntroduce(rs.getString(12));
// 빈클래스에 담은 데이터를 백터에 추가
vector.add(bean);
}
con.close();
pstmt.close();
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
return vector;
}

// 한사람의 대한 정보를 모두 얻어오는 메소드
public MemberBean getOneMember(String id){

MemberBean bean=null; // 리턴하기위해서 필요한 객체- 한사람의 정보가 저장되는 클래스
try {
// 커넥션연결
this.con();
// 쿼리 준비
String sql ="select * from member where id=?";
// 쿼리를 실행시킬 객체 선언
pstmt = con.prepareStatement(sql);
// ?에 값을 입력
pstmt.setString(1, id);

// 쿼리 실행후 데이터를 리턴 받음
rs = pstmt.executeQuery();

while(rs.next()){
bean = new MemberBean();
bean.setId(rs.getString(1));
bean.setPass(rs.getString(2));
bean.setName(rs.getString(3));
bean.setGender(rs.getString(4));
bean.setHobby1(rs.getString(5));
bean.setHobby2(rs.getString(6));
bean.setAddress(rs.getString(7));
bean.setEmail(rs.getString(8));
bean.setPhone1(rs.getString(9));
bean.setPhone2(rs.getString(10));
bean.setPhone3(rs.getString(11));
bean.setIntroduce(rs.getString(12));
}
con.close();
pstmt.close();
rs.close();
} catch (Exception e) {
}
return bean;
}

// 회원 정보 수정
public void updateMember(String id , String address, String email){
try {
con();
// 쿼리준비
String sql="update member set address=?, email=? where id=?";
// 커리를 실행할수 있는 객체 생성
pstmt = con.prepareStatement(sql);
pstmt.setString(1, address);
pstmt.setString(2, email);
pstmt.setString(3, id);

// 커리 실행
pstmt.executeUpdate();

pstmt.close();
con.close();
} catch (Exception e) {
}
}

// 회원 정보 삭제
public void deleteMember(String id){
try {
con();
// 쿼리준비
String sql="delete from member where id=?";
// 커리를 실행할수 있는 객체 생성
pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
// 커리 실행
pstmt.executeUpdate();

pstmt.close();
con.close();
} catch (Exception e) {
}
}
}


 - LogicProc.jsp (로그인 권한 검사) 소스
<%@page import="member.MemberBean"%>
<%@page import="member.MemberDao"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>

<% request.setCharacterEncoding("euc-kr"); %>
<!-- 빈클래스 생성 -->
  <jsp:useBean id = "mbean" class = "member.MemberBean"></jsp:useBean>
  <!-- 빈클래스에 데이터를 추가 -->
  <jsp:setProperty property = "*" name = "mbean"/>
 
<%
String id = request.getParameter("id");
String pass = request.getParameter("pass");

// Dao클래스에 있는 한사람에대한 정보를 얻어오는 메소드를 작성
MemberDao mdao = new MemberDao();
int result = mdao.login(id, pass);
if(result == 0){ // 아이디와 비밀번호 일치
session.setAttribute("name", id); // id를 세션에 name으로 저장
session.setAttribute("pass", pass);
response.sendRedirect("ContentList.jsp"); // 게시판 리스트로 보냄
}
else if(result == 1){
%>
<script type="text/javascript">
alert("아이디를 다시 확인해 주십시오.");
history.go(-1); // -1은 이전페이지로 이동하라는 의미
</script>
<%
}
else{
%>
<script type="text/javascript">
alert("비밀번호를 다시 확인해 주십시오.");
history.go(-1); // -1은 이전페이지로 이동하라는 의미
</script>
<%
}
%>
</body>
</html>


 - ContentList.jsp (게시판 리스트) 소스
<%@page import="board.BoardBean"%>
<%@page import="java.util.Vector"%>
<%@page import="board.BoardDao"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<center>
<h2> 게 시 판 </h2>
<form action = "ContentWrite.jsp" method = "post">
<table border = "1" width = "700" bgcolor = "lightyellow" cellpadding = "5">
<tr>
<th width = "50"> 번호 </th>
<th width = "100"> 작성자 </th>
<th width = "350"> 글제목 </th>
<th width = "100"> 날짜 </th>
<th width = "100"> 조회수 </th>
</tr>
<%
BoardDao bdao = new BoardDao();
Vector<BoardBean> vector = new Vector();
vector = bdao.getAllBoard(); // board DB의 모든 게시판 정보를 가져옴
// 게시판 빈클래스 선언
BoardBean bean = new BoardBean();
for(int i = 0 ; i < vector.size() ; i++){
// 백터에 담긴 BoardBean 클래스를 추출
bean = vector.get(i);
%>
<tr>
<td width = "50"> <a href = "ContentInfo.jsp?num=<%=bean.getNum()%>"> <%=bean.getNum()%> </a></td>
<td width = "100"> <%=bean.getUname()%> </td>
<td width = "300"> <%=bean.getBname()%> </td>
<td width = "100"> <%=bean.getBdate()%> </td>
    <td width = "100"> <%=bean.getTotal()%></td></tr>
    <%   
    }
    %>
    <tr>
<td colspan = "7" align = "right">
<input type = "submit" value = "글쓰기">
<input type = "button" value = "로그아웃" onclick = "window.location.replace('Login.jsp')"> </td>
</tr>
</table>
</form>
</center>
</body>
</html>


 - BoardBean.java (게시판 Bean) 소스
package board;

public class BoardBean {
private int num;
private String uname;
private String bname;
private String btext;
private String bdate;
private int total;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getBname() {
return bname;
}
public void setBname(String bname) {
this.bname = bname;
}
public String getBtext() {
return btext;
}
public void setBtext(String btext) {
this.btext = btext;
}
public String getBdate() {
return bdate;
}
public void setBdate(String bdate) {
this.bdate = bdate;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
}


 - BoardDao.java (게시판 JDBC) 소스
package board;

import java.sql.*;
import java.util.Vector;

public class BoardDao {

String url="jdbc:oracle:thin:@127.0.0.1:1521:XE";
String id="system";
String pass="123456";
Connection con;
PreparedStatement pstmt;
ResultSet rs;

// 데이터 베이스에 접근하는 메소드 
public void con(){
try {
// 1.어느 데이터 베이스를 사용할건지를 설정 
Class.forName("oracle.jdbc.driver.OracleDriver");
// 2.실제 데이터 베이스에 접근하기위한 소스를 작성 == 접속완료되면 커넥션을 리턴
con = DriverManager.getConnection(url, id, pass); 

}catch(Exception e){
e.printStackTrace();
}
}

// 게시판 데이터를 저장하는 메소드
public void insertBoard(BoardBean bbean){
// 데이터 베이스에 접근
this.con();
// 쿼리준비
String sql ="insert into board values(seq_inc.nextval,?,?,?,?,0)"; // 게시판 번호가 자동으로 1씩 증가하도록 시퀀스 적용
// 쿼리 실행객체 준비
try {
pstmt = con.prepareStatement(sql);
// ?에 데이터 입력
pstmt.setString(1, bbean.getUname());
pstmt.setString(2, bbean.getBname());
pstmt.setString(3, bbean.getBtext());
pstmt.setString(4, bbean.getBdate());

// 쿼리를 실행 하시오
pstmt.executeUpdate();
// 자원 반납
pstmt.close();
con.close();

} catch (SQLException e) {
e.printStackTrace();
}
}

// 모든 게시판에 대한 가져오는 메소드
public Vector<BoardBean> getAllBoard(){
Vector<BoardBean> vector = new Vector<>();
BoardBean bean;
try {
// 커넥션 연결
this.con();
// 쿼리 준비
String sql = "select * from board";
// 쿼리 실행
pstmt = con.prepareStatement(sql);
// 쿼리 실행후 결과를 resultset이 받아줌
rs =pstmt.executeQuery();
// 반복문을 이용하여 데이터를 빈클래스에 담은후에 그빈 클래스를 백터에 저장
while(rs.next()){
bean = new BoardBean();
bean.setNum(rs.getInt(1));
bean.setUname(rs.getString(2));
bean.setBname(rs.getString(3));
bean.setBtext(rs.getString(4));
bean.setBdate(rs.getString(5));
bean.setTotal(rs.getInt(6));
// 빈클래스에 담은 데이터를 백터에 추가
vector.add(bean);
}
con.close();
pstmt.close();
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
return vector;
}

// 한사람의 대한 정보를 모두 얻어오는 메소드
public BoardBean getOneBoard(int num){
BoardBean bean = null; // 리턴하기위해서 필요한 객체- 한 게시물에 대한 정보가 저장되는 클래스
// 커넥션연결
this.con();
try {
//쿼리 준비
String sql ="select * from board where num=?";
//쿼리를 실행시킬 객체 선언
pstmt = con.prepareStatement(sql);
//?에 값을 입력
pstmt.setInt(1, num);

//쿼리 실행후 데이터를 리턴 받음
rs = pstmt.executeQuery();

while(rs.next()){
bean = new BoardBean();
bean.setNum(rs.getInt(1));
bean.setUname(rs.getString(2));
bean.setBname(rs.getString(3));
bean.setBtext(rs.getString(4));
}
con.close();
pstmt.close();
rs.close();
} catch (Exception e) {
}
return bean;
}

// 게시판 정보 수정 (해당 아이디와 일치하지 않으면 수정 불가)
public boolean updateBoard(int num, String bname, String btext, String id){
try {
con();
// 쿼리준비
String sql = "select uname from board where num=?";
// 커리를 실행할수 있는 객체 생성
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, num);
// 커리 실행
rs = pstmt.executeQuery();

rs.next();
if(rs.getString(1).equals(id)){
sql = "update board set bname=?, btext=? where num=?";
// 커리를 실행할수 있는 객체 생성
pstmt = con.prepareStatement(sql);
pstmt.setString(1, bname);
pstmt.setString(2, btext);
pstmt.setInt(3, num);

// 커리 실행
pstmt.executeUpdate();
pstmt.close();
con.close();
rs.close();
return true;
}
pstmt.close();
con.close();
rs.close();
} catch (Exception e) {
}
return false;
}

// 게시판 정보 삭제 (해당 아이디와 일치하지 않으면 삭제 불가)
public boolean deleteBoard(int num, String id){
try {
con();
//쿼리준비
String sql = "select uname from board where num=?";
//커리를 실행할수 있는 객체 생성
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, num);
//커리 실행
rs = pstmt.executeQuery();

rs.next();
if(rs.getString(1).equals(id)){
sql = "delete from board where num=?";
// 커리를 실행할수 있는 객체 생성
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, num);
// 커리 실행
pstmt.executeUpdate();
pstmt.close();
con.close();
rs.close();
return true;
}
pstmt.close();
con.close();
rs.close();

} catch (Exception e) {
}
return false;
}

// 조회수를 증가시키기 위한 메소드
public void increaseTotal (int num){
con();
try{
// 현재 선택된 게시글 번호의 조회수를 가져옴
String sql = "select total from board where num=?";
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, num);
rs = pstmt.executeQuery();
rs.next();
int total = rs.getInt(1); // 가져온 조회수를 변수에 넣음

// 해당 게시글 번호의 조회수를 수정
sql = "update board set total=? where num=?";
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, total+1); // 1 증가시켜서 수정
pstmt.setInt(2, num);
pstmt.executeUpdate();

pstmt.close();
con.close();
} catch (Exception e) {
}
}
}

 - ContentInfo.jsp (게시판 정보) 소스
<%@page import="board.BoardBean"%>
<%@page import="board.BoardDao"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<center>
<h2> 게 시 판 정 보 </h2>
<%
BoardDao bdao = new BoardDao();
// 게시판 빈클래스 선언
BoardBean board = new BoardBean();
int num = Integer.parseInt(request.getParameter("num"));
board = bdao.getOneBoard(num); // 하나의 게시판에대한 정보를 가져옴

// 조회수를 증가시킴
bdao.increaseTotal(num);
%>
<form action = "ContentUpdate.jsp" method = "post">
<table border = "1" width = "500" height = "380" bgcolor = "lightyellow" cellpadding = "5">
<tr>
<th width = "100"> 글번호 </th>
<td width = "250"> <input type = "text" size = "40" name = "num" value = "<%=board.getNum()%>" disabled> </td>
</tr>
<tr>
<th width = "100"> 작성자 </th>
<td width = "250"> <input type = "text" size = "40" name = "uname" value = "<%=board.getUname()%>" disabled> </td>
</tr>
<tr>
<th width = "100"> 글제목 </th>
<td width = "250"> <input type = "text" size = "40" name = "bname" value = "<%=board.getBname()%>"> </td>
</tr>
<tr>
<th width = "100"> 내용 </th>
<td width = "250"> <textarea cols = "40" rows = "10" name = "btext"><%=board.getBtext()%></textarea> </td>
</tr>
</table>

<table border = "0" width = "250" cellpadding = "5">
<tr>
<td> <input type = "submit" value = "글수정"> </td>
<td> <input type = "button" value = "글삭제" onclick = "window.location='ContentDelete.jsp?num=<%=board.getNum()%>'"> </td>
<td> <input type = "button" value = "글쓰기" onclick = "window.location='ContentWrite.jsp?num=<%=board.getNum()%>'"> </td>
<td> <input type = "button" value = "목록" onclick = "window.location.replace('ContentList.jsp')"> </td>
</tr>
</table>
<input type = "hidden" name="num2" value="<%=board.getNum()%>">
</form>
</center>
</body>
</html>


 - ContentUpdate.jsp (게시글 수정) 소스
<%@page import="board.BoardDao"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("euc-kr");
int num = Integer.parseInt(request.getParameter("num2"));
String id = session.getAttribute("name").toString();
String bname = request.getParameter("bname");
String btext = request.getParameter("btext");

// 디비 연결객체 생성
BoardDao bdao = new BoardDao();
// 게시판 글을 수정하는 메소드 호출

if(bdao.updateBoard(num, bname, btext, id)) // 아이디가 일치하면 수정 후
response.sendRedirect("ContentList.jsp"); // 게시판 리스트로 보냄

else{
%>
<script type="text/javascript">
alert("수정 권한이 없습니다.");
history.go(-1); // -1은 이전페이지로 이동하라는 의미
</script>
<%
}
%>
</body>
</html>


 - ContentDelete.jsp (게시글 삭제) 소스
<%@page import="board.BoardDao"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("euc-kr");
int num = Integer.parseInt(request.getParameter("num"));
String id = session.getAttribute("name").toString();


// 디비 연결객체 생성
BoardDao bdao = new BoardDao();
// 테이블 삭제
if(bdao.deleteBoard(num, id)) // 아이디가 일치하면 삭제 후
response.sendRedirect("ContentList.jsp"); // 게시판 리스트로 보냄

else{
%>
<script type="text/javascript">
alert("삭제 권한이 없습니다.");
history.go(-1); // -1은 이전페이지로 이동하라는 의미
</script>
<%
}
%>
</body>
</html>


 - ContentWrite.jsp (게시글 쓰기) 소스
<%@page import="board.BoardBean"%>
<%@page import="board.BoardDao"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<center>
<h2> 글 쓰 기 </h2>

<form action = "ContentWriteProc.jsp" method = "post">
<table border = "1" width = "500" height = "350" bgcolor = "lightyellow" cellpadding = "5">
<tr>
<th width = "100"> 글 제목 </th>
<td width = "250"> <input type = "text" size = "40" name = "bname"> </td>
</tr>
<tr>
<th width = "100"> 글 내용 </th>
<td width = "250"> <textarea cols = "40" rows = "16" name = "btext"></textarea> </td>
</tr>
</table>

<table border = "0" width = "150" cellpadding = "5">
<tr>
<td> <input type = "submit" value = "글쓰기"> </td>
<td> <input type = "button" value = "목록" onclick = "window.location.replace('ContentList.jsp')"> </td>
<td> <input type = "reset" value = "취소"> </td>
</tr>
</table>
</form>
</center>
</body>
</html>


 - ContentWriteProc.jsp (게시글 쓰기 프로시저) 소스
<%@page import="java.util.Date"%>
<%@page import="java.util.Calendar"%>
<%@page import="board.BoardBean"%>
<%@page import="board.BoardDao"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<% request.setCharacterEncoding("euc-kr"); %>
<!-- 빈클래스 생성 -->
  <jsp:useBean id = "bbean" class = "board.BoardBean"></jsp:useBean>
  <!-- 빈클래스에 데이터를 추가 -->
  <jsp:setProperty property = "*" name = "bbean"/>
 
  <!-- 데이터를 추가 -->
  <%
BoardDao bdao = new BoardDao();

String id = session.getAttribute("name").toString();

Calendar cal = Calendar.getInstance(); // 게시글 날짜를 위한 메소드 호출
java.sql.Date date = new java.sql.Date(cal.getTimeInMillis());
 
bbean.setUname(id); // Session으로 받아온 게시자 저장
bbean.setBdate(date.toString()); // 게시글 날짜 저장

  // 게시글 데이터를 추가하는 메소드 호출
bdao.insertBoard(bbean);

  // 데이터를 추가 후 제어권을 ContentList로 넘겨줌
response.sendRedirect("ContentList.jsp");
%>
</body>
</html>


 - 결과