Project 0702.zip



프로시져 추가

CREATE PROCEDURE selectOne

(

IN v_idx INTEGER

    )

    BEGIN

    SELECT idx,name,email,title,contents,writedate,

    readcount, filename

    FROM Gesipan

    WHERE idx= v_idx;

END

프로시져 추가(조회수증가)

CREATE PROCEDURE updateReadCount

(

IN v_idx INTEGER

)

BEGIN

UPDATE Gesipan

SET readcount = readcount +1

WHERE idx = v_idx;

END

프로시져 추가(댓글 업데이트)

CREATE PROCEDURE replyUpdate

(

IN v_grp INTEGER,

    IN v_step INTEGER

)

BEGIN

UPDATE Gesipan SET step = step + 1

    WHERE grp = v_grp AND step > v_step;

END

프로시져 추가


게시판 페이징(ver샘)하고, 작성자에 링크걸고, 댓글 넣고, 삭제 전까지...

SelectService.java

package com.javasoft.libs.controller;


import java.sql.Connection;

import java.sql.SQLException;

import java.util.Vector;


import com.javasoft.libs.model.BoardDAO;

import com.javasoft.libs.model.BoardDTO;

import com.javasoft.libs.model.DBClose;

import com.javasoft.libs.model.DBConnection;

import com.javasoft.libs.model.GesipanDAO;

import com.javasoft.libs.model.GesipanDTO;

import com.javasoft.libs.model.MemberDAO;

import com.javasoft.libs.model.MemberDTO;

import com.javasoft.libs.model.ZipcodeDAO;

import com.javasoft.libs.model.ZipcodeDTO;


public class SelectService {

public MemberDTO getMember(String userid){

MemberDTO member = null;

Connection conn = null;

try {

conn = DBConnection.getConnection();

member = MemberDAO.getMember(conn, userid);

} catch (SQLException e) {

System.out.println(e.toString());

} finally{

DBClose.close(conn);

}

return member;

}

public String getUserName(String userid){

String name = null;

Connection conn = null;

try {

conn = DBConnection.getConnection();

name = MemberDAO.getUserName(conn, userid);

} catch (SQLException e) {

System.out.println(e.toString());

} finally{

DBClose.close(conn);

}

return name;

}

public int checkMember(String userid, String passwd) {

int number = 0;

Connection conn = null;

try {

conn = DBConnection.getConnection();

number = MemberDAO.memberLogin(conn, userid, passwd);

} catch (SQLException e) {

System.out.println(e.toString());

} finally{

DBClose.close(conn);

}

return number;

}

public boolean isMember(String userid){

boolean isExists = true;  

Connection conn = null;

try {

conn = DBConnection.getConnection();

isExists = MemberDAO.isMember(conn, userid);

} catch (SQLException e) {

System.out.println(e.toString());

} finally{

DBClose.close(conn);

}

return isExists;

}

public Vector<ZipcodeDTO> select(String keyword){

Vector<ZipcodeDTO> vector = null;

Connection conn = null;

try {

conn = DBConnection.getConnection();

vector = ZipcodeDAO.select(conn, keyword);

} catch (SQLException e) {

System.out.println(e.toString());

} finally{

DBClose.close(conn);

}

return vector;

}

/////////////////////////////Board////////////////////////////////

public int getPageCount(int pageSize){

Connection conn = null;

int pagecount = 0;

try {

conn = DBConnection.getConnection();

pagecount = BoardDAO.getPageCount(conn, pageSize);

} catch (SQLException e) {

System.out.println(e.toString());

} finally{

DBClose.close(conn);

}

return pagecount;

}

public Vector<BoardDTO> glist(int page, int pageSize){

Vector<BoardDTO> vector = null;

Connection conn = null;

try {

conn = DBConnection.getConnection();

vector = BoardDAO.list(conn, page, pageSize);

} catch (SQLException e) {

System.out.println(e.toString());

} finally{

DBClose.close(conn);

}

return vector;

}

public BoardDTO selectBoard(int num){

BoardDTO board = null;

Connection conn = null;

try {

conn = DBConnection.getConnection();

board = BoardDAO.selectBoard(conn, num);

} catch (SQLException e) {

System.out.println(e.toString());

} finally{

DBClose.close(conn);

}

return board;

}

////////////////////////Gesipan////////////////////////////

public Vector<GesipanDTO> list(){

Vector<GesipanDTO> vector = null;

Connection conn = null;

try {

conn = DBConnection.getConnection();

vector = GesipanDAO.selectAll(conn);

} catch (SQLException e) {

System.out.println(e.toString());

} finally{

DBClose.close(conn);

}

return vector;

}

public int getGesipanPageCount(int pageSize){

int pagecount = 0;

Connection conn = null;

try {

conn = DBConnection.getConnection();

pagecount = GesipanDAO.getGesipanPageCount(conn, pageSize);

} catch (SQLException e) {

System.out.println(e.toString());

} finally{

DBClose.close(conn);

}

return pagecount;

}

public GesipanDTO selectGesipan(int idx){

GesipanDTO gesipan = null;

Connection conn = null;

try {

conn = DBConnection.getConnection();

gesipan = GesipanDAO.selectOne(conn, idx);

} catch (SQLException e) {

System.out.println(e.toString());

} finally{

DBClose.close(conn);

}

return gesipan;

}

public String getPassword(int idx){

String password = null;

Connection conn = null;

try {

conn = DBConnection.getConnection();

password = GesipanDAO.getPassword(conn, idx);

} catch (SQLException e) {

System.out.println(e.toString());

} finally{

DBClose.close(conn);

}

return password;

}

}



