파일명 : bbsReplyForm.jsp
-----------------------------------------------------
<%@ page contentType="text/html; charset=utf-8" %>
<%@ include file="./ssi.jsp" %>
<%
String ip = request.getRemoteAddr(); //Client IP 추출
int bbsno = Integer.parseInt(request.getParameter("bbsno"));
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>답변 쓰기</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<Script Language='JavaScript'>
function checkData(f){
var msg;
// 이름의 길이를 비교
if (f.name.value.length == 0){
msg = '안내\n\n이름을 입력해 주십시오';
window.alert(msg);
f.name.focus();
return false;
}
if (f.subject.value.length == 0){
msg = '안내\n\n제목을 입력해 주십시오';
window.alert(msg);
f.subject.focus();
return false;
}
if (f.content.value.length == 0){
msg = '안내\n\n내용을 입력해 주십시오';
window.alert(msg);
f.content.focus();
return false;
}
if (f.passwd.value.length < 4){
msg = '안내\n\n비밀번호는 4자이상 입력하셔야 합니다.';
window.alert(msg);
f.passwd.focus();
return false;
}
return true;
}
</Script>
</head>
<body>
<center>
** 답변쓰기 ** <br>
<form name="frmCreate" id="frmCreate"
method="post"
action="./bbsReplyProc.jsp"
onSubmit='return checkData(this)'>
<input type="hidden" name="ip" value="<%=ip%>">
<input type="hidden" name="bbsno" value="<%=bbsno%>"> <!--글 번호-->
<table border="1">
<tr align=center>
<th colspan="2">답변 쓰기(*는 필수 입력내용입니다.)</th>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr align=left>
<th>성명*</th>
<td><input type="text" name="wname" value='개나리'> </td>
</tr>
<tr align=left>
<th>제목*</th>
<td><input type="text" name="subject" value='무궁화꽃이 피었습니다.'></td>
</tr>
<tr align=left>
<th>내용*</th>
<td><textarea name="content" rows='5' cols='30'>여기에 글 쓰세요..</textarea></td>
</tr>
<tr align=left>
<th>비밀번호*</th>
<td><input type="password" name="passwd" value='1234'></td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2" align=center>
<input type="submit" name="Submit" value="답변 쓰기">
<input type="Reset" name="Submit2" value="다시쓰기">
</td>
</tr>
</table>
</form>
</center>
</body>
</html>
-----------------------------------------------------
파일명 : bbsReplyProc.jsp
-----------------------------------------------------
<%@ page contentType="text/html; charset=utf-8"%>
<%@ include file="./ssi.jsp" %>
<%
//사용자가 입력한 폼 내용을 바로 dto객체에 전달
dto.setBbsno(Integer.parseInt(request.getParameter("bbsno")));
dto.setIp(request.getParameter("ip"));
dto.setWname(request.getParameter("wname"));
dto.setSubject(request.getParameter("subject"));
dto.setContent(request.getParameter("content"));
dto.setPasswd(request.getParameter("passwd"));
%>
<!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>bbsReplyProc.jsp</title>
</head>
<body>
<center>
<%
int cnt = dao.reply(dto);
if(cnt==1){
response.sendRedirect("./bbsList.jsp");
return;
}else{
out.println("<p><b>답변 등록에 실패 했습니다.</b></p>");
out.println("<a href='Javascript:history.back()'>다시 입력</a>");
}
%>
</center>
</body>
</html>
-----------------------------------------------------
파일명 : BbsDAO.java
-----------------------------------------------------
//답변
public int reply(BbsDTO dto){
Connection con=dbconnect.getConnection();
PreparedStatement pstmt=null;
ResultSet rs = null;
StringBuffer sql=null;
int cnt=0;
try{
sql = new StringBuffer();
// --------------------------------------------------------
// 부모글의 Grpno, Indent, Ansnum 값 대입
// grpno그룹, indent들여쓰기, ansnum글순서
// bbsno: 현재 답변을 쓰고 있는 부모글 번호
// --------------------------------------------------------
sql.append(" SELECT grpno,indent,ansnum ");
sql.append(" FROM "+table_name);
sql.append(" WHERE bbsno=?");
pstmt = con.prepareStatement(sql.toString());
pstmt.setInt(1,dto.getBbsno());
rs = pstmt.executeQuery();
// 부모글 정보를 DTO에 저장
if (rs.next()) {
dto.setGrpno(rs.getInt("grpno"));
dto.setIndent(rs.getInt("indent"));
dto.setAnsnum(rs.getInt("ansnum"));
}
// --------------------------------------------------------
// 어떤 부모에 대한 답변은 항상 들여쓰기가 부모보다 증가되어야 함
// 부모글의 깊이보다 1 증가
dto.setIndent(dto.getIndent() + 1);
// 부모 바로 아래에 답변이 붙어야 함으로 부모 답변순서에 1을 증가 함.
// 부모글의 답변순서보다 답변순서 1 증가
dto.setAnsnum(dto.getAnsnum() + 1);
sql = new StringBuffer();
sql.append(" UPDATE " + table_name);
sql.append(" SET ansnum=ansnum+1");
sql.append(" WHERE grpno=?");
sql.append(" AND ansnum>=?");
pstmt = con.prepareStatement(sql.toString());
pstmt.setInt(1, dto.getGrpno());
pstmt.setInt(2, dto.getAnsnum());
pstmt.executeUpdate();
// --------------------------------------------------------
//글 추가
//--------------------------------------------------------
sql = new StringBuffer();
sql.append(" INSERT INTO " + table_name);
sql.append(" ( wname,subject,content,grpno,indent");
sql.append(" ,ansnum, regdate, passwd, ip)");
sql.append(" VALUES(?,?,?,?,?,?,now(),?,?)");
pstmt = con.prepareStatement(sql.toString());
pstmt.setString(1, dto.getWname());
pstmt.setString(2, dto.getSubject());
pstmt.setString(3, dto.getContent());
pstmt.setInt(4, dto.getGrpno());
pstmt.setInt(5, dto.getIndent());
pstmt.setInt(6, dto.getAnsnum());
pstmt.setString(7, dto.getPasswd());
pstmt.setString(8, dto.getIp());
cnt = pstmt.executeUpdate();
}catch(Exception e){
System.out.print(e.toString());
}finally{
DBClose.close(con,pstmt,rs);
}
return cnt;
}
-----------------------------------------------------
'..열심히 공부하세.. > JSP' 카테고리의 다른 글
[21] Manager Class (ConnectionMgr.java) (0) | 2012.02.27 |
---|---|
[유틸리티] Utility.java (0) | 2012.02.27 |
[19] 답변형 게시판 (수정) (0) | 2012.02.26 |
[18] 답변형 게시판 (삭제) (0) | 2012.02.22 |
[17] 답변형 게시판 (상세보기) (0) | 2012.02.22 |