태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.


public class BoardBean
{
     private int num;  // 자동부여
     private String writer; //사용자입력
     private String email; //사용자입력
     private String subject; //사용자입력
     private String passwd; //사용자입력
     private String content; //사용자입력

     private Timestamp regDate; //자동부여  OR 생성
/*
    // 자동부여
     private String regDate;
*/
     private String ip; // 요청 -> 생성
     private int readCount ; // 요청 -> 생성

     private int pos; //생성
     private int depth; //생성
/* 
     // 답글 생성시 그룹을 이용한 방법
     private int ref;
     private int reStep;
     private int reLevel;
*/



.
.
생략  setter메소드/getter메소드들 11개 또는 12개
.
.
.
}
======================== writeForm.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>
<%
int num=0,depth=0,pos=0;
%>
<center>글쓰기</center>

<br>
<form method="post" name="writeform" action="writeResult.jsp">
<input type="hidden" name="num" value="<%=num%>">
<input type="hidden" name="depth" value="<%=depth%>">
<input type="hidden" name="pos" value="<%=pos%>">
<table width="400" border="1" cellspacing="0" cellpadding="0" align="center">
<tr>
 <td align="right" colspan="2">
  <a href="list.jsp">글목록</a>
 </td>
</tr>
<tr>
 <td width="70" align="center">이름</td>
 <td width="330">
  <input type="text" name="writer" size="10" maxlength="10">
 </td>
</tr>
<tr>
 <td width="70" align="center">제목</td>
 <td width="330">
  <input type="text" name="subject" size="10" maxlength="10">
 </td>
</tr>
<tr>
 <td width="70" align="center">이메일</td>
 <td width="330">
  <input type="text" name="email" size="10" maxlength="10">
 </td>
</tr>
<tr>
 <td width="70" align="center">내용</td>
 <td width="330">
  <textarea rows="13" cols="40" name="content"></textarea>
 </td>
</tr>
<tr>
 <td width="70" align="center">비밀번호</td>
 <td width="330">
  <input type="password" name="passwd" size="10" maxlength="10">
 </td>
</tr>
<tr>
 <td align="right" colspan="2">
  <input type="submit" value="글쓰기">
  <input type="reset" value="다시작성">
 </td>
</tr>
</table>
</form>
</body>
</html>

======================== writeResult.jsp =========================

<%@ page language="java" contentType="text/html; charset=EUC-KR"
 pageEncoding="EUC-KR"%>
<%@ page import="java.util.Vector"%>
<%@ page import="java.sql.*" %>
<%@ page import="testjdbc.BoardBean"%>
<%@ page import="java.util.Enumeration" %>
<%@ page import="java.util.Iterator" %>


<%
 request.setCharacterEncoding("euc-kr");
%>


<%@page import="java.util.Enumeration"%><jsp:useBean id="boardBean" class="testjdbc.BoardBean" scope="request" />
<jsp:setProperty name="boardBean" property="*" />