InsertService.java

package com.javasoft.libs.controller;


import java.sql.Connection;

import java.sql.SQLException;


import com.javasoft.libs.model.BoardDAO;

import com.javasoft.libs.model.BoardDTO;

import com.javasoft.libs.model.DBClose;

import com.javasoft.libs.model.DBConnection;

import com.javasoft.libs.model.GesipanDAO;

import com.javasoft.libs.model.GesipanDTO;

import com.javasoft.libs.model.MemberDAO;

import com.javasoft.libs.model.MemberDTO;


public class InsertService {

public boolean boardInsert(BoardDTO board){

boolean flag = false;  

Connection conn = null;

try {

conn = DBConnection.getConnection();

flag = BoardDAO.boardInsert(conn, board);

} catch (SQLException e) {

System.out.println(e.toString());

} finally{

DBClose.close(conn);

}

return flag;

}

public boolean insert(MemberDTO member){

boolean flag = false;  

Connection conn = null;

try {

conn = DBConnection.getConnection();

flag = MemberDAO.insert(conn, member);

} catch (SQLException e) {

System.out.println(e.toString());

} finally{

DBClose.close(conn);

}

return flag;

}

public boolean insert(GesipanDTO gesipan){

boolean flag = false;

Connection conn = null;

try{

conn = DBConnection.getConnection();

flag = GesipanDAO.insert(conn, gesipan);

}catch(SQLException ex){

System.out.println(ex.toString());

}finally{

DBClose.close(conn);

}

return flag;

}

public boolean replyInsert(GesipanDTO gesipan){

boolean flag = false;

Connection conn = null;

try{

conn = DBConnection.getConnection();

flag = GesipanDAO.replyInsert(conn, gesipan);

}catch(SQLException ex){

System.out.println(ex.toString());

}finally{

DBClose.close(conn);

}

return flag;

}

}


UpdateService.java (조회수,댓글업데이트)

package com.javasoft.libs.controller;


import java.sql.Connection;

import java.sql.SQLException;


import com.javasoft.libs.model.DBClose;

import com.javasoft.libs.model.DBConnection;

import com.javasoft.libs.model.GesipanDAO;

import com.javasoft.libs.model.MemberDAO;

import com.javasoft.libs.model.MemberDTO;


public class UpdateService {

public boolean updateMember(MemberDTO member){

boolean flag = false;

Connection conn = null;

try {

conn = DBConnection.getConnection();

flag = MemberDAO.updateMember(conn, member);

} catch (SQLException e) {

System.out.println(e.toString());

} finally{

DBClose.close(conn);

}

return flag;

}

public boolean updateReadCount(int idx){

boolean flag = false;

Connection conn = null;

try {

conn = DBConnection.getConnection();

flag = GesipanDAO.updateReadCount(conn, idx);

} catch (SQLException e) {

System.out.println(e.toString());

} finally{

DBClose.close(conn);

}

return flag;

}

public void replyUpdate(int grp, int step){

Connection conn = null;

try {

conn = DBConnection.getConnection();

GesipanDAO.replyUpdate(conn, grp, step);

} catch (SQLException e) {

System.out.println(e.toString());

} finally{

DBClose.close(conn);

}

}

}



GesipanDAO.java

package com.javasoft.libs.model;


import java.sql.CallableStatement;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Vector;


