프로그래밍/JSP

JSP 로그인 만들기

하와이블루 2022. 11. 25. 22:55
728x90

 

 

 

미리 DB에 사용자 정보를 등록하고 클라이언트에서 입력한 사용자 정보와 비교하여 일치할 경우 로그인 성공과 로그인을 유지하는 로직을 만들어보자.

 

 

1. DB table 생성 및 사용자 정보 등록

-- tb_member 테이블 생성
create table tb_user(
    tb_idx bigint auto_increment primary key,
    tb_userid varchar(30) not null,
    tb_userpw varchar(20) not null,
    tb_name varchar(50) not null
);
insert into tb_user(tb_userid, tb_userpw, tb_name) values ('minjae','123456','김민재');

 

 

 

 

2. 로그인 페이지(login.jsp) 작성

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String userid = null;
	String name = null;
	String idx = null;
	if(session.getAttribute("userid") != null){
    		idx = (String)session.getAttribute("idx");
		userid = (String)session.getAttribute("userid");
		name = (String)session.getAttribute("name");
	}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인</title>
</head>
<body>
	<h2>로그인</h2>
<%
	if(userid == null){
%>
	<form method="post" action="login_ok.jsp">
		<p>아이디 : <input type="text" name="userid"></p>
		<p>비밀번호 : <input type="password" name="userpw"></p>
		<p><input type="submit" value="로그인"></p>
		<p>회원이 아니신가요? <a href='./member.jsp'>회원가입</a></p>
	</form>
<%
	}else{
%>
	<h3><%=userid%>(<%=name%>)님 환영합니다.</h3>
	<p>
		<input type="button" value="정보수정" onclick="location.href='info.jsp'">
		<input type="button" value="로그아웃" onclick="location.href='logout.jsp'">
	</p>
<%
	}
%>
</body>
</html>

로그인 페이지

 

 

 

 

3. 로그인 처리 페이지(login_ok.jsp)

<%@page import="java.sql.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String userid = request.getParameter("userid"); // minjae
	String userpw = request.getParameter("userpw"); // 123456
	
	Connection conn = null;
	PreparedStatement pstmt = null;
	ResultSet rs = null;

	String sql = "";
	String url = "jdbc:mysql://localhost:3306/aiclass";
	String uid = "root";
	String upw = "1234";

	try {
		Class.forName("com.mysql.cj.jdbc.Driver");
		conn = DriverManager.getConnection(url, uid, upw);
		if (conn != null) {
			sql = "select tb_idx, tb_name from tb_user where tb_userid=? and tb_userpw=?";
			pstmt = conn.prepareStatement(sql); // 컴파일
			pstmt.setString(1, userid);
			pstmt.setString(2, userpw);
			rs = pstmt.executeQuery();
			if(rs.next()){ // 로그인 성공
				session.setAttribute("userid", userid);
				session.setAttribute("idx", rs.getString("tb_idx"));
				session.setAttribute("name", rs.getString("tb_name"));
%>
			<script>
				alert('로그인되었습니다.');
				location.href="login.jsp"; // 로그인 페이지로 이동
			</script>
<%
			}else{ // 로그인 실패
%>	
			<script>
				alert('아이디 또는 비밀번호를 확인하세요');
				history.back();		// 그 전 패이지를 기억하고 전 패이지로 이동
			</script>
<%
			}
		}	
	} catch (Exception e) {
		e.printStackTrace();
}
%>

 

select tb_idx, tb_name from tb_user where tb_userid=? and tb_userpw=?

DB에서 사용자를 조회하여 만족하는 사용자가 존재할 경우 사용자의 정보를 이용하여 세션을 생성하고, 사용자가 존재하지 않을 경우 뒤로돌아가게된다.

 

 

 

 

 

4. 로그아웃 페이지(logout.jsp) 작성

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	session.invalidate();	// 세션 제거
%>
<script>
	alert('로그아웃 되었습니다');
	location.href='login.jsp';
</script>

 

 

 

사용자 정보 입력

 

 

로그인 성공시, 유저 사용자를 세션에 저장하여 로그인 상태를 유지한다. 

 

 

로그아웃 버튼 클릭시, 세션을 제거하한다.

 

 

 

 

 

728x90