<%
 boardBean.setRegDate(new Timestamp(System.currentTimeMillis()));
 boardBean.setIp(request.getRemoteAddr());
 System.out.println("여기까지 오나!000");
 Connection con = null;
 Statement stmt = null;
 PreparedStatement pstmt = null;
 ResultSet rs = null;
 Vector<BoardBean> list = new Vector<BoardBean>();

  //1. 드라이버를 찾는다
  Class.forName("com.mysql.jdbc.Driver");
  System.out.println("여기까지 오나!001");
  //2. 데이타베이스에 아이디와 패스워드 그리고 데이타베이스의 변형인URL을 통해서 연결한다.
  con = DriverManager.getConnection(
    "jdbc:mysql://localhost:3306/test", "abc", "1234");
  try {
  System.out.println("여기까지 오나!002");
  // 1,2번 까지는 인스턴스가 필요없지만 3번에서부터는 인스턴스(객체)가 필요하다.
  // DriverManager 클래스가 리턴해준다.

  //3. sql문장을 만들 준비를 한다.
  stmt = con.createStatement();
  System.out.println("여기까지 오나!003");
  //4. sql문장을 실행 시킨다.
  String sql = "insert into board(num,writer,email,subject,passwd,reg_date,read_count,depth,pos,content,ip) values(" + boardBean.getNum()
    + ",'" + boardBean.getWriter() + "','"
    + boardBean.getEmail() + "','" + boardBean.getSubject()
    + "','" + boardBean.getPasswd() + "','"
    + boardBean.getRegDate() + "',0,"
    + boardBean.getDepth() + "," + boardBean.getPos()
    + ",'" + boardBean.getContent() + "','"
    + boardBean.getIp() + "')";
  stmt.executeUpdate(sql);

   System.out.println("여기까지 오나!004");
  /*
   //3,4번을 PreparedStatement를 이용해서 다음과 같이 바꾸어 쓸수 있다.
   String sql = "insert into board(writer,email,subject,passwd,reg_date,read_count,depth,pos,content,ip) values(?,?,?,?,?,0,?,?,?,?)";
   pstmt = con.prepareStatement(sql);
   //pstmt.setInt(1,boardBean.getNum());
   pstmt.setString(1,boardBean.getWriter());
   pstmt.setString(2,boardBean.getEmail());
   pstmt.setString(3,boardBean.getSubject());
   pstmt.setString(4,boardBean.getPasswd());
   pstmt.setTimestamp(5,boardBean.getRegDate());
   //pstmt.setInt(6,boardBean.getReadCount()); // read_count 필드는 직접 입력한다. 값: 0
   pstmt.setInt(6,boardBean.getDepth());
   pstmt.setInt(7,boardBean.getPos());
   pstmt.setString(8,boardBean.getContent());
   pstmt.setString(9,boardBean.getIp());
   System.out.println("여기까지 오나!005");
   pstmt.executeUpdate();
   System.out.println("여기까지 오나!006");
   */
  // 입력작업 완료 이후에 다시 4번부터 다시 시작해서 데이터를 꺼낸다.
  //4. sql문장을 실행한다.
 
  sql = "select * from board";
  rs = stmt.executeQuery(sql);


  // 데이타베이스에서 값을 꺼낸다.
  // 레코드가 여러줄 있을 수 있으므로 반복문을 사용한다.
 
  //5. 데이타베이스에 값이 있는지 확인한다.
  while (rs.next()) {
 
   //******주의****** 
   BoardBean boardBeanTemp = new BoardBean();
   // 템프 자바빈을 while문 안쪽에서 생성해야 데이타베이스에 있는 값을 순서대로 모두 가져 나온다.
   // 그렇지 않으면 마지막 레코드만 가져 나오게 된다.
   
/*
   //6. 값을 꺼낸다.
   int num = rs.getInt("num");
   String writer = rs.getString("writer");
   String email = rs.getString("email");
   String subject = rs.getString("subject");
   String passwd = rs.getString("passwd");
   Timestamp regDate = rs.getTimestamp("reg_date");
   int readCount = rs.getInt("read_count");
   int depth = rs.getInt("depth");
   int pos = rs.getInt("pos");
   String content = rs.getString("content");
   String ip = rs.getString("ip");

   //7. 데이타데이스에서 가져온 값은 자바빈에 담는다.
   
   boardBeanTemp.setNum(num);
   boardBeanTemp.setWriter(writer);
   boardBeanTemp.setEmail(email);
   boardBeanTemp.setSubject(subject);
   boardBeanTemp.setPasswd(passwd);
   boardBeanTemp.setRegDate(regDate);
   boardBeanTemp.setReadCount(readCount);
   boardBeanTemp.setDepth(depth);
   boardBeanTemp.setPos(pos);
   boardBeanTemp.setContent(content);
   boardBeanTemp.setIp(ip);
*/  
   //6번과 7번 함께 사용하는 방법이 일반적이다.
   boardBeanTemp.setNum(rs.getInt("num"));
   boardBeanTemp.setWriter(rs.getString("writer"));
   boardBeanTemp.setEmail(rs.getString("email"));
   boardBeanTemp.setSubject(rs.getString("subject"));
   boardBeanTemp.setPasswd(rs.getString("passwd"));
   boardBeanTemp.setRegDate(rs.getTimestamp("reg_date"));
   boardBeanTemp.setReadCount(rs.getInt("read_count"));
   boardBeanTemp.setDepth(rs.getInt("depth"));
   boardBeanTemp.setPos(rs.getInt("pos"));
   boardBeanTemp.setContent(rs.getString("content"));
   boardBeanTemp.setIp(rs.getString("ip"));
   
   //8. 자반 객체를 배열 객체 Vector 담는다.
   list.add(boardBeanTemp);
  }
 
 } catch (Exception e) {
  e.getStackTrace();
 } finally {
  //9. ResultSet 객체를 반납한다.
  if (rs != null) {
   try {
    rs.close();
   } catch (Exception e) {
   }
  }

  //10. Statement 객체를 반납한다.
  if (stmt != null) {
   try {
    stmt.close();
   } catch (Exception e) {
   }
  }

  //11. Connection 객체를 반납한다.
  if (con != null) {
   try {
    con.close();
   } catch (Exception e) {
   }
  }

 }

//화면에 출력하는 방법 4가지

 //=> 1. 기본for, 2. Enumeration while,  3. Iterator while  4. 향상된for  