public class GesipanDAO {

public static Vector<GesipanDTO> selectAll(Connection conn) 

throws SQLException{

Vector<GesipanDTO> vector = new Vector<GesipanDTO>(1,1);

String sql = "{call selectGesipan}";

CallableStatement cstmt = conn.prepareCall(sql);

ResultSet rs = cstmt.executeQuery();

if(!rs.next())  vector = null;

else{

do{

GesipanDTO gesipan = new GesipanDTO();

gesipan.setIdx(rs.getInt("idx"));

gesipan.setName(rs.getString("name"));

gesipan.setEmail(rs.getString("email"));

gesipan.setTitle(rs.getString("title"));

gesipan.setWritedate(String.valueOf(rs.getDate("writedate")));

gesipan.setReadcount(rs.getInt("readcount"));

gesipan.setFilename(rs.getString("filename"));

gesipan.setGrp(rs.getInt("grp"));

gesipan.setLev(rs.getInt("lev"));

gesipan.setStep(rs.getInt("step"));

vector.addElement(gesipan);

}while(rs.next());

}

if(rs != null) rs.close();

if(cstmt != null) cstmt.close();

return vector;

}

public static boolean insert(Connection conn, GesipanDTO gesipan)

throws SQLException{

boolean flag = false;

StringBuffer sb = new StringBuffer();

sb.append("INSERT INTO Gesipan(name, passwd, email, title,");

sb.append("contents, writedate, readcount, filename, grp, lev, step)  ");

sb.append("VALUES (?,?,?,?,?,CURRENT_DATE, 0, ?, 0,0,0)"); 

PreparedStatement pstmt = conn.prepareStatement(sb.toString());

pstmt.setString(1, gesipan.getName());

pstmt.setString(2, gesipan.getPasswd());

pstmt.setString(3, gesipan.getEmail());

pstmt.setString(4, gesipan.getTitle());

pstmt.setString(5, gesipan.getContents());

pstmt.setString(6, gesipan.getFilename());

int cnt = pstmt.executeUpdate();

if(cnt > 0) flag = true;

if(pstmt != null) pstmt.close();

String sql = "SELECT MAX(idx) FROM Gesipan";

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

rs.next();

int max = rs.getInt(1); //가장 큰 번호이자 방금 입력된 번호

if(rs != null) rs.close();

if(stmt != null) stmt.close();

sql = "UPDATE Gesipan SET grp = ? WHERE idx = ?";

pstmt = conn.prepareStatement(sql);

pstmt.setInt(1, max);

pstmt.setInt(2, max);

pstmt.executeUpdate();

if(pstmt != null) pstmt.close();

//conn.commit();

return flag;

}

public static int getGesipanPageCount(Connection conn, int pageSize)

throws SQLException{

int pagecount = 0;

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("SELECT COUNT(idx) FROM Gesipan");

rs.next();

int recordcount = rs.getInt(1);  //레코드 갯수

pagecount = (recordcount % pageSize == 0) ? recordcount / pageSize :

                                                             recordcount / pageSize + 1;

if(rs != null) rs.close();

if(stmt != null) stmt.close();

return pagecount;

}

public static GesipanDTO selectOne(Connection conn, int idx)

throws SQLException{

GesipanDTO gesipan = new GesipanDTO();

CallableStatement cstmt = conn.prepareCall("{call selectOne(?)}");

cstmt.setInt(1, idx);

ResultSet rs = cstmt.executeQuery();

rs.next();

gesipan.setName(rs.getString("name"));

gesipan.setEmail(rs.getString("email"));

gesipan.setTitle(rs.getString("title"));

gesipan.setWritedate(String.valueOf(rs.getDate("writedate")));

gesipan.setContents(rs.getString("contents"));

gesipan.setReadcount(rs.getInt("readcount"));

gesipan.setFilename(rs.getString("filename"));

if(rs != null) rs.close();

if(cstmt != null) cstmt.close();

return gesipan;

}

public static boolean updateReadCount(Connection conn, int idx)

throws SQLException {

boolean flag = false;

CallableStatement cstmt = conn.prepareCall("{call updateReadCount(?)}");

cstmt.setInt(1, idx);

int cnt = cstmt.executeUpdate();

if(cnt > 0) flag = true;

if(cstmt != null) cstmt.close();

return flag;

}

public static void replyUpdate(Connection conn, int grp, int step) 

throws SQLException{

CallableStatement cstmt = conn.prepareCall("{call replyUpdate(?,?)}");

cstmt.setInt(1, grp);

cstmt.setInt(2, step);

cstmt.executeUpdate();

if(cstmt != null) cstmt.close();

}

public static boolean replyInsert(Connection conn, GesipanDTO gesipan)

throws SQLException{

boolean flag = false;

StringBuffer sb = new StringBuffer();

sb.append("INSERT INTO Gesipan(name, passwd, email, title,");

sb.append("contents, writedate, readcount, filename, grp, lev, step)  ");

sb.append("VALUES (?,?,?,?,?,CURRENT_DATE, 0, ?, ?, ?, ?)"); 

PreparedStatement pstmt = conn.prepareStatement(sb.toString());

pstmt.setString(1, gesipan.getName());

pstmt.setString(2, gesipan.getPasswd());

pstmt.setString(3, gesipan.getEmail());

pstmt.setString(4, gesipan.getTitle());

pstmt.setString(5, gesipan.getContents());

pstmt.setString(6, gesipan.getFilename());

pstmt.setInt(7, gesipan.getGrp());

pstmt.setInt(8, gesipan.getLev());

pstmt.setInt(9, gesipan.getStep());

int cnt = pstmt.executeUpdate();

if(cnt > 0) flag = true;

if(pstmt != null) pstmt.close();

return flag;

}

public static String getPassword(Connection conn, int idx)

throws SQLException{

String password = null;

Statement stmt = conn.createStatement();

String sql = "SELECT passwd FROM Gesipan WHERE idx = " + idx;

ResultSet rs = stmt.executeQuery(sql);

rs.next();

password = rs.getString(1);

if(rs != null) rs.close();

if(stmt != null) stmt.close();

return  password;

}

}



