프로그래밍/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