2013년 7월 11일 목요일

(130711) 14일차 MainJoin.jsp 외 8개 (JSP에서 JDBC 사용하기 과제 - 회원가입)

 - 데이터베이스























 - MemberJoin.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>
<center>
<h2> 회 원 가 입 </h2>
<form action = "MemberJoinProc.jsp" method = "post">
  <table border = "1" bgcolor = "lightyellow" cellpadding = "5">
 
    <tr>
    <td> 아이디 </td>
    <td> <input type = "text" name = id> </td>
    <td colspan = "2" align = "right"><b> *8자이내 </b> </td>
    </tr>
   
    <tr>
    <td> 비밀번호 </td>
    <td> <input type = "password" name = pass></td>
    <td> 성명 </td>
    <td> <input type = "text" name = "name"></td>
  </tr>
 
    <tr>
    <td> 성별 </td>
    <td><input type = "radio" name = "gender" value = "남"> 남
    <input type = "radio" name = "gender" value = "여"> 여 </td>
    <td> 취미 </td>
    <td><input type = "checkbox" name = "hobby1" value = "음악감상 "> 음악감상 
    <input type = "checkbox" name = "hobby2" value = "영화감상"> 영화감상 </td>
    </tr>
   
    <tr>
    <td> 주소 </td>
    <td> <input type = "text" name = "address"> </td>
    <td> 이메일 </td>
    <td> <input type = "text" name = "email"> </td>
    </tr>
   
<tr>
    <td> H.P </td>
    <td> <select name = "phone1">
<option value = "010"> 010 </option>
      <option value = "011"> 011 </option>
      <option value = "070"> 070 </option>
    </select> 
    &nbsp; - &nbsp; <input type = "text" name = "phone2" size = "4">
      &nbsp; - &nbsp; <input type = "text" name = "phone3" size = "4"> </td>
     
<td colspan = "2" align = "right"> <b>*필수입력 </b> </td>
</tr>

<tr>
    <td> 자기소개 </td>
    <td colspan = "3">
    <textarea cols = "50" rows = "3" name = "introduce"></textarea> </td>
    </tr>
   
    <tr>
    <td colspan = "4" align = "center"> 
    <input type = "submit" value = "전송">
    <input type = "reset" value = "취소"> </td>
    </tr>
  </table>

 </form>
</center>
</body>
</html>


 - 결과





















 - MemberBean.java(빈클래스) 소스
package member;

public class MemberBean {
// form 데이터의 name과 똑같은 이름의 멤버변수를 만듬
private String id;
private String pass;
private String name;
private String gender;
private String hobby1;
private String hobby2;
private String address;
private String email;
private String phone1;
private String phone2;
private String phone3;
private String introduce;

public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getHobby1() {
return hobby1;
}
public void setHobby1(String hobby1) {
this.hobby1 = hobby1;
}
public String getHobby2() {
return hobby2;
}
public void setHobby2(String hobby2) {
this.hobby2 = hobby2;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone1() {
return phone1;
}
public void setPhone1(String phone1) {
this.phone1 = phone1;
}
public String getPhone2() {
return phone2;
}
public void setPhone2(String phone2) {
this.phone2 = phone2;
}
public String getPhone3() {
return phone3;
}
public void setPhone3(String phone3) {
this.phone3 = phone3;
}
public String getIntroduce() {
return introduce;
}
public void setIntroduce(String introduce) {
this.introduce = introduce;
}

}


 - MemberJoinProc.jsp(빈클래스) 소스
<%@page import="member.MemberDao"%>
<%@ 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>
<% request.setCharacterEncoding("euc-kr"); %>
<!-- 빈클래스 생성 -->
 <jsp:useBean id = "mbean" class = "member.MemberBean"></jsp:useBean>
 <!-- 빈클래스에 데이터를 추가 -->
 <jsp:setProperty property = "*" name = "mbean"/>
  
  <!-- 데이터를 추가 -->
  <%
MemberDao mdao = new MemberDao();
 
