⭐jsp 로그인 흐름(순서)⭐

p_chan.log·2022년 10월 19일
0

JSP

목록 보기
5/5

💠로그인 폼(View)

로그인 폼을 만들어준다.

<%@ 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>

💠DB연동 객체

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에 접근하는 객체(DAO) / (Model)

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;
	}
}

💠컨트롤러 생성(Controller)

자바빈즈 액션 태그를 활용하여 객체를 만들고 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>
profile
개발자 박찬의 노트

0개의 댓글