1 / 19

웹 프로그래밍

방명록 제작. 웹 프로그래밍. 목차. 기본 레이아웃 DB 구조 방명록 구조 코드 설명 화면 설명. 기본 레이아웃. 수업시간에 한 방명록 코드를 사용 코드분석 및 이미지 작업. 방명록 ( 수업 ). DB 구조. Oracle 사용 DB 구조 (DB 명 GUESTBOOK). 방명록 구조. guestbook_list.jsp. <%@ page language="java" contentType ="text/html; charset =EUC-KR"

raja-pena
Télécharger la présentation

웹 프로그래밍

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 방명록 제작 웹 프로그래밍

  2. 목차 • 기본 레이아웃 • DB구조 • 방명록 구조 • 코드 설명 • 화면 설명

  3. 기본 레이아웃 • 수업시간에 한 방명록 코드를 사용 • 코드분석 및 이미지 작업 방명록(수업)

  4. DB구조 • Oracle 사용 • DB구조(DB명 GUESTBOOK)

  5. 방명록 구조

  6. 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에 있는 내용만큼 반복하면서 게시판에 출력

  7. guestbook_list.jsp화면

  8. 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>

  9. guestbook_form.jsp 화면

  10. 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> 현재 수정할 글에 대한 작성자, 내용, 비밀번호 등의 정보를 가져와서 출력해주는 역할

  11. guestbook_edit_form.jsp 화면

  12. 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> 작성글에 대한 리스트를 원할때 수행 글을 작성하기를 원할때 수행 글을 수정하기를 원할때 수행 글또는 내용을 갱신을 위해 수행 글을 삭제하기 위해서 수행

  13. 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>

  14. 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(); } }

  15. 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; }

  16. 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();

  17. 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(); }

  18. 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;}}

  19. 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;} }

More Related