list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<jsp:directive.page import="com.javasoft.libs.controller.SelectService" />

<jsp:directive.page import="com.javasoft.libs.model.GesipanDTO" />  

<jsp:directive.page import="java.util.Vector" />

<jsp:directive.page import="com.javasoft.libs.util.FileExtension" />  

<jsp:useBean id="ss" class="com.javasoft.libs.controller.SelectService" />


<%

String strPage = request.getParameter("page");

if(strPage == null) strPage = "1";

int current_page = Integer.parseInt(strPage);

int pageSize = 7;

int pageCount = ss.getGesipanPageCount(pageSize);

Vector<GesipanDTO> vector = ss.list();

%>

<!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=UTF-8">

<title>Welcome to Javasoft.com, inc.</title>

<link rel="stylesheet" type="text/css" href="../common/style.css">

</head>

<body topmargin="0">

<table width="760" height="100%" cellpadding="0" cellspacing="0" border="0" align="center">

<tr>

<td colspan="3" width="760" height="100">

<!--  top 시작 -->

<jsp:include page="../common/top_menu.jsp" />

</td>

</tr>

<tr width="760" height="520">

<td width="132" height="520" valign="top">

<!--  left 시작 -->

<jsp:include page="../common/left_menu.jsp" />

</td>

<td width="5" height="520">

</td>

<td width="620" height="520" class="main" valign="top">

<table width="620" cellpadding="0" cellspacing="0" border="0">

<tr>

<td>

<!-- main영역은 좌로부터 40px 더 들여서 한다. -->

<table cellpadding="0" cellspacing="0" border="0" style="margin-top:10px">

<tr>

<td width="20">&nbsp;</td>

<td>

     <!-- main 시작 -->

     <table border = '0' cellspacing = '0' cellpadding='0' width = '600'>

<caption><font color='blue' size='5'><b>게시판</b></font></caption>

<tr>

<td align='left'>[<a href="write.jsp">게시판쓰기</a>]</td>

<td align='right'><font size='3' color='orange'><b>(<%=current_page%>/<%=pageCount%>)</b></font></td>

</tr>

</table>

<table border = '1' bordercolor="white" cellspacing = '0' cellpadding='0' width = '600'>

<thead>

<tr height="40" bgcolor="black">

<th width="7%"><font size="2" color="white">번호</font></th>

<th width="15%"><font size="2" color="white">작성자</font></th>

<th width="46%"><font size="2" color="white">제목</font></th>

<th width="7%"><font size="2" color="white">파일</font></th>

<th width="15%"><font size="2" color="white">날짜</font></th>

<th width="10%"><font size="2" color="white">조회수</font></th>

</tr>

</thead>

<tbody>

<%