//첫번째 방법 기본 for
 //12. 최대값을 찾는다.

  for (int i=0; i<list.size(); i++ ){
  
 //13. 배열에서 자바빈을 꺼낸다.
   BoardBean boardBeanTemp = list.get(i);
 
 //14. 자바빈에서 프로퍼티를 꺼낸다.

  int num = boardBeanTemp.getNum();
  String writer = boardBeanTemp.getWriter();
  String email = boardBeanTemp.getEmail();
  String subject = boardBeanTemp.getSubject();
  String passwd = boardBeanTemp.getPasswd();
  Timestamp regDate = boardBeanTemp.getRegDate();
  int readCount = boardBeanTemp.getReadCount();
  int depth = boardBeanTemp.getDepth();
  int pos = boardBeanTemp.getPos();
  String content = boardBeanTemp.getContent();
  String ip = boardBeanTemp.getIp();

 //15. 화면에 출력한다.
  out.println(num +"&nbsp;&nbsp;&nbsp;");
  out.println(writer +"&nbsp;&nbsp;&nbsp;");
  out.println(email +"&nbsp;&nbsp;&nbsp;");
  out.println(subject +"&nbsp;&nbsp;&nbsp;");
  out.println(passwd +"&nbsp;&nbsp;&nbsp;");
  out.println(regDate +"&nbsp;&nbsp;&nbsp;");
  out.println(readCount +"&nbsp;&nbsp;&nbsp;");
  out.println(depth +"&nbsp;&nbsp;&nbsp;");
  out.println(pos +"&nbsp;&nbsp;&nbsp;");
  out.println(content +"&nbsp;&nbsp;&nbsp;");
  out.println(ip +"&nbsp;&nbsp;&nbsp;");
  out.println("<br>");
   
  }
//두번째 방법  Enumeration while
  //12. 열거형 배열클래스를 생성한다.
  Enumeration<BoardBean> enu = (Enumeration<BoardBean>)list.elements();

  //13. 배열객체에 자바빈이 있는지 확인한다.
  while (enu.hasMoreElements()){
  
 //14. 배열에서 자바빈을 꺼낸다.
   BoardBean boardBeanTemp = (BoardBean)enu.nextElement();
 
 //15. 자바빈에서 프로퍼티를 꺼낸다.

  int num = boardBeanTemp.getNum();
  String writer = boardBeanTemp.getWriter();
  String email = boardBeanTemp.getEmail();
  String subject = boardBeanTemp.getSubject();
  String passwd = boardBeanTemp.getPasswd();
  Timestamp regDate = boardBeanTemp.getRegDate();
  int readCount = boardBeanTemp.getReadCount();
  int depth = boardBeanTemp.getDepth();
  int pos = boardBeanTemp.getPos();
  String content = boardBeanTemp.getContent();
  String ip = boardBeanTemp.getIp();

 //16. 화면에 출력한다.
  out.println(num +"&nbsp;&nbsp;&nbsp;");
  out.println(writer +"&nbsp;&nbsp;&nbsp;");
  out.println(email +"&nbsp;&nbsp;&nbsp;");
  out.println(subject +"&nbsp;&nbsp;&nbsp;");
  out.println(passwd +"&nbsp;&nbsp;&nbsp;");
  out.println(regDate +"&nbsp;&nbsp;&nbsp;");
  out.println(readCount +"&nbsp;&nbsp;&nbsp;");
  out.println(depth +"&nbsp;&nbsp;&nbsp;");
  out.println(pos +"&nbsp;&nbsp;&nbsp;");
  out.println(content +"&nbsp;&nbsp;&nbsp;");
  out.println(ip +"&nbsp;&nbsp;&nbsp;");
  out.println("<br>");
   
  }

  //세번째 방법  Iterator while
  //12. 열거형 배열클래스를 생성한다.
  Iterator<BoardBean> itr = list.iterator();

  //13. 배열객체에 자바빈이 있는지 확인한다.
  while (itr.hasNext()){
  
 //14. 배열에서 자바빈을 꺼낸다.
   BoardBean boardBeanTemp = (BoardBean)itr.next();
 
 //15. 자바빈에서 프로퍼티를 꺼낸다.

  int num = boardBeanTemp.getNum();
  String writer = boardBeanTemp.getWriter();
  String email = boardBeanTemp.getEmail();
  String subject = boardBeanTemp.getSubject();
  String passwd = boardBeanTemp.getPasswd();
  Timestamp regDate = boardBeanTemp.getRegDate();
  int readCount = boardBeanTemp.getReadCount();
  int depth = boardBeanTemp.getDepth();
  int pos = boardBeanTemp.getPos();
  String content = boardBeanTemp.getContent();
  String ip = boardBeanTemp.getIp();

 //16. 화면에 출력한다.
  out.println(num +"&nbsp;&nbsp;&nbsp;");
  out.println(writer +"&nbsp;&nbsp;&nbsp;");
  out.println(email +"&nbsp;&nbsp;&nbsp;");
  out.println(subject +"&nbsp;&nbsp;&nbsp;");
  out.println(passwd +"&nbsp;&nbsp;&nbsp;");
  out.println(regDate +"&nbsp;&nbsp;&nbsp;");
  out.println(readCount +"&nbsp;&nbsp;&nbsp;");
  out.println(depth +"&nbsp;&nbsp;&nbsp;");
  out.println(pos +"&nbsp;&nbsp;&nbsp;");
  out.println(content +"&nbsp;&nbsp;&nbsp;");
  out.println(ip +"&nbsp;&nbsp;&nbsp;");
  out.println("<br>");
   
  }
 
  //네번째 방법 향상된 for
  //12.자바빈을 선언한다. 그리고 타입을  자바빈을 꺼내는 배열인스턴스로 지정한다.

  for (BoardBean boardBeanTemp:list){

   //13. 자바빈에서 프로퍼티를 꺼내고 출력한다.

  out.println(boardBeanTemp.getNum() +"&nbsp;&nbsp;&nbsp;");
  out.println(boardBeanTemp.getWriter() +"&nbsp;&nbsp;&nbsp;");
  out.println(boardBeanTemp.getEmail() +"&nbsp;&nbsp;&nbsp;");
  out.println(boardBeanTemp.getSubject() +"&nbsp;&nbsp;&nbsp;");
  out.println(boardBeanTemp.getPasswd() +"&nbsp;&nbsp;&nbsp;");
  out.println(boardBeanTemp.getRegDate() +"&nbsp;&nbsp;&nbsp;");
  out.println(boardBeanTemp.getReadCount() +"&nbsp;&nbsp;&nbsp;");
  out.println(boardBeanTemp.getDepth() +"&nbsp;&nbsp;&nbsp;");
  out.println(boardBeanTemp.getPos() +"&nbsp;&nbsp;&nbsp;");
  out.println(boardBeanTemp.getContent() +"&nbsp;&nbsp;&nbsp;");
  out.println(boardBeanTemp.getIp() +"&nbsp;&nbsp;&nbsp;");
  out.println("<br>");
   
  }  
   
  session.setAttribute("list",list);  
