19
웹 웹웹웹웹웹 방방방 방방

웹 프로그래밍

Embed Size (px)

DESCRIPTION

방명록 제작. 웹 프로그래밍. 목차. 기본 레이아웃 DB 구조 방명록 구조 코드 설명 화면 설명. 기본 레이아웃. 수업시간에 한 방명록 코드를 사용 코드분석 및 이미지 작업. 방명록 ( 수업 ). DB 구조. Oracle 사용 DB 구조 (DB 명 GUESTBOOK). 방명록 구조. guestbook_list.jsp.

Citation preview

Page 1: 웹 프로그래밍

웹 프로그래밍방명록 제작

Page 2: 웹 프로그래밍

목차

기본 레이아웃 DB 구조 방명록 구조

코드 설명 화면 설명

Page 3: 웹 프로그래밍

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

방명록 ( 수업 )

Page 4: 웹 프로그래밍

DB 구조 Oracle 사용

DB 구조 (DB 명 GUESTBOOK)

Page 5: 웹 프로그래밍

방명록 구조Guestbook_list.jsp

Guestbook_form.jsp

Guestbook_control.jsp

GuestBean.javaGuestBook.java

Page 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><%GuestBean gb = new GuestBean();ArrayList<GuestBook> datas = gb.getDBList();%><body><center><img src="D:\jsp\work\jspbook\WebContent\guestbook\gtitle.jpg"><HR><form><table cellpadding=5 cellspacing=0 border="1" width = 600 bordercolor=#FFEFD5><tr bgcolor=#FFC800 align = center ><td> 번호 </td><td> 작성자 </td><td> 전화번호 </td><td> 작성일 </td><td> 내용 </td></tr><% for(GuestBook guestbook : 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"><img src="D:\jsp\work\jspbook\WebContent\guestbook\new.jpg"></a><P></form><HR></center></body></html>

GuestBean 에 대한 gb 라는 객체를 생성DB 에 접근하게 됨

DB 에 있는 내용만큼 반복하면서 게시판에 출력

Page 7: 웹 프로그래밍

guestbook_list.jsp 화면

Page 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><img src="D:\jsp\work\jspbook\WebContent\guestbook\newa.jpg"><HR><a href=guestbook_control.jsp?action=list><img src="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>

Page 9: 웹 프로그래밍

guestbook_form.jsp 화면

Page 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();}elsereturn;}</script><meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"><title> 방명록 : 수정화면 </title></head><%GuestBook guestbook = (GuestBook)request.getAttribute("gbook"); %><body><center><img src="D:\jsp\work\jspbook\WebContent\guestbook\mod.jpg"><HR><a href=guestbook_control.jsp?action=list><img src="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>

현재 수정할 글에 대한 작성자 , 내용 , 비밀번호 등의 정보를 가져와서 출력해주는 역할

Page 11: 웹 프로그래밍

guestbook_edit_form.jsp 화면

Page 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");}elsethrow new Exception("DB 입력오류 ");}else if(action.equals("edit")) {GuestBook gbook = 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");}elsethrow new Exception("DB 갱신오류 ");}else if(action.equals("delete")) {if(gb.deleteDB(guestbook.getGb_id())) {response.sendRedirect("guestbook_list.jsp");}elsethrow new Exception("DB 삭제 오류 ");}else {out.println("<script>alert('action 파라미터를 확인해 주세요 !!!')</script>");}%></body></html>

작성글에 대한 리스트를 원할때 수행

글을 작성하기를 원할때 수행

글을 수정하기를 원할때 수행

글또는 내용을 갱신을 위해 수행

글을 삭제하기 위해서 수행

Page 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>

Page 14: 웹 프로그래밍

GuestBean.java 1/5package jspbook.guestbook;

import java.sql.*;import java.util.*;

// 클래스 선언public class GuestBean {

// 데이터베이스 연결관련 변수 선언Connection conn = null;PreparedStatement pstmt = 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();}

}

Page 15: 웹 프로그래밍

GuestBean.java 2/5if(conn != null) {

try {conn.close();

} catch (SQLException e) {e.printStackTrace();

}}

}

// 데이터 갱신을 위한 메서드public boolean updateDB(GuestBook guestbook) {

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;

}

Page 16: 웹 프로그래밍

GuestBean.java 3/5// 게시물 삭제를 위한 메서드public boolean deleteDB(int gb_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 boolean insertDB(GuestBook guestbook) {

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

Page 17: 웹 프로그래밍

GuestBean.java 4/5} catch (SQLException e) {

e.printStackTrace();return false;

}finally {

disconnect();}return true;

}

// 게시물 하나의 모든 정보를 가지고 오는 메서드public GuestBook getDB(int gb_id) {

connect();

String sql = "select * from guestbook where gb_id=?";GuestBook guestbook = new GuestBook();

try {pstmt = conn.prepareStatement(sql);pstmt.setInt(1,gb_id);ResultSet rs = 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();

}

Page 18: 웹 프로그래밍

GuestBean.java 5/5finally {

disconnect();}return guestbook;

}// 게시물 목록 출력을 위해 전체 게시물을 가지고 오는 메서드public ArrayList getDBList() {

connect();// 게시물 목록을 리턴하기 위한 ArrayList 객체 생성 , 명시적으로 ArrayList 에 들어갈 데이터 타잎을 선언함 .ArrayList<GuestBook> datas = new ArrayList<GuestBook>();

String sql = "select * from guestbook";try {

pstmt = conn.prepareStatement(sql);ResultSet rs = pstmt.executeQuery();

// 돌면서 ResultSet 을 이동하면서 모든 데이터 row 를 하나씩 가지고 와서 GuestBook 객체에 넣고 이를 다시 ArrayList 에 넣는 작업을 반복 .while(rs.next()) {

GuestBook guestbook = 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;}}

Page 19: 웹 프로그래밍

GuestBook.javapackage jspbook.guestbook;import java.util.*;

// 방명록 테이블 구조와 동일한 데이터 처리 클래public class GuestBook {// 멤버변수private int gb_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 int getGb_id() {return gb_id;}public void setGb_id(int gb_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;}}