  // 데이터를 추가하는 메소드 호출
mdao.insertMember(mbean);

  // 데이터를 추가 후 제어권을 MemberList로 넘겨줌
response.sendRedirect("MemberList.jsp");
%>
</body>
</html>


 - 결과














 - MemberList.jsp(회원정보 목록) 소스
<%@page import="member.MemberBean"%>
<%@page import="java.util.Vector"%>
<%@page import="member.MemberDao"%>
<%@ 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>
<center>
<h2> 회 원 정 보 목 록 </h2>
<form action = "MemberJoin.jsp" method = "post">
<table border = "1" width = "700" bgcolor = "lightyellow" cellpadding = "5">
<tr>
<th width = "50"> 번호 </th>
<th width = "100"> 아이디 </th>
<th width = "100"> 이름 </th>
<th width = "100"> 주소 </th>
<th width = "100"> 이메일 </th>
<th width = "100"> H.P </th>
<th width = "150"> 자기소개 </th>
</tr>

<%
MemberDao mdao = new MemberDao(); // 메소드 호출을 위해 선언
Vector<MemberBean> vector = new Vector(); // 빈클래스 크기의 벡터 선언
vector = mdao.getAllMember(); // select로 얻어온 멤버 정보를 벡터에 넣음

// 멤버 빈클래스 선언
MemberBean bean = new MemberBean();

for(int i = 0 ; i < vector.size() ; i++){
// 백터에 담긴 MemberBean 클래스를 추출
bean = vector.get(i); // 빈클래스에 집어넣음
%>
<tr>
<td width = "50"> <%=i+1%> </td>
<td width = "100"> <a href = "MemberInfo.jsp?id=<%=bean.getId()%>"> <%=bean.getId()%> </a></td>
<td width = "100"> <%=bean.getName()%> </td>
<td width = "100"> <%=bean.getAddress()%> </td>
<td width = "100"> <%=bean.getEmail()%> </td>
    <td width = "100"> <%=bean.getPhone1()%>-<%=bean.getPhone2()%>-<%=bean.getPhone3()%> </td> 
    <td width = "150"> <%=bean.getIntroduce()%></td></tr>
    <%   
    }
    %>
    <tr>
<td colspan = "7" align = "right">
<input type = "submit" value = "회원가입"> </td>
</tr>
 
</table>
</form>
</center>
</body>
</html>


 - 결과
