%>
<script language="javascript"> location.href="writeResult2.jsp";</script>

======================== writeResult2.jsp =========================

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="java.util.Vector,testjdbc.BoardBean" %>
<!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>
<%
 
Vector<BoardBean> list = (Vector<BoardBean>)session.getAttribute("list");
for (BoardBean boardBeanTemp:list){

  //13. 자바빈에서 프로퍼티를 꺼내고 출력한다.

 out.println(boardBeanTemp.getNum() +"&nbsp;&nbsp;&nbsp;");
 out.println(boardBeanTemp.getWriter() +"&nbsp;&nbsp;&nbsp;");
 out.println(boardBeanTemp.getEmail() +"&nbsp;&nbsp;&nbsp;");
 out.println(boardBeanTemp.getSubject() +"&nbsp;&nbsp;&nbsp;");
 out.println(boardBeanTemp.getPasswd() +"&nbsp;&nbsp;&nbsp;");
 out.println(boardBeanTemp.getRegDate() +"&nbsp;&nbsp;&nbsp;");
 out.println(boardBeanTemp.getReadCount() +"&nbsp;&nbsp;&nbsp;");
 out.println(boardBeanTemp.getDepth() +"&nbsp;&nbsp;&nbsp;");
 out.println(boardBeanTemp.getPos() +"&nbsp;&nbsp;&nbsp;");
 out.println(boardBeanTemp.getContent() +"&nbsp;&nbsp;&nbsp;");
 out.println(boardBeanTemp.getIp() +"&nbsp;&nbsp;&nbsp;");
 out.println("<br>");
  
}


</body>
</html>

top

Trackback Address :: http://www.ssial.com/trackback/129 관련글 쓰기

  1. Chanel Outlet 2011/09/17 21:27 댓글주소 | 수정/삭제 | 댓글

    Time is what you make of it.

  2. Chanel Outlet 2011/09/17 21:27 댓글주소 | 수정/삭제 | 댓글

    Time is what you make of it.

  3. Burberry Bags 2011/10/13 17:03 댓글주소 | 수정/삭제 | 댓글

    I'm happy I found this blog! From time to time students want to cognitive the keys of productive literary essays composing. Your first-class knowledge about this good post can become a proper basis for such people. Thanks.

  4. Coach Outlet Online 2011/11/15 12:44 댓글주소 | 수정/삭제 | 댓글

    I'm happy I found this blog ! It's very good and thank you for sharing it !

Write a comment