파일명 : 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;
    }

-----------------------------------------------------

+ Recent posts