프로시져 추가
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"> </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){ //원본글이 아니라면 %>
<% }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(" ");
}
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("")){
%>
<% }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> </p>
<p> </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(" ");
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> ");
}else{
out.print("<a style='text-decoration:none' href='list.jsp?page=" + i + "'>");
out.print(i);
out.print("</a> ");
}
}
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"> </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"> </td>
<td>
<!-- main 시작 -->
<table border="0" cellspacing="0" cellpadding="0" width="580">
<tr height="10"><td colspan="2"> </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" />
<%=filename %>
<% }else{ %>
<% } %>
</td>
</tr>
</table>
</td>
</tr>
<tr height="25">
<td colspan="2"> </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"> </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"> </td>
<td>
<!-- main 시작 -->
<table border="0" cellspacing="0" cellpadding="0" width="595">
<tr height="10"><td colspan="2"> </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("<", "<");
contents = contents.replace(">", ">");
%>
<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()">
<input type="button" value="취소하기" style='font-size:1.3em' onclick="history.back()">
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>
<!-- main 끝 -->
</td>
<td width="40"> </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("<", "<");
title = title.replace(">", ">");
title = title.replace("'", "''");
String contents = mr.getParameter("contents");
contents = contents.replace("<", "<");
contents = contents.replace(">", ">");
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"> </td>
<td>
<!-- main 시작 -->
<table border="0" cellspacing="0" cellpadding="0" width="580">
<tr height="10"><td colspan="2"> </td></tr>
<tr height="50"><td colspan="2" class="bo1">패스워드 인증</td></tr>
<tr height="50"><td colspan="2"> </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"> </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 |