if(vector == null || vector.size() == 0){

%>

<tr>

<th colspan="6">글이 없습니다.</th>

</tr>

<% 

    }else{   //글이 있다면

    int start = (current_page - 1) * pageSize;

    int count = 0;      

    for(int i = start ; i < vector.size() && count < pageSize  ; i++){

    GesipanDTO gesipan = vector.get(i);

    int idx = gesipan.getIdx();

    int grp = gesipan.getGrp();

    int lev = gesipan.getLev();

    int step = gesipan.getStep();      

%>      

<tr height="40" onmouseover="this.style.backgroundColor='yellow';"

                       onmouseout="this.style.backgroundColor='white';">

<td align="center">

<% if(lev > 0){  //원본글이 아니라면 %>&nbsp;

<% }else{ //원본글이라면  %><%=grp %>

<% } %>

</td>

<td align="center">

<% 

String name = gesipan.getName();

String email = gesipan.getEmail();

%>

<a href="../mail/sendmail.jsp?email=<%=email %>&name=<%=name%>"><%=name %></a>

</td>

<td align="left">

<%

if(lev > 0){  //답글이라면

for(int j = 0 ; j < lev ; j++){

out.print("&nbsp;&nbsp;&nbsp;");

}

out.println("<img src='../images/re.jpg'>");

}

%>

<a href="view.jsp?idx=<%=idx%>&page=<%=current_page%>&grp=<%=grp%>&lev=<%=lev%>&step=<%=step%>"><%=gesipan.getTitle() %></a>

</td>

<td align="center">

<%

String filename = gesipan.getFilename();

String extension = null;

if(filename.equals("")){

%>

&nbsp;

<% }else{ 

extension = FileExtension.getExtension(filename);

%>

<img src="../images/<%=extension %>.jpg" width="20" height="20" />

<% } %>

</td>

<td align="center">

<%=gesipan.getWritedate() %>

</td>

<td align="center">

<%=gesipan.getReadcount() %>

</td>

</tr>

<%

    count++;

    } //for end

    } //if end

%>

</tbody>

</table>

<p>&nbsp;</p>

<p>&nbsp;</p>

<div style="text-align:center">

<%

out.print("[");

if(current_page == 1) out.print("이전");

else{

out.print("<a style='text-decoration:none' href='list.jsp?page=" + (current_page -1) + "'>");

out.print("이전</a>");

}

out.println("]");

out.println("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");

for(int i = 1 ; i <= pageCount ; i++){

if(i == current_page){

out.print("<span style='font-size:1.2em;color:red'>");

out.print(i + "</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");

}else{

out.print("<a style='text-decoration:none' href='list.jsp?page=" + i + "'>");

out.print(i);

out.print("</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");

}

}

out.print("[");

if(current_page == pageCount) out.print("다음");

else{

out.print("<a style='text-decoration:none' href='list.jsp?page=" + (current_page +1) + "'>");

out.print("다음</a>");

}

out.println("]");

%>

</div>

     <!-- main 끝 -->

</td>

<td width="40">&nbsp;</td>

</tr>

</table>

</td>

</tr>

</table>

</td>

</tr>

</table>

</body>

</html>


view.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<jsp:directive.page import="com.javasoft.libs.controller.SelectService" />

<jsp:directive.page import="com.javasoft.libs.controller.UpdateService" />

<jsp:directive.page import="com.javasoft.libs.model.GesipanDTO" />

<jsp:directive.page import="com.javasoft.libs.util.FileExtension" /> 

<jsp:useBean id="ss" class="com.javasoft.libs.controller.SelectService" />

<jsp:useBean id="us" class="com.javasoft.libs.controller.UpdateService" />

<%

int idx = Integer.parseInt(request.getParameter("idx"));

int current_page = Integer.parseInt(request.getParameter("page"));

int grp = Integer.parseInt(request.getParameter("grp"));

int lev = Integer.parseInt(request.getParameter("lev"));

int step = Integer.parseInt(request.getParameter("step"));

GesipanDTO gesipan = ss.selectGesipan(idx);

%>    

<!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=UTF-8">

<title>Welcome to Javasoft.com, inc.</title>

<link rel="stylesheet" type="text/css" href="../common/style.css">

</head>

<body topmargin="0">

<table width="760" height="100%" cellpadding="0" cellspacing="0" border="0" align="center">

<tr>

<td colspan="3" width="760" height="100">

<!--  top 시작 -->

<jsp:include page="../common/top_menu.jsp" />

</td>

</tr>

<tr width="760" height="520">

<td width="132" height="520" valign="top">

<!--  left 시작 -->

<jsp:include page="../common/left_menu.jsp" />

</td>

<td width="5" height="520">

</td>

<td width="620" height="520" class="main" valign="top">

<table width="620" cellpadding="0" cellspacing="0" border="0">

<tr>

<td>

<!-- main영역은 좌로부터 40px 더 들여서 한다. -->

<table cellpadding="0" cellspacing="0" border="0">

<tr>

<td width="40">&nbsp;</td>

