2021. 4. 30. 16:56ㆍJSP 공부
이번에는 어제에 이어서, 회원가입 한 데이터를 가지고, 로그인 페이지를 만들어 볼 겁니다.
로그인 페이지 만들기
만들기 전에, 흐름을 생각해 봅시다.
회원가입 되어 있는 정보 (데이터베이스) 에 접근해서, id와 pw가 있다면 로그인에 성공을 하고, 없다면 실패를 합니다.
만약 로그인에 성공을 한다면, 마이 페이지 같은 곳이 나오겠죠? ( 로그아웃 , 회원정보 수정, 회원탈퇴 등등 )
로그인을 구현하려면 먼저, 아래와 같이 로그인하는 양식을 만들어 주어야 겠죠?
파일명 : login.jsp
<body>
<form action="login_ok.jsp" method="post">
아이디:<input type="text" name="id"><br/>
비밀번호:<input type="password" name="pw"><br/>
<input type="submit" value="로그인"><br/>
</form>
</body>
아이디와 비밀번호를 입력하고, 로그인을 누르면, login_ok.jsp 로 이동을 시켜 줍니다.
login_ok.jsp 에서는 입력받은 아이디와 비밀번호를 바탕으로 데이터를 찾아 주면 되겠죠?
아이디와 비밀번호가 같이 일치하는게 있다면, 데이터가 있다는거고, 로그인에 성공 했다는 겁니다.
파일명 : login_ok.jsp
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
// DB연결에 필요한 변수 선언
String url = "jdbc:oracle:thin:@localhost:1521/XEPDB1";
String uid = "JSP";
String upw = "JSP";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "select * from members where id = ? and pw = ?";
try{
// 드라이버 호출
Class.forName("oracle.jdbc.driver.OracleDriver");
// conn 생성
conn = DriverManager.getConnection(url, uid, upw);
// pstmt 생성
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
pstmt.setString(2, pw);
// sql실행
rs = pstmt.executeQuery();
if(rs.next()){ // 로그인 성공(인증의 수단 session)
id = rs.getString("id");
String name = rs.getString("name");
session.setAttribute("user_id", id);
session.setAttribute("user_name", name);
response.sendRedirect("login_welcome.jsp"); // 페이지이동
} else{ // 로그인 실패
response.sendRedirect("login_fail.jsp"); // 실패 페이지
}
} catch(Exception e){
e.printStackTrace();
response.sendRedirect("login.jsp"); // 에러가 난 경우도 리다이렉트
} finally{
try{
if(conn != null) conn.close();
if(pstmt != null) pstmt.close();
if(rs != null) rs.close();
} catch(Exception e){
e.printStackTrace();
}
}
%>
그리고, 로그인에 성공했다면, session을 만들어 줍시다. ( 인증용 세션 )
만약, 코드 실행중 에러가 난다면, 다시 login.jsp 로 넘겨주면 되겠네요
로그인에 성공하면, login_welcome.jsp 로 이동을 합니다.
로그인에 실패하면, login_fail.jsp 로 이동을 합니다.
파일명 : login_welcome.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String id = (String)session.getAttribute("user_id");
String name = (String)session.getAttribute("user_name");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%=id %>(<%=name %>)님 안녕하세요
<a href="logout.jsp">로그아웃</a><br/>
<a href="getInfo.jsp">정보수정</a><br/>
<a href="delete_ok.jsp">회원탈퇴</a><br/>
</body>
</html>
※ 아직, 로그아웃 / 정보수정 / 회원탈퇴는 미구현인 상태 입니다.
파일명 : login_fail.jsp
<%@ 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>
<h2>아이디와 비밀번호를 확인하세요</h2>
<a href="login.jsp">다시 로그인하기</a>
</body>
</html>
로그인에 실패하면, 다시 로그인을 할 수 있도록 링크를 걸어주면 편할 거 같죠?
그리고, 로그아웃을 누르게 되면, session을 지워주고, 다시 로그인 페이지로 이동 해주면 될 거 같네요
파일명 : logout.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//인증정보(세션삭제)
//리다이렉트
session.invalidate();
response.sendRedirect("login.jsp");
%>
이번에는 이렇게, 로그인 페이지를 만들어 보았습니다.
고생하셨습니다
다음 글로 이어집니다.
'JSP 공부' 카테고리의 다른 글
Day54 - [JSP]회원탈퇴 구현하기 (0) | 2021.04.30 |
---|---|
Day54 - [JSP]정보수정 페이지 만들기 (0) | 2021.04.30 |
Day53 - [JSP]회원가입 페이지 만들기 (4) | 2021.04.29 |
Day53 - [JSP]Action Tag (0) | 2021.04.29 |
Day52 - [JSP]forward (0) | 2021.04.28 |