<~~db.jsp 파일 구성>
- DBConnection 연결
- 파라미터(데이터) 수집
- 처리(로직 작성)
- 처리된 과정의 흐름 나누기(ex. 성공화면으로 이동 or 실패화면으로 이동)
⇓
DAO, DTO 이용하여 '처리' 부분 분리
DBConnection.java
package dao;
import java.sql.Connection;
import java.sql.DriverManager;
public class DBConnection {
private static Connection conn;
public static Connection getConnection() {
if(conn == null) {
try{
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/gb";
String user = "root";
String password = "1234";
conn = DriverManager.getConnection(url, user, password);
}
catch(Exception e){
}
return conn;
}
}
}
UserDTO.java
package dto;
public class UserDTO {
private String userid;
private String userpw;
private String username;
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public String getUserpw() {
return userpw;
}
public void setUserpw(String userpw) {
this.userpw = userpw;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
UserDAO.java
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import dto.UserDTO;
public class UserDAO {
Connection conn;
PreparedStatement ps;
ResultSet rs;
public boolean join(UserDTO newUser) {
String sql = "insert into t_user values(?,?,?)";
int result = 0;
try {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, newUser.getUserid());
ps.setString(2, newUser.getUserpw());
ps.setString(3, newUser.getUsername());
result = ps.executeUpdate();
} catch (SQLException e) {
}
return result == 1;
}
public boolean login(String userid, String userpw) {
String sql = "select * from t_user where userid=? and userpw=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, userid);
ps.setString(2, userpw);
rs = ps.executeQuery();
return rs.next();
} catch (SQLException e) {
}
return false;
}
public boolean checkId(String userid) {
String sql = "select * from t_user where userid=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, userid);
rs = ps.executeQuery();
return !rs.next();
} catch (SQLException e) {
}
return false;
}
}
join_db.jsp
<%@page import="dao.UserDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<% request.setCharacterEncoding("UTF-8"); %>
//useBean 이용하여 newUser 객체에 UserDTO에 날아온 모든 데이터 가져오기
<jsp:useBean id="newUser" class="dto.UserDTO"/>
<jsp:setProperty name="newUser" property="*"/>
<%
UserDAO udao = new UserDAO();
if(udao.join(newUser)){
//성공 화면으로 이동
Cookie cookie = new Cookie("joinid",newUser.getUserid());
response.addCookie(cookie);
response.sendRedirect("loginview.jsp");
}
else{
//실패 화면으로 이동
}
%>
login_db.jsp
<%@page import="dao.UserDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<% request.setCharacterEncoding("UTF-8"); %>
<%
//login_db는 userid, userpw 두개만 필요하니까
//join_db처럼 NewUser 객체에 담을 필요 없음
String userid = request.getParameter("userid");
String userpw = request.getParameter("userpw");
UserDAO udao = new UserDAO();
//성공하면 main.jsp로 이동
if(udao.login(userid, userpw)){
session.setAttribute("loginUser", userid);
response.sendRedirect("main.jsp");
}
//실패하면 실패화면으로 이동
else{
response.sendRedirect("login_fail.jsp");
}
%>
checkId_db.jsp
<%@page import="dao.UserDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
UserDAO udao = new UserDAO();
String userid = request.getParameter("userid");
//중복체크니까 결과가 있으면 안됨 => 중복체크 통과하면 O, 실패하면 X
if(udao.checkId(userid)){
out.print("O");
}
else{
out.print("X");
}
분리 전 join_db.jsp / 분리 후 join_db.jsp

분리 전 login_db.jsp / 분리 후 login_db.jsp