<td>

     <!-- main 시작 -->

     <table border="0" cellspacing="0" cellpadding="0" width="580">

      <tr height="10"><td colspan="2">&nbsp;</td></tr>

      <tr height="50"><td colspan="2" class="bo1">게시판 글 내용 보기</td></tr>

      <tr>

      <td colspan="2" class="bo7">

      <table border="0" cellspacing="0" cellpadding="0" width="580">

      <tr height="30">

      <td width="150" class="bo8">작성자</td>

      <td width="430" class="bo9">

      <%

      String email = gesipan.getEmail();

      String name = gesipan.getName();

      %>

      <%=name %>(<a href="../mail/sendmail.jsp?email=<%=email%>&name=<%=name%>"><%=email %></a>)

      </td>

      </tr>

      <tr height="30">

      <td class="bo8">작성날짜</td>

      <td class="bo9"><%=gesipan.getWritedate() %></td>

      </tr>

      <tr height="30">

      <td class="bo8">조회수</td>

      <td class="bo9"><%=gesipan.getReadcount() %></td>

      </tr>

      <tr height="30">

      <td class="bo8">파일</td>

      <td class="bo9" valign="middle">

      <%

      String filename = gesipan.getFilename();      

      if(!filename.equals("")){

      String extension = FileExtension.getExtension(filename);

      %>

      <img src="../images/<%=extension %>.jpg" height="20" width="20"  valign="bottom" />

      &nbsp;<%=filename %>

      <% }else{ %>

      &nbsp;

      <% } %>

      </td>

      </tr>

      </table>

      </td>

      </tr>

      <tr height="25">

      <td colspan="2">&nbsp;</td>

      </tr>

      <tr height="25">

      <td colspan="2" class="bo"><%=gesipan.getTitle() %></td>

      </tr>

      <tr height="25">

      <td colspan="2" class="bo6-1"><%=gesipan.getContents() %></td>

      </tr>

      <tr height="30">

      <td colspan="2" align="right">

      <input type="button" value="댓글달기"

      onclick="location.href='reply.jsp?idx=<%=idx%>&page=<%=current_page%>&grp=<%=grp%>&lev=<%=lev%>&step=<%=step%>'"

      class="inputa" />

      <input type="button" value="수정하기" />

      <input type="button" value="삭제하기"

      onclick="location.href='delete.jsp?idx=<%=idx%>'"

      class="inputa" />

      <input type="button" value="목록으로" 

      onclick="location.href='list.jsp?page=<%=current_page %>';" 

      class="inputa" />

      </td>

      </tr>

     </table>

     <!-- main 끝 -->

</td>

<td width="40">&nbsp;</td>

</tr>

</table>

</td>

</tr>

</table>

</td>

</tr>

</table>

</body>

</html>

<%

boolean flag = us.updateReadCount(idx);

%>



reply.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<jsp:directive.page import="com.javasoft.libs.controller.SelectService" />

<jsp:directive.page import="com.javasoft.libs.model.GesipanDTO" />  

<jsp:useBean id="ss" class="com.javasoft.libs.controller.SelectService" />  

<%

int idx = Integer.parseInt(request.getParameter("idx"));

int current_page = Integer.parseInt(request.getParameter("page"));

int grp = Integer.parseInt(request.getParameter("grp"));

int lev = Integer.parseInt(request.getParameter("lev"));

int step = Integer.parseInt(request.getParameter("step"));

GesipanDTO gesipan = ss.selectGesipan(idx);

%>    

<!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=UTF-8">

<title>Welcome to Javasoft.com, inc.</title>

<link rel="stylesheet" type="text/css" href="../common/style.css">

<script type="text/javascript">

function confirm(){

var f = document.forms[0];

if(!f.name.value){

alert("작성자의 이름이 빠졌습니다.");

f.name.focus();

return false;

}

if(!f.passwd.value){

alert("패스워드가 빠졌습니다.");

f.passwd.focus();

return false;

}

if(f.email.value.indexOf("@") + "" == "-1" ||

f.email.value.indexOf(".") + "" == "-1" ||

f.email.value == ""){

alert("Email 을 다시 작성해 주세요");

f.email.focus();

return false;

}

if(!f.title.value){

alert("글 제목이 빠졌습니다.");

f.title.focus();

return false;

}

if(!f.contents.value){

alert("글 내용이 빠졌습니다.");

f.contents.focus();

return false;

}

f.submit();

}

</script>

</head>

<body topmargin="0">

<table width="760" height="100%" cellpadding="0" cellspacing="0" border="0" align="center">

<tr>

<td colspan="3" width="760" height="100">

<!--  top 시작 -->

<jsp:include page="../common/top_menu.jsp" />

</td>

</tr>

<tr width="760" height="520">

<td width="132" height="520" valign="top">

<!--  left 시작 -->

<jsp:include page="../common/left_menu.jsp" />

</td>

<td width="5" height="520">

</td>

<td width="620" height="520" class="main" valign="top">

<table width="620" cellpadding="0" cellspacing="0" border="0">

<tr>

<td>

<!-- main영역은 좌로부터 40px 더 들여서 한다. -->

<table cellpadding="0" cellspacing="0" border="0">

<tr>

<td width="40">&nbsp;</td>

