728x90
반응형
-- member.sql
create table member (
id varchar2(20) primary key,
pass varchar2(20),
name varchar2(20),
gender number(1),
email varchar2(50),
tel varchar2(15),
picture varchar2(100)
);
drop table member;
select * from member;
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%--src/main/webapp/medel1/member/joinForm.jsp --%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>회원가입화면</title>
<script type="text/javascript">
function win_open() {
var op="width=500,height=200,scrollbars=yes," + "resizable=yes,left=50,top=150";
window.open ("memberimg.jsp","picture",op);
}
function check(f) {
if(f.id.value.length==0) {
alert("아이디를 입력하세요");
f.id.focus();
return false;
}
return true;
}
</script>
<link rel="stylesheet" href="../../css/main.css">
</head>
<body>
<form action="joinCheck.jsp" method="post"
name="f" onsubmit="return check(this)">
<input type="hidden" name="picture" value="">
<table border="1" cellpadding="0" cellspacing="0">
<caption>회원 가입</caption>
<tr>
<td rowspan="4" align="center" valign="bottom">
<img src="" width="100" height="120" id="pic"><br>
<font size="1">
<a href="javascript:win_open()">사진등록</a>
</font></td>
<td>아이디</td>
<td><input type="text" name="id"></td></tr>
<tr><td>비밀번호</td>
<td><input type="password" name="pass"></td></tr>
<tr><td>이름</td>
<td><input type="text" name="name"></td></tr>
<tr><td>성별</td>
<td><input type="radio" name="gender"
value="1" checked>남
<input type="radio" name="gender"
value="2">여 </td></tr>
<tr><td>전화번호</td>
<td colspan="2"><input type="text" name="tel"></td></tr>
<tr><td>이메일</td>
<td colspan="2"><input type="text" name="email"></td></tr>
<tr><td colspan="3" align="center">
<input type="submit" value="회원가입">
<input type="reset" value="다시작성">
</td></tr>
</table></form></body></html>
1. 파라미터값들을 Member 객체에 변수에 저장.
2. Member 객체를 db저장.
3. 회원등록 완료 => 화면에 정보 출력.
회원등록 실패 => 확인창으로 실패 출력. joinForm.jsp 페이지 이동
<%@page import="model.MemberDao"%>
<%@page import="model.Member"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%--src/main/webapp/medel1/member/joinCheck.jsp --%>
<%--
1. 파라미터값들을 Member 객체에 변수에 저장.
2. Member 객체를 db저장.
3. 회원등록 완료 => 화면에 정보 출력.
회원등록 실패 => 확인창으로 실패 출력. joinForm.jsp 페이지 이동
--%>
<%
//1. 파라미터값들을 Member 객체에 저장.
request.setCharacterEncoding("UTF-8");
Member mem = new Member();
mem.setId(request.getParameter("id"));
mem.setPass(request.getParameter("pass"));
mem.setName(request.getParameter("name"));
mem.setGender(Integer.parseInt(request.getParameter("gender")));
mem.setTel(request.getParameter("tel"));
mem.setEmail(request.getParameter("email"));
mem.setPicture(request.getParameter("picture"));
//2. Member 객체를 db저장.
MemberDao dao = new MemberDao();
if(dao.insert(mem)) { //회원등록 성공
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 등록</title>
</head>
<body>
<table>
<tr>
<td>아이디</td>
<td><%=mem.getId() %></td>
</tr>
<tr>
<td>이름</td>
<td><%=mem.getName() %></td>
</tr>
<tr>
<td>성별</td>
<td><%=(mem.getGender() == 1)?"남":"여" %></td>
</tr>
<tr>
<td>전화번호</td>
<td><%=mem.getTel() %></td>
</tr>
<tr>
<td>이메일</td>
<td><%=mem.getEmail() %></td>
</tr>
</table>
<a href="loginForm.jsp">로그인</a>
</body>
</html>
<%} else { //회원등록 실패%>
<script type="text/javascript">
alert("회원가입 실패")
location.href="joinForm.jsp"
</script>
<% }%>
package model;
//Bean 클래스 : 변수와 getter, setter로 이루어진 클래스
// getId() : get property (겟프로퍼티)
// getId() => get property id
//setId() : set property (겟프로퍼티)
// setId() => set property id
public class Member {
private String id;
private String pass;
private String name;
private int gender;
private String tel;
private String email;
private String picture;
//getter, setters
public String getId() { //get property id
return id;
}
public void setId(String id) { //set property id
this.id = id;
}
public String getPass() { //get property pass
return pass;
}
public void setPass(String pass) { //set property pass
this.pass = pass;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getGender() {
return gender;
}
public void setGender(int gender) {
this.gender = gender;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPicture() {
return picture;
}
public void setPicture(String picture) {
this.picture = picture;
}
@Override
public String toString() {
return "Member [id=" + id + ", pass=" + pass + ", name=" + name + ", gender=" + gender + ", tel=" + tel
+ ", email=" + email + ", picture=" + picture + "]";
}
}
package model;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBConnection {
private DBConnection() {} //생성자. 다른 객체생성을 하지못하도록 하는 역할
static Connection getConnection() {
Connection conn = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","kic","1234");
} catch(Exception e) {
e.printStackTrace();
}
return conn;
}
static void close(Connection conn, Statement stmt, ResultSet rs) {
try {
if(rs != null) rs.close();
if(stmt != null) stmt.close();
if(conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
package model;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
//model 클래스 : db와 연결하여 데이터를 저장하거나 조회하는 기능
public class MemberDao {
public boolean insert(Member mem) {
//mem : 화면에서 입력받은 데이터 저장
//1. db에 연결하기
Connection conn = DBConnection.getConnection();
//2. 문장 객체
//PreparedStatement : Statement 인터페이스의 하위 인터페이스
// 미리 sql문장을 먼저 db로 전송함.
PreparedStatement pstmt = null;
String sql = "insert into member (id, pass, name, gender, tel, email, picture)" + " values ( ?,?,?,?,?,?,?)";
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, mem.getId()); // 1 : 첫번째 물음표(?)
pstmt.setString(2, mem.getPass());
pstmt.setString(3, mem.getName());
pstmt.setInt(4, mem.getGender());
pstmt.setString(5, mem.getTel());
pstmt.setString(6, mem.getEmail());
pstmt.setString(7, mem.getPicture());
//executeUpdate() : sql 구문 실행.
// insert, update, delete
// db에 데이터를 등록하는 경우 실행하는 메서드
// 수정된 레코드 갯수 리턴
//ResultSet executeQuery() : sql 구문 실행.
// select 구문 실행.
// db에서 데이터를 조회하는 경우 실행하는 메서드
// 조회된 db의 레토드들을 리턴
int cnt = pstmt.executeUpdate(); //db문장 실행
if (cnt > 0) return true;
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection.close(conn, pstmt, null);
}
return false;
}
public Member selectOne(String id) {
Connection conn = DBConnection.getConnection();
String sql = "select * from member where id=?";
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
rs = pstmt.executeQuery();
if(rs.next()) {
Member mem = new Member();
mem.setId(rs.getString("id"));
mem.setPass(rs.getString("pass"));
mem.setName(rs.getString("name"));
mem.setGender(rs.getInt("gender"));
mem.setTel(rs.getString("tel"));
mem.setEmail(rs.getString("email"));
mem.setPicture(rs.getString("picture"));
return mem;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection.close(conn, pstmt, rs);
}
return null;
}
public boolean update(Member mem) {
Connection conn = DBConnection.getConnection();
PreparedStatement pstmt = null;
String sql = "update member set name=?, gender=?, email=?, tel=?,picture=? " + " where id=?";
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, mem.getName());
pstmt.setInt(2, mem.getGender());
pstmt.setString(3, mem.getEmail());
pstmt.setString(4, mem.getTel());
pstmt.setString(5, mem.getPicture());
pstmt.setString(6, mem.getId());
return pstmt.executeUpdate() > 0;
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection.close(conn, pstmt, null);
}
return false;
}
public boolean delete (String id) {
Connection conn = DBConnection.getConnection();
PreparedStatement pstmt = null;
try {
pstmt = conn.prepareStatement("delete from member where id=?");
pstmt.setString(1, id);
return pstmt.executeUpdate() > 0;
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection.close(conn, pstmt, null);
}
return false;
}
public List<Member> list() {
Connection conn = DBConnection.getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
List<Member> list = new ArrayList<Member>();
try {
pstmt = conn.prepareStatement("select * from member order by id");
rs = pstmt.executeQuery();
while(rs.next()) { //한 행 조회
Member m = new Member();
//rs.getString("id") : id 컬럼의 값을 문자열 타입으로 조회
m.setId(rs.getString("id"));
m.setPass(rs.getString("pass"));
m.setName(rs.getString("name"));
m.setGender(rs.getInt("gender"));
m.setTel(rs.getString("tel"));
m.setEmail(rs.getString("email"));
m.setPicture(rs.getString("picture"));
list.add(m); //list에 추가
}
return list;
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection.close(conn, pstmt, rs);
}
return null;
}
public String idSearch(String email, String tel) {
Connection conn = DBConnection.getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "select id from member where email = ? and tel = ?";
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, email);
pstmt.setString(2, tel);
rs = pstmt.executeQuery();
if (rs.next()) { //레코드 존재. id값이 존재.
return rs.getString("id");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection.close(conn, pstmt, rs);
}
return null;
}
public String pwSearch(String id, String email, String tel) {
Connection conn = DBConnection.getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "select pass from member where id = ? and email = ? and tel = ?";
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
pstmt.setString(2, email);
pstmt.setString(3, tel);
rs = pstmt.executeQuery();
if (rs.next()) {
return rs.getString("pass");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection.close(conn, pstmt, rs);
}
return null;
}
public int updatePass(String id, String pass) {
Connection conn = DBConnection.getConnection();
PreparedStatement pstmt = null;
String sql = "update member set pass = ? where id = ?";
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, pass);
pstmt.setString(2, id);
return pstmt.executeUpdate();
} catch(SQLException e) {
e.printStackTrace();
} finally {
DBConnection.close(conn, pstmt, null);
}
return 0;
}
}
728x90
반응형
'study > MVC' 카테고리의 다른 글
[MVC] 16. MVC Model1 방식 - 회원가입 (회원정보보기) (0) | 2022.04.08 |
---|---|
[MVC] 16. MVC Model1 방식 - 회원가입 (로그아웃) (0) | 2022.04.08 |
[MVC] 16. MVC Model1 방식 - 회원가입 (회원관리) (0) | 2022.04.08 |
[MVC] 16. MVC Model1 방식 - 회원가입 (회원정보수정) (0) | 2022.04.08 |
[MVC] 16. MVC Model1 방식 - 회원가입 (로그인) (0) | 2022.04.07 |