 - MemberDao.java (JDBC) 소스
package member;

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

public class MemberDao {
String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";
String id = "system";
String pass = "123456";
Connection con;
PreparedStatement pstmt;
ResultSet rs;

// 데이터 베이스에 접근하는 메소드
public void con(){
try {
// 어느 데이터베이스를 사용할 것인지를 설정
Class.forName("oracle.jdbc.driver.OracleDriver"); // 대소문자 구문
// 실제 데이터 베이스에 접근하기 위한 소스를 작성 == 접속완료되면 커넥션을 리턴
con = DriverManager.getConnection(url, id, pass);

System.out.println("오라클에 접속 완료");

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

}

// 멤버 데이터를 저장하는 메소드
public void insertMember(MemberBean mbean){
// 데이터베이스에 접근
this.con();
// 쿼리 준비
String sql = "insert into member values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
try {
// 쿼리를 날리기위한 객체를 선언
pstmt = con.prepareStatement(sql);

// 데이터 입력
pstmt.setString(1, mbean.getId());
pstmt.setString(2, mbean.getPass());
pstmt.setString(3, mbean.getName());
pstmt.setString(4, mbean.getGender());
pstmt.setString(5, mbean.getHobby1());
pstmt.setString(6, mbean.getHobby2());
pstmt.setString(7, mbean.getAddress());
pstmt.setString(8, mbean.getEmail());
pstmt.setString(9, mbean.getPhone1());
pstmt.setString(10, mbean.getPhone2());
pstmt.setString(11, mbean.getPhone3());
pstmt.setString(12, mbean.getIntroduce());

// 쿼리실행
pstmt.executeUpdate();

// 자원을 닫음
pstmt.close();
con.close();

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

// 모든 회원에 대한 정보를 가져오는 메소드
public Vector<MemberBean> getAllMember(){
Vector<MemberBean> vector = new Vector<>();
MemberBean bean;
// 커넥션 연결
this.con();
// 쿼리 준비
String sql = "select * from member";
 
try{
// 쿼리 실행
pstmt = con.prepareStatement(sql);
// 쿼리 실행 후 결과를 resultset이 받아줌
rs = pstmt.executeQuery();
// 반복문을 이용하여 데이터를 빈클래스에 담은후에 그 Bean 클래스를 벡터에 저장
while(rs.next()){
bean = new MemberBean();
bean.setId(rs.getString(1)); // 빈클래스에 정보를 집어넣음
bean.setPass(rs.getString(2));
bean.setName(rs.getString(3));
bean.setGender(rs.getString(4));
bean.setHobby1(rs.getString(5));
bean.setHobby2(rs.getString(6));
bean.setAddress(rs.getString(7));
bean.setEmail(rs.getString(8));
bean.setPhone1(rs.getString(9));
bean.setPhone2(rs.getString(10));
bean.setPhone3(rs.getString(11));
bean.setIntroduce(rs.getString(12));
// 빈클래스에 담은 데이터를 백터에 추가
vector.add(bean);
}
con.close();
pstmt.close();
rs.close();
 
} catch(Exception e){
e.printStackTrace();
}
return vector;
}

// 선택한 회원에 대한 정보를 가져오는 메소드
public MemberBean getSelectMember(String id){
MemberBean bean = new MemberBean();
// 커넥션 연결
this.con();
// 쿼리 준비
String sql = "select * from member where id = ?";
 
try{
// 쿼리 실행
pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
 
// 쿼리 실행 후 결과를 resultset이 받아줌
rs = pstmt.executeQuery();
 
rs.next();
bean.setId(rs.getString(1)); // 빈클래스에 정보를 집어넣음
bean.setName(rs.getString(3));
 bean.setAddress(rs.getString(7));
 bean.setEmail(rs.getString(8));
 bean.setPhone1(rs.getString(9));
 bean.setPhone2(rs.getString(10));
 bean.setPhone3(rs.getString(11));
 bean.setIntroduce(rs.getString(12));
 
con.close();
pstmt.close();
rs.close();
 
} catch(Exception e){
e.printStackTrace();
}
return bean;
}

// 멤버 데이터를 수정하는 메소드
public void updateMember(String phone1, String phone2, String phone3, String email, String id){
// 데이터베이스에 접근
this.con();
// 쿼리 준비

String sql="update member set phone1 = ?, phone2 = ?, phone3 = ?, email = ?  where id = ?";
try {
// 쿼리를 날리기위한 객체를 선언
pstmt = con.prepareStatement(sql);

pstmt.setString(1, phone1);
pstmt.setString(2, phone2);
pstmt.setString(3, phone3);
pstmt.setString(4, email);
pstmt.setString(5, id);

// 쿼리실행
pstmt.executeUpdate();

// 자원을 닫음
pstmt.close();
con.close();

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

// 멤버 데이터를 삭제하는 메소드
public void deleteMember(String id){
// 데이터베이스에 접근
this.con();
// 쿼리 준비
String sql="delete from member where id = ?";
try {
// 쿼리를 날리기위한 객체를 선언
pstmt = con.prepareStatement(sql);

pstmt.setString(1, id);

// 쿼리실행
pstmt.executeUpdate();

// 자원을 닫음
pstmt.close();
con.close();

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

}


 - MemberInfo.jsp (개인정보) 소스
<%@page import="member.MemberBean"%>
<%@page import="java.util.Vector"%>
<%@page import="member.MemberDao"%>
<%@ 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>
<center>
<h2> 개 인 정 보 </h2>
<% 
MemberDao mdao = new MemberDao(); // 메소드 호출을 위해 선언
// 멤버 빈클래스 선언
MemberBean member = new MemberBean();
member = mdao.getSelectMember(request.getParameter("id"));
%>

<table border = "1" width = "250" bgcolor = "lightyellow" cellpadding = "5">
<tr>
<th width = "100"> 아이디 </th>
<td width = "150"> <%=member.getId()%> </td>
</tr>
<tr>
<th width = "100"> 이름 </th>
<td width = "150"> <%=member.getName()%> </td>
</tr>
<tr>
<th width = "100"> 주소 </th>
<td width = "150"> <%=member.getAddress()%> </td>
</tr>
<tr>
<th width = "100"> 이메일 </th>
<td width = "150"> <%=member.getEmail()%> </td>
</tr>
<tr>
<th width = "100"> H.P </th>
<td width = "150"> <%=member.getPhone1()%>-<%=member.getPhone2()%>-<%=member.getPhone3()%> </td> 
</tr>
<tr>
<th width = "100"> 자기소개 </th>
<td width = "150"> <%=member.getIntroduce()%> </td>
</tr>
</table>

<table border = "0" width = "250" cellpadding = "5">
<tr>
<td> <form action = "MemberUpdate.jsp?id=<%=member.getId()%>" method = "post"> <input type = "submit" value = "수정"> </form> </td>
<td> <form action = "MemberDelete.jsp?id=<%=member.getId()%>" method = "post"> <input type = "submit" value = "삭제"> </form> </td>
</tr>
</table>
</center>
</body>
</html>


 - 결과
















 - MemberUpdate.jsp (회원정보 수정) 소스
<%@page import="member.MemberBean"%>
<%@ 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>
<center>
<h2> 정 보 수 정 </h2>
<form action = "MemberUpdate2.jsp" method = "post">
<table border = "1" bgcolor = "lightyellow" cellpadding = "5">
<tr>
    <td> 아이디 </td>
    <td> <input type = "text" name = id value = <%=request.getParameter("id")%>> </td>
    </tr>
   
    <tr>
    <td> H.P </td>
    <td> <select name = "phone1">
<option value = "010"> 010 </option>
      <option value = "011"> 011 </option>
      <option value = "070"> 070 </option>
    </select> 
    &nbsp; - &nbsp; <input type = "text" name = "phone2" size = "4">
      &nbsp; - &nbsp; <input type = "text" name = "phone3" size = "4"> </td>
     
</tr>

<tr>
    <td> 이메일 </td>
    <td> <input type = "text" name = email></td>
  </tr>
 
  <tr>
    <td colspan = "4" align = "center"> 
    <input type = "submit" value = "수정">
    <input type = "reset" value = "취소"> </td>
    </tr>
</table>

</center>
</body>
</html>


 - MemberUpdate2.jsp (회원정보 수정) 소스
<%@page import="member.MemberDao"%>
<%@ 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>
<% request.setCharacterEncoding("euc-kr"); %>
  
  <!-- 데이터를 수정 -->
  <%
MemberDao mdao = new MemberDao();
 
  // 데이터를 수정하는 메소드 호출
mdao.updateMember(request.getParameter("phone1"), request.getParameter("phone2"), request.getParameter("phone3"), request.getParameter("email"), request.getParameter("id"));

  // 데이터를 추가 후 제어권을 MemberList로 넘겨줌
response.sendRedirect("MemberList.jsp");
%>

</body>
</html>


 - 결과














 - MemberDelete.jsp (회원정보 삭제) 소스
<%@page import="member.MemberDao"%>
<%@ 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>
<% request.setCharacterEncoding("euc-kr"); %>
  
  <!-- 데이터를 삭제 -->
  <%
MemberDao mdao = new MemberDao();
 
  // 데이터를 수정하는 메소드 호출
mdao.deleteMember(request.getParameter("id"));

  // 데이터를 추가 후 제어권을 MemberList로 넘겨줌
response.sendRedirect("MemberList.jsp");
%>

</body>
</html>


 - 결과