<td>

     <!-- main 시작 -->

     <table border="0" cellspacing="0" cellpadding="0" width="595">

      <tr height="10"><td colspan="2">&nbsp;</td></tr>

      <tr height="50"><td colspan="2" class="bo1">게시판 답글 달기</td></tr>

     </table>

     <form action="reply_ok.jsp" method="post" enctype="multipart/form-data">

     <input type="hidden" name="idx" value="<%=idx %>"/>

     <input type="hidden" name="page" value="<%=current_page %>"/>

     <input type="hidden" name="grp" value="<%=grp %>"/>

     <input type="hidden" name="lev" value="<%=lev %>"/>

     <input type="hidden" name="step" value="<%=step %>"/>     

     <table border="0" width="600" bordercolor="#c0c0c0" cellpading="0" cellspacing="0" style="padding-top:10px">

      <tr>

      <td>      

      <table bordercolor="#c0c0c0" width="595" height="300" border="1" cellpading="0" cellspacing="0">

      <tr height="30" bgcolor="#f0f0f0">

      <td width="120" align="right">

      <font color="#000000"><b>작성자</b></font>

      </td>

      <td>

      <input type="text" name="name" maxlength="20" id="name" size="25">

      <font color='red'><b>*</b>필수</font>            

      </td>

      </tr>

      <tr height="30" bgcolor="#f0f0f0">

      <td width="120" align="right">

      <font color="#000000"><b>패스워드</b></font>

      </td>

      <td>

      <input type="password" name="passwd" maxlength="20" id="passwd" size="25">

      <font color='red'><b>*</b>필수</font>(글 수정 및 삭제에 필요)            

      </td>

      </tr>

      <tr height="30" bgcolor="#f0f0f0">

      <td width="120" align="right">

      <font color="#000000"><b>Email</b></font>

      </td>

      <td>

      <input type="text" name="email" maxlength="50" id="email" size="50">

      <font color='red'><b>*</b>필수</font>      

      </td>

      </tr>

      <tr height="30" bgcolor="#f0f0f0">

      <td width="120" align="right">

      <font color="#000000"><b>제목</b></font>

      </td>

      <td>

      <%

      String title = "Re:" + gesipan.getTitle();

      %>

      <input type="text" name="title" id="title" size="55" value="<%=title%>">

      <font color='red'><b>*</b>필수</font>      

      </td>

      </tr>

      <tr height="30" bgcolor="#f0f0f0">

      <td width="120" align="right">

      <font color="#000000"><b>내용</b></font>

      </td>

      <td>

      <%

      String contents = "\r\n\r\n\r\n\r\n\r\n---------------------------------------------------------";

         contents += "\r\n>>";

         contents += gesipan.getContents().replace("<br />", "\r\n>>");

         contents = contents.replace("''", "'");

         contents = contents.replace("&lt;", "<");

         contents = contents.replace("&gt;", ">");

      %>

      <textarea id="contents" name="contents" cols="55" rows="10"><%=contents %></textarea>

      <span style="color:red;font-weight:bold;vertical-align:top">*필수</span>

      </td>

      </tr>

      <tr height="30" bgcolor="#f0f0f0">

      <td width="120" align="right">

      <font color="#000000"><b>파일</b></font>

      </td>

      <td>

      <input type="file" name="filename" id="filename" size="60">      

      </td>

      </tr>      

      <tr height="30" bgcolor="#f0f0f0">

      <td colspan="2" align="center">

      <input type="button" value="답글하기" style='font-size:1.3em' onclick="confirm()">&nbsp;&nbsp;

      <input type="button" value="취소하기" style='font-size:1.3em' onclick="history.back()">

      </td>

      </tr>

      </table>

      </td>

      </tr>

      </table>

     </form>

     <!-- main 끝 -->

</td>

<td width="40">&nbsp;</td>

</tr>

</table>

</td>

</tr>

</table>

</td>

</tr>

</table>

</body>

</html>


reply_ok.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8" errorPage="../error/error.jsp" %>

<jsp:directive.page import="com.javasoft.libs.controller.InsertService" />

<jsp:directive.page import="com.javasoft.libs.controller.UpdateService" />

<jsp:directive.page import="com.javasoft.libs.model.GesipanDTO" />

<jsp:directive.page import="com.oreilly.servlet.*" />

<jsp:directive.page import="com.oreilly.servlet.multipart.*" />


<jsp:useBean id="is" class="com.javasoft.libs.controller.InsertService" />

<jsp:useBean id="us" class="com.javasoft.libs.controller.UpdateService" />

<jsp:useBean id="gd" class="com.javasoft.libs.model.GesipanDTO" />


<% request.setCharacterEncoding("utf-8"); %>


<%

String path = application.getRealPath(".") + "/files";

