DAO 분리 와 VO 사용 전 join.jsp 에 전부 코드를 넣었다.
DAO 분리 와 VO 사용 전에는 한 페이지에 코드를 너무 많이 작성한다
join.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="kr.co.koo.jdbc.user.model.UserDAO"%>
<%@ page import="java.sql.*" %>
<%
request.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String phone1 = request.getParameter("phone1");
String phone2 = request.getParameter("phone2");
String phone3 = request.getParameter("phone3");
String gender = request.getParameter("gender");
//2. JDBC로직 작성.
String url = "jdbc:mysql://localhost:3306/jsp_practice";
String uid = "jsp";
String upw = "jsp";
Connection conn = null;
//Statement stmt = null;
PreparedStatement pstmt = null;
String sql = "INSERT INTO users VALUES ('"
+ name + "', '" + id + "', '" + pw
+ "', '" + phone1 + "', '" + phone2
+ "', '"+ phone3 + "', '" + gender + "')";
String sql = "INSERT INTO users VALUES (?,?,?,?,?,?,?)";
System.out.println(sql);
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, uid, upw);
//stmt = conn.createStatement();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, name);
pstmt.setString(2, id);
pstmt.setString(3, pw);
pstmt.setString(4, phone1);
pstmt.setString(5, phone2);
pstmt.setString(6, phone3);
pstmt.setString(7, gender);
//int rn = stmt.executeUpdate(sql);
int rn = pstmt.executeUpdate();
if(rn == 1) {
session.setAttribute("user_name", name);
response.sendRedirect("join_success.jsp");
} else {
response.sendRedirect("join_form.jsp");
}
} catch(Exception e) {
e.printStackTrace();
} finally {
try {
conn.close(); pstmt.close();//stmt.close();
} catch(Exception e) {
e.printStackTrace();
}
}
%>
유지보수와 재활용을 위해 코드를 나눠서 관리하자
jsp,DAO 분리 와 VO 사용 후 페이지 분할
join.jsp
<jsp:useBean id="users" class="kr.co.koo.jdbc.user.model.UserVO" />
<jsp:setProperty name = "users" property = "*"/>
<%
UserDAO dao = UserDAO.getInstance();
int rn = dao.join(users);
if(rn == 1){
session.setAttribute("user_name",users.getName());
response.sendRedirect("joim_success.jsp");
} else {
response.sendRedirect("join_form.jsp");
}
%>
vo.java
package kr.co.koo.jdbc.user.model;
public class UserVO {
private String name;
private String id;
private String pw;
private String phone1;
private String phone2;
private String phone3;
private String gender;
public UserVO() {}
public UserVO(String name, String id, String pw, String phone1, String phone2, String phone3, String gender) {
super();
this.name = name;
this.id = id;
this.pw = pw;
this.phone1 = phone1;
this.phone2 = phone2;
this.phone3 = phone3;
this.gender = gender;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPw() {
return pw;
}
public void setPw(String pw) {
this.pw = pw;
}
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 getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
dao.java
package kr.co.koo.jdbc.user.model;
import java.sql.*;
import java.util.*;
public class UserDAO {
private String url = "jdbc:mysql://localhost:3306/";
private String uid = "";
private String upw = "";
private UserDAO() {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch(Exception e) {
e.printStackTrace();
}
}
private static UserDAO dao = new UserDAO();
public static UserDAO getInstance() {
if(dao != null) {
dao = new UserDAO();
}
return dao;
}
public int join(UserVO users) {
String sql = "INSERT INTO users VALUES (?,?,?,?,?,?,?)";
Connection conn = null;
PreparedStatement pstmt = null;
int rn = 0;
try {
conn = DriverManager.getConnection(url, uid, upw);
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, users.getName());
pstmt.setString(2, users.getId());
pstmt.setString(3, users.getPw());
pstmt.setString(4, users.getPhone1());
pstmt.setString(5, users.getPhone2());
pstmt.setString(6, users.getPhone3());
pstmt.setString(7, users.getGender());
rn = pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
conn.close(); pstmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return rn;
}