190 likes | 474 Views
방명록 제작. 웹 프로그래밍. 목차. 기본 레이아웃 DB 구조 방명록 구조 코드 설명 화면 설명. 기본 레이아웃. 수업시간에 한 방명록 코드를 사용 코드분석 및 이미지 작업. 방명록 ( 수업 ). DB 구조. Oracle 사용 DB 구조 (DB 명 GUESTBOOK). 방명록 구조. guestbook_list.jsp. <%@ page language="java" contentType ="text/html; charset =EUC-KR"
E N D
방명록 제작 웹 프로그래밍
목차 • 기본 레이아웃 • DB구조 • 방명록 구조 • 코드 설명 • 화면 설명
기본 레이아웃 • 수업시간에 한 방명록 코드를 사용 • 코드분석 및 이미지 작업 방명록(수업)
DB구조 • Oracle 사용 • DB구조(DB명 GUESTBOOK)
guestbook_list.jsp <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR" errorPage="guestbook_error.jsp" import="java.util.*, jspbook.guestbook.*"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <% request.setCharacterEncoding("euc-kr"); %> <html> <head> <script language=JavaScript> function check(gb_id) { pwd = prompt('수정/삭제 하려면 비밀번호를 넣으세요'); document.location.href="guestbook_control.jsp?action=edit&gb_id="+gb_id+"&upasswd="+pwd; } </script> <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"> <title>방명록:목록화면</title></head> <% GuestBeangb = new GuestBean(); ArrayList<GuestBook> datas = gb.getDBList(); %> <body><center> <imgsrc="D:\jsp\work\jspbook\WebContent\guestbook\gtitle.jpg"> <HR> <form><table cellpadding=5 cellspacing=0 border="1" width = 600 bordercolor=#FFEFD5> <trbgcolor=#FFC800 align = center ><td>번호</td><td>작성자</td><td>전화번호</td><td>작성일</td><td>내용</td></tr> <% for(GuestBookguestbook : datas) { %> <tr align = center> <td><%=guestbook.getGb_id() %></td> <td><%=guestbook.getGb_name() %></td> <td><%=guestbook.getGb_tel() %></td> <td><%=guestbook.getGb_date() %></td> <td><a href=javascript:check('<%=guestbook.getGb_id() %>')><%=guestbook.getGb_contents() %></a></td> </tr> <% }%> </table><br> <a href="guestbook_form.jsp"><imgsrc="D:\jsp\work\jspbook\WebContent\guestbook\new.jpg"></a><P> </form><HR></center></body></html> GuestBean에 대한 gb라는 객체를 생성 DB에 접근하게 됨 DB에 있는 내용만큼 반복하면서 게시판에 출력
guestbook_form.jsp <%@ page language="java" contentType="text/html; charset=EUC-KR“ pageEncoding="EUC-KR" errorPage="error.jsp"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <% request.setCharacterEncoding("euc-kr"); %> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"> <title>방명록:작성화면</title></head> <body><center> <imgsrc="D:\jsp\work\jspbook\WebContent\guestbook\newa.jpg"> <HR><a href=guestbook_control.jsp?action=list><imgsrc="D:\jsp\work\jspbook\WebContent\guestbook\listview.jpg"></a> <form name=form1 method=post action=guestbook_control.jsp> <input type=hidden name="action" value="insert"> <table width = 600 cellpadding=5 cellspacing=0 border="1" bordercolor = #FFEFD5> <tr align = center> <td bgcolor="#FFC800" width = 200><font size = "2"><b>작 성 자</b></td> <td><input type="text" name="gb_name" size="60"></td> </tr> <tr align = center> <td bgcolor="#FFC800" width = 200><font size = "2"><b>email</b></td> <td><input type="text" name="gb_email" size="60"></td> </tr> <tr align = center> <td bgcolor="#FFC800" width = 200><font size = "2"><b>전화번호</b></td> <td><input type="text" name="gb_tel" size="60"></td> </tr> <tr> <td bgcolor="#FFC800" width = 200 align = center><font size = "2"><b>비밀번호</b></td> <td><input type="password" name="gb_passwd" size="30"> <font size=2>※ 비밀번호는 최대 6자리입니다.</td> </tr> <tr align = center height = 380> <td colspan="2"><textarea rows="23" name="gb_contents" cols="80"></textarea></td> </tr> <tr align = center> <td colspan=2 align=center><input type=submit value="저장"><input type=reset value="취소"></td> </tr></table></form></center></body></html>
guestbook_edit_form.jsp <script language=JavaScript> // 삭제 확인을 위한 자바스크립트 function delcheck() { // 메시지 창을 통해 YES/NO 확인 result = confirm("정말로 삭제하시겠습니까 ?"); if(result == true){ document.form1.action.value="delete"; document.form1.submit();} else return;} </script><meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"> <title>방명록:수정화면</title></head> <% GuestBookguestbook = (GuestBook)request.getAttribute("gbook"); %><body><center> <imgsrc="D:\jsp\work\jspbook\WebContent\guestbook\mod.jpg"><HR> <a href=guestbook_control.jsp?action=list><imgsrc="D:\jsp\work\jspbook\WebContent\guestbook\listview.jpg"></a> <form name=form1 method=post action=guestbook_control.jsp> <input type=hidden name="gb_id" value="<%=guestbook.getGb_id()%>"> <input type=hidden name="action" value="update"> <table cellpadding=5 cellspacing=0 border="1" width = 600> <tr> <td bgcolor="#FFC800" width = 200><font size = "2">작 성 자</td> <td><input type="text" name="gb_name" size="60" value="<%=guestbook.getGb_name() %>"></td> </tr> <tr> <td bgcolor="#FFC800" width = 200><font size = "2">email</td> <td><input type="text" name="gb_email" size="60" value="<%=guestbook.getGb_email() %>"></td> </tr> <tr> <td bgcolor="#FFC800" width = 200><font size = "2">전화번호</td> <td><input type="text" name="gb_tel" size="60" value="<%=guestbook.getGb_tel() %>"></td> </tr> <tr> <td bgcolor="#FFC800" width = 200><font size = "2">비밀번호</td> <td><input type="password" name="gb_passwd" size="30" value="<%=guestbook.getGb_passwd()%>"> <font size=2>※ 비밀번호는 최대 6자리입니다.</td> </tr> <tr> <td colspan="2"><textarea rows="23" name="gb_contents" cols="80"><%=guestbook.getGb_contents() %></textarea></td> </tr> <tr> <td colspan=2 align=center><input type=submit value="저장"><input type=reset value="취소"><input type="button" value="삭제" onClick="delcheck()"></td></tr></table> </form></center></body></html> 현재 수정할 글에 대한 작성자, 내용, 비밀번호 등의 정보를 가져와서 출력해주는 역할
guestbook_control.jsp <html><head><meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"> <title>Insert title here</title></head><body> <jsp:useBean id="gb" class="jspbook.guestbook.GuestBean"/> <jsp:useBean id="guestbook" class="jspbook.guestbook.GuestBook"/> <jsp:setProperty name="guestbook" property="*"/> <% String action = request.getParameter("action"); if(action.equals("list")) { response.sendRedirect("guestbook_list.jsp");} else if(action.equals("insert")) { if(gb.insertDB(guestbook)) { response.sendRedirect("guestbook_list.jsp");} else throw new Exception("DB 입력오류");} else if(action.equals("edit")) { GuestBookgbook = gb.getDB(guestbook.getGb_id()); if(!gbook.getGb_passwd().equals(request.getParameter("upasswd"))) { out.println("<script>alert('비밀번호가 틀렸습니다.!!');history.go(-1);</script>");} else { request.setAttribute("gbook",gbook); pageContext.forward("guestbook_edit_form.jsp");}} else if(action.equals("update")) { if(gb.updateDB(guestbook)) { response.sendRedirect("guestbook_list.jsp");} else throw new Exception("DB 갱신오류");} else if(action.equals("delete")) { if(gb.deleteDB(guestbook.getGb_id())) { response.sendRedirect("guestbook_list.jsp");} else throw new Exception("DB 삭제 오류"); } else {out.println("<script>alert('action 파라미터를 확인해 주세요!!!')</script>");} %></body></html> 작성글에 대한 리스트를 원할때 수행 글을 작성하기를 원할때 수행 글을 수정하기를 원할때 수행 글또는 내용을 갱신을 위해 수행 글을 삭제하기 위해서 수행
guestbook_error.jsp <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR" isErrorPage="true"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <% request.setCharacterEncoding("euc-kr"); %> <HTML> <body> <center> <H2>방명록 에러</H2> <HR> <table cellpadding=5 width=400> <tr width=100% bgcolor="pink"><td> 방명록 처리중 에러가 발생 했습니다.<BR> 관리자에게 문의해 주세요..<BR> 빠른시일내 복구하겠습니다. <HR> 에러내용 : <%=exception%> <HR> </td></tr></table></center></body></HTML>
GuestBean.java 1/5 package jspbook.guestbook; import java.sql.*; import java.util.*; // 클래스 선언 public class GuestBean { // 데이터베이스 연결관련 변수 선언 Connection conn = null; PreparedStatementpstmt = null; // 데이터베이스 연결관련정보를 문자열로 선언 String jdbc_driver = "oracle.jdbc.driver.OracleDriver"; String jdbc_url = "jdbc:oracle:thin:@127.0.0.1:1521"; // 데이터베이스 연결 메서드 void connect() { // JDBC 드라이버 로드 try { Class.forName(jdbc_driver); // 데이터베이스 연결정보를 이용해 Connection 인스턴스 확보 conn = DriverManager.getConnection(jdbc_url,"jspdbuser","8510"); } catch (Exception e) { e.printStackTrace(); } } // 데이터베이스 연결 종료 메서드 void disconnect() { if(pstmt != null) { try { pstmt.close(); } catch (SQLException e) { e.printStackTrace(); } }
GuestBean.java 2/5 if(conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } // 데이터 갱신을 위한 메서드 public booleanupdateDB(GuestBookguestbook) { connect(); String sql ="update GUESTBOOK set gb_name=?, gb_email=?, gb_date=sysdate, gb_tel=?, gb_passwd=?, gb_contents=? where gb_id=?"; try { pstmt = conn.prepareStatement(sql); // 인자로 받은 GuestBook객체를 이용해 사용자가 수정한 값을 가져와 SQL문 완성 pstmt.setString(1,guestbook.getGb_name()); pstmt.setString(2,guestbook.getGb_email()); pstmt.setString(3,guestbook.getGb_tel()); pstmt.setString(4,guestbook.getGb_passwd()); pstmt.setString(5,guestbook.getGb_contents()); pstmt.setInt(6,guestbook.getGb_id()); pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); return false; } finally { disconnect(); } return true; }
GuestBean.java 3/5 // 게시물 삭제를 위한 메서드 public booleandeleteDB(intgb_id) { connect(); String sql ="delete from guestbook where gb_id=?"; try { pstmt = conn.prepareStatement(sql); // 인자로 받은 gb_id프라이머리 키 값을 이용해 삭제 pstmt.setInt(1,gb_id); pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); return false; } finally { disconnect(); } return true; } // 게시물 등록 메서드 public booleaninsertDB(GuestBookguestbook) { connect(); String sql ="insert into guestbook(gb_name,gb_email,gb_date,gb_tel,gb_passwd,gb_contents) values(?,?,sysdate,?,?,?)"; try { pstmt = conn.prepareStatement(sql); // 인자로 받은 GuestBook객체를 통해 사용자 입력값을 받아 SQL 완성후 입력 처리 pstmt.setString(1,guestbook.getGb_name()); pstmt.setString(2,guestbook.getGb_email()); pstmt.setString(3,guestbook.getGb_tel()); pstmt.setString(4,guestbook.getGb_passwd()); pstmt.setString(5,guestbook.getGb_contents()); pstmt.executeUpdate();
GuestBean.java 4/5 } catch (SQLException e) { e.printStackTrace(); return false; } finally { disconnect(); } return true; } // 게시물 하나의 모든 정보를 가지고 오는 메서드 public GuestBookgetDB(intgb_id) { connect(); String sql = "select * from guestbook where gb_id=?"; GuestBookguestbook = new GuestBook(); try { pstmt = conn.prepareStatement(sql); pstmt.setInt(1,gb_id); ResultSetrs = pstmt.executeQuery(); rs.next(); // 가져와 데이터를 GuestBook객체로 만들어 리턴함. guestbook.setGb_id(rs.getInt("gb_id")); guestbook.setGb_name(rs.getString("gb_name")); guestbook.setGb_email(rs.getString("gb_email")); guestbook.setGb_date(rs.getDate("gb_date")); guestbook.setGb_tel(rs.getString("gb_tel")); guestbook.setGb_contents(rs.getString("gb_contents")); guestbook.setGb_passwd(rs.getString("gb_passwd")); rs.close(); } catch (SQLException e) { e.printStackTrace(); }
GuestBean.java 5/5 finally { disconnect(); } return guestbook; } // 게시물 목록 출력을 위해 전체 게시물을 가지고 오는 메서드 public ArrayListgetDBList() { connect(); // 게시물 목록을 리턴하기 위한 ArrayList객체 생성, 명시적으로 ArrayList에 들어갈 데이터 타잎을 선언함. ArrayList<GuestBook> datas = new ArrayList<GuestBook>(); String sql = "select * from guestbook"; try { pstmt = conn.prepareStatement(sql); ResultSetrs = pstmt.executeQuery(); // 돌면서ResultSet을 이동하면서 모든 데이터 row 를 하나씩 가지고 와서 GuestBook객체에 넣고 이를 다시 ArrayList에 넣는 작업을 반복. while(rs.next()) { GuestBookguestbook = new GuestBook(); guestbook.setGb_id(rs.getInt("gb_id")); guestbook.setGb_name(rs.getString("gb_name")); guestbook.setGb_email(rs.getString("gb_email")); guestbook.setGb_date(rs.getDate("gb_date")); guestbook.setGb_tel(rs.getString("gb_tel")); guestbook.setGb_contents(rs.getString("gb_contents")); datas.add(guestbook); } rs.close(); } catch (SQLException e) { e.printStackTrace(); } finally {disconnect();} // 처리가 끝나 ArrayList를 리턴함. return datas;}}
GuestBook.java package jspbook.guestbook; import java.util.*; // 방명록 테이블 구조와 동일한 데이터 처리 클래 public class GuestBook { //멤버변수 private intgb_id; private String gb_name; private String gb_email; private String gb_tel; private Date gb_date; private String gb_passwd; private String gb_contents; public String getGb_contents() {return gb_contents;} public void setGb_contents(String gb_contents) {this.gb_contents= gb_contents;} public Date getGb_date() {return gb_date;} public void setGb_date(Date gb_date) {this.gb_date= gb_date;} public String getGb_email() {return gb_email;} public void setGb_email(String gb_email) {this.gb_email= gb_email;} public intgetGb_id() {return gb_id;} public void setGb_id(intgb_id) {this.gb_id= gb_id;} public String getGb_name() {return gb_name;} public void setGb_name(String gb_name) {this.gb_name= gb_name;} public String getGb_tel() {return gb_tel;} public void setGb_tel(String gb_tel) {this.gb_tel= gb_tel;} public String getGb_passwd() {return gb_passwd;} public void setGb_passwd(String gb_passwd) {this.gb_passwd= gb_passwd;} }