int max = 10 * 1024 * 1024;  //10MB

MultipartRequest mr = new MultipartRequest(

request, path, max, "utf-8", new DefaultFileRenamePolicy());

String name = mr.getParameter("name");

String passwd = mr.getParameter("passwd");

String email = mr.getParameter("email");

String title = mr.getParameter("title");

title = title.replace("<", "&lt;");

title = title.replace(">", "&gt;");

title = title.replace("'", "''");

String contents = mr.getParameter("contents");

contents = contents.replace("<", "&lt;");

contents = contents.replace(">", "&gt;");

contents = contents.replace("'", "''");

contents = contents.replace("\r\n", "<br />");

String filename = mr.getFilesystemName("filename");

if(filename == null) filename = "";

gd.setName(name);

gd.setPasswd(passwd);

gd.setEmail(email);

gd.setTitle(title);

gd.setContents(contents);

gd.setFilename(filename);

//답글달기를 위해 새로 추가되는 내용들

int idx = Integer.parseInt(mr.getParameter("idx"));

int current_page = Integer.parseInt(mr.getParameter("page"));

int grp = Integer.parseInt(mr.getParameter("grp"));

int lev = Integer.parseInt(mr.getParameter("lev"));

int step = Integer.parseInt(mr.getParameter("step"));

gd.setGrp(grp);    //아주 중요

gd.setLev(lev + 1);   //아주 중요

gd.setStep(step + 1);  //아주 중요

us.replyUpdate(grp, step);

boolean flag = is.replyInsert(gd); 

if(!flag){

%>

<script>

alert("답글 올리기에 실패했습니다.\n다시 입력해 주세요");

history.back();

</script>

<% }else{ %>

<script>

alert("Success");

location.href="list.jsp?page=<%=current_page%>";

</script>

<% } %>


delete.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    

<%

int idx = Integer.parseInt(request.getParameter("idx"));

%>    

<!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=UTF-8">

<title>Welcome to Javasoft.com, inc.</title>

<link rel="stylesheet" type="text/css" href="../common/style.css">

<script type="text/javascript">

window.onload = setup;

function setup(evt){

document.getElementById('btn').onclick = Confirm;

}

function Confirm(evt){

if(document.getElementById('passwd').value.length == 0){

alert("인증받을 비밀번호를 입력하지 않았습니다.");

document.getElementById('passwd').focus();

return false;

}

document.forms[0].submit();

}

</script>

</head>

<body topmargin="0">

<table width="760" height="100%" cellpadding="0" cellspacing="0" border="0" align="center">

<tr>

<td colspan="3" width="760" height="100">

<!--  top 시작 -->

<jsp:include page="../common/top_menu.jsp" />

</td>

</tr>

<tr width="760" height="520">

<td width="132" height="520" valign="top">

<!--  left 시작 -->

<jsp:include page="../common/left_menu.jsp" />

</td>

<td width="5" height="520">

</td>

<td width="620" height="520" class="main" valign="top">

<table width="620" cellpadding="0" cellspacing="0" border="0">

<tr>

<td>

<!-- main영역은 좌로부터 40px 더 들여서 한다. -->

<table cellpadding="0" cellspacing="0" border="0">

<tr>

<td width="40">&nbsp;</td>

<td>

     <!-- main 시작 -->

     <table border="0" cellspacing="0" cellpadding="0" width="580">

      <tr height="10"><td colspan="2">&nbsp;</td></tr>

      <tr height="50"><td colspan="2" class="bo1">패스워드 인증</td></tr>

      <tr height="50"><td colspan="2">&nbsp;</td></tr>

      <tr>

      <td align="center">

     <form action="delete_ok.jsp" method="post">

     <input type="hidden" value="<%=idx %>" name="idx" />

     <table style="border:1px solid black">

      <tr>

      <td>비밀번호 : 

      <input type="password" id="passwd" name="passwd" />

      <input type="button" value="비밀번호인증" id="btn" />

      </td>

      </tr>

     </table>

     </form>

   </td>

 </tr>

</table>

     <!-- main 끝 -->

</td>

<td width="40">&nbsp;</td>

</tr>

</table>

</td>

</tr>

</table>

</td>

</tr>

</table>

</body>

</html>


delete_ok.jsp 안함....


'Java & Oracle' 카테고리의 다른 글

Custom Tag  (0) 2014.07.04
게시판, JSTL  (0) 2014.07.03
게시판 쓰기 및 목록 띄우기까지  (0) 2014.07.01
자료실(파일업로드), 게시판(하기전세팅)  (0) 2014.06.30
JSTL, 메일 보내기, 파일 업로드  (0) 2014.06.27

+ Recent posts