웹사이트의 로그인 성공 시 해당 사용자의 정보를 어떻게 가지고 있어야할까?

 

이는 세션쿠키를 이용해서 가지고 있을 수 있다!

 

즉 쉽게 말해서 클라이언트측에 남느냐 서버에 기록이 남느냐에 따라 쿠키(과자부스러기=흔적)이나 세션이냐

클라이언트에 흔적남기기 = 쿠키(Cookie)

서버에 흔적남기기 = 세션(Session)

 

우리는 Session에 대해 알아볼 것 이다.

 

정말 쉽게 말해보자면 클라이언트가 서버에 요청하면 해당 클라이언트에 이름표(?)를 붙여놓는다고 할 수 있다.

이제 그 이름표를 가지고 정보를 가지고 올 수 있다.

 

코드를 보면서 이해해보자!

아래의 예제는 클라이언트측의 코드(jsp)이다.

session.getAttribute(); 라는 코드가 의심스럽다.

파라미터로 값들을 구별할 수 있는 id값을 넣는 것이다. 서버측 코드를 보면 바로 이해할 수 있을 것이다.

<%@page import="admin.member.Admin"%>
<%@ page contentType="text/html;charset=utf-8"%>
<%
	//세션에서 데이터 꺼내기
	out.print("당신이 사용하고 있는 세션객체는 "+session);
	Admin admin = (Admin)session.getAttribute("ad");
	
	//만일 admin VO가 null이면? 인증을 거치지 않거나, 세션이 만료된 상황이므로, 현재
	//페이지에 대한 접근 자체를 막아야한다..
	if(admin!=null){
%>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<%@ include file="/admin/inc/head.jsp" %>
<style>

</style>
</head>
<body>
<div><a href="#"><%=admin.getMid() %></a>님 반갑습니다.</div>
<a href="/admin/logout.jsp">로그아웃</a>
<%@include file="/admin/inc/topnavi.jsp" %>
<div style="padding-left:16px">
  <h2>Top Navigation Example</h2>
  <p>Some content..</p>
</div>

</body>
</html>
<%}else{%>
<script>
alert('올바르지 않은 접근입니다.');
history.back();
</script>
<%}%>

 

이제 서버측의 코드를 보자

단순히 서버에 저장된 id와 password랑 클라이언트측에서 파라미터로 보낸 id와 passsword가 같으면 세션에 저장을 한다.

session.setAttribute("세션ID", 저장할 객체(?)); 

<%@page import="admin.member.Admin"%>
<%@ page contentType="text/html;charset=utf-8"%>
<%@include file="/inc/lib.jsp" %>
<%
	/* 
	원래는 데이터베이스에서 조회를 해야하지만, 추후 하기로 하고
	일단은 스트링으로 비교해본다..
	*/
	String admin_id = "scott";
	String admin_pass="1234";
	
	String mid = request.getParameter("mid");
	String password = request.getParameter("password");
	
	if(admin_id.equals(mid)&&admin_pass.equals(password)){
		//로그인 성공에 대한 보상, 관리자 페이지 보여주기
		//js의 location.href와 동일한 기능의 jsp 기능 이용해보자
		Admin admin = new Admin();
		admin.setMid(mid);
		admin.setPassword(password);
		
		//jsp의 내장객체인 session객체는 클라이언트가 신규접속이라고 생각할 때, 새로운 session
		//인스턴스를 생성하고 세션 ID도 생성하여 세션에 부여한다..
		//이 세션은 클라이언트가 브라우저를 종료하지 않거나, 일정시간내에 재접속을 할 경우 계속
		//사용할 수 있다.. 따라서 웹은 stateless기반이지만, 서버측 메모리에 생성된 세션을 이용
		//하면 마치 연결이 유지된 것처럼 보여질 수 있다. 주용도) 로그인 후 회원정보를 모든 페이지에서
		//사용할 수 있는 기능, 장바구니 등에 사용..
		session.setAttribute("ad", admin);
		System.out.println("로그인 요청 시 사용중인 "+session);
		response.sendRedirect("/admin");//클라이언트로 하여금 지정한 url로 요청을 시도
	}else{
		out.print(getMsgBack("로그인 정보가 일치하지 않습니다"));
	}
%>

 

실행결과

 

위 코드를 이해한다면 DB와 연결하고 위와 비슷하게 세션을 저장하면 끝~

'프로그래밍 > JSP' 카테고리의 다른 글

JSP | MVC패턴에 대한 이해  (0) 2020.12.16
JSP | 서블릿(Servlet) 이해  (0) 2020.12.16
JSP | 커넥션풀(Connection Pool)  (0) 2020.12.11
JSP | MyBatis 사용해보기  (0) 2020.12.10
JSP - 페이징 이해  (0) 2020.12.08

+ Recent posts