로그인 폼을 만들어준다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="login_db.jsp" method="post" name="frm">
<p>
<label>아이디<input type="text" name="userid"></label>
</p>
<p>
<label>비밀번호<input type="password" name="userpw"></label>
</p>
<input type="button" value="로그인" onclick="sendit();">
</form>
</body>
</html>
유효성검사를 해준다
<script>
function sendit(){
let frm = document.frm;
let userid = frm.userid;
let userpw = frm.userpw;
// 아이디 유무
if( userid.value == "" ){
alert("아이디를 입력하세요!");
userid.focus();
return false;
}
// 비밀번호 유무
if( userpw.value == "" ){
alert("패스워드를 입력하세요!");
userpw.focus();
return false;
}
// submit()
frm.submit();
}
</script>
DAO를 만들때마다 DB연동 코드를 매번쓰기 힘드니 미리 객체를 만들어 두어 DAO를 만들때마다 객체를 받아오면 코드도 줄고 유지보수도 쉽다.
만들고자 하는 DAO에서 이렇게 간략한 코드로 받아올수있다.
conn = DBConnection.getConnection();
package com.koreait.web.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConnection {
public static Connection getConnection() {
Connection conn = null;
try {
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "jsp";
String password = "jsp";
Class.forName(driver);
conn = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println("드라이버 로딩 실패");
} catch (SQLException e) {
e.printStackTrace();
System.out.println("DB 접속 오류");
} catch (Exception e) {
e.printStackTrace();
System.out.println("알 수 없는 오류");
}
return conn;
}
}
DB의 data에 접근하기 위한 객체이다. DB에 접근하기 위한 로직을 분리하기 위해 사용한다.
직접 DB에 접근하여 data를 삽입, 삭제, 조회 등 조작할 수 있는 기능을 수행한다.
MVC 패턴의 Model에서 이와 같은 일을 수행한다.
package com.koreait.web.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.koreait.web.beans.UserBean;
public class UserDAO {
Connection conn;
PreparedStatement pstm;
ResultSet rs;
public UserBean login( String userid, String userpw ) {
UserBean user = null;
String sql = "SELECT * FROM TBL_USER tu WHERE USERID = ? AND userpw = ?";
try {
conn = DBConnection.getConnection();
pstm = conn.prepareStatement(sql);
pstm.setString(1, userid);
pstm.setString(2, userpw);
rs = pstm.executeQuery();
if( rs.next() ){
user = new UserBean();
user.setUserid(rs.getString(1));
user.setUserpw(rs.getString(2));
user.setUsername(rs.getString(3));
user.setUsergender(rs.getString(4));
user.setUserphone(rs.getString(5));
}
}catch (Exception e) {
e.printStackTrace();
}
return user;
}
}
자바빈즈 액션 태그를 활용하여 객체를 만들고 userid와 userpw를 받아온다. dao 객체를 만들고 로그인 성공시 main페이지로 넘어가고 로그인 실패시 login화면으로 넘어간다.
<%@page import="com.koreait.web.beans.UserBean"%>
<%@page import="com.koreait.web.dao.UserDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!--
로그인 기능 완성,
로그인 성공 -> main_view.jsp
로그인 실패 -> login_view.jsp
-->
<%
String userid = request.getParameter("userid");
String userpw = request.getParameter("userpw");
UserDAO user = new UserDAO();
UserBean userBaean = user.login(userid, userpw);
if( userBaean != null ){
// 로그인 성공
session.setAttribute("session_id", userBaean);
%>
<script>
location.href = "main_view.jsp";
</script>
<%
} else {
// 로그인 실패
%>
<script>
alert("로그인 실패!");
// location.href = "login_view.jsp";
history.go(-1);
</script>
<%
}
%>
</body>
</html>