본문 바로가기
  • 마침표 보다 쉼표를 나타내자
국비교육 [完]/WebMarket

6. 세션으로 로그인

by Y코더 2023. 3. 9.
728x90

처음 로그인 상태로 가보자.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ page import="java.util.Date"%>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%@ include file="menu.jsp"%>
	
		<div class="text-center">
			<br/>
			<br/>
			<%@ include file="./process/IdSaveMain2.jsp"%>
			<br/>
			<br/>
		</div>
		<hr>
	<%@ include file="./footer/footer.jsp"%>
</body>
</html>

 

중간에 IdSaveMain2.jsp로 이동하게 된다.

그전에 쓰던 1버전을 구버전으로 만들고 세션으로 로그인을 판별해보자.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="utils.CookieManager" %>
<%
   String loginId = CookieManager.readCookie(request, "loginId");
   //CookieManager.java에서 static으로 Cookie객체가 생성되기 때문에
   //import해온 IdSaveMain.jsp에서는 새로 객체를 생성할 필요가 없다.

   String cookieCheck = "";
   if(!loginId.equals("")){
      cookieCheck = "checked";
   }
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Session</title>
</head>
<body>
	<h2>로그인 페이지</h2>
	<span style="color: red; font-size: 1.2em;">
		<%= request.getAttribute("LoginErrMsg") == null ?
				"" : request.getAttribute("LoginErryMsg") %>
	</span>
	<%	
		// 로그인 상태 확인
		if(session.getAttribute("UserID") == null) {
			// 로그아웃 상태
	%>
	<script>
		function validateForm(form) {
			if (!form.user_id.value) {
				alert("아이디를 입력하세요.");
				return false;
			}
			if (form.user_pw.value == "") {
				alert("패스워드를 입력하세요.");
				return false;
			}
		}
	</script>
	<form action="/WebMarketY/Web/LoginProcess.jsp" method="post">
   	  <br/>
      회원님을 기억할까요?
   <input type="checkbox" name="save_check" value="Y" <%= cookieCheck %> />
      <br/>
      <br/>
      <input class="form-control form-control-lg" type="text" name="user_id" value="<%= loginId %>" placeholder="아이디를 입력해 주세요!!" aria-label=".form-control-lg example">
      <br/>
      <br/>
      <input class="form-control form-control-lg" type="text" name="user_pw" placeholder="비밀번호를 입력해 주세요!!" aria-label=".form-control-lg example">
      <br/>
      <br/>
       <button type="submit" class="btn btn-success">로그인하기</button>
       <button type="button" class="btn btn-primary" onclick="location='./signUp/addUser.jsp'">회원가입</button>
   </form>
	<%
	}  else {
	%>
	
		<%= session.getAttribute("UserName") %> 회원님, 로그인하셨습니다.<br/>
		<a href="Logout.jsp">[로그아웃]</a>
	<%
	}
	%>
</body>
</html>

기본적인 틀은 동일하다.

여기에서 값을 받아서 처리하는 코드를 다르게 할 것이다.

form 에서 받은 값이 LoginProcess.jsp 로 넘어가서 판별 할 것이다.

 

 

우선 필요한 기능을 임포트해서 불러와 준다.

<%@ page import="membership.MemberDTO" %>
<%@ page import="membership.MemberDAO" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="utils.CookieManager" %>
<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="utils.JSFunction" %>
<%@ page import="common.JDBConnect" %>
<%@ page import="java.sql.Statement" %>
<%@ page import="java.sql.ResultSet" %>
<%
// 로그인 폼으로 부터 받은 아이디와 패스워드
String id = request.getParameter("user_id");
String pass = request.getParameter("user_pw");

// web.xml 에서 가져온 데이터베이스 연결 정보
String oracleDriver = application.getInitParameter("OracleDriver");
String oracleURL = application.getInitParameter("OracleURL");
String oracleId = application.getInitParameter("OracleId");
String oraclePwd = application.getInitParameter("OraclePwd");

String user_pw = request.getParameter("user_pw");
String save_check = request.getParameter("save_check");

MemberDAO dao = new MemberDAO(oracleDriver, oracleURL, oracleId, oraclePwd);
MemberDTO memberDTO = dao.getMemberDTO(id, pass);
dao.close();

if (memberDTO.getId() != null) {	// 로그인 성공
	if(save_check != null && save_check.equals("Y")){
	     CookieManager.makeCookie(response, "loginId", id, 86400);
	  }else {
	     CookieManager.deleteCookie(response, "loginId");
	  }
	session.setAttribute("id", memberDTO.getId());
	session.setAttribute("name", memberDTO.getName());
	JSFunction.alertLocation("로그인에 성공했습니다", "./signUp/LoginS.jsp", out);
}
else {	// 로그인 실패
	request.setAttribute("LoginErrMsg", "로그인 오류입니다.");
	request.getRequestDispatcher("LoginDisplay.jsp").forward(request, response);
}
%>

이번은 오라클을 접속하는 방법을 달리 해보았다.

web.xml 에서 로그인 정보를 가져오게 되었다.

JDBConnect 를 불러와서 데이터 베이스를 연결한다.

 

로그인이 성공한다면,

이제 세션에 값을 저장할 것이다.

그 저장한 값을 가지고 다음에는 로그인 유지를 기능을 만들어 볼 것이다.

 

로그인 값이 정확하지 않다면

로그인 페이지로 되돌리게 만들었다.

 

728x90