JSP, Servlet Cookie와 Session

강정우·2022년 8월 3일
0

JSP, Servlet, JDBC

목록 보기
7/19
post-thumbnail

쿠키와 세션은 왜 필요한가?

  • 앞선 포스팅에서 로그인 서비스 웹 페이지를 만들어보았다. 하지만 각 HTML 즉, 웹 페이지 간 정보 공유가 되는 방법이 없다. 그 이유는 HTTP가 비연결형 프로토콜이기 때문이다.
  • 즉 클라이언트와 서버간의 요청, 응답이 끝나면 그 즉지 연결이 종료되어 어떤 정보도 주고받지 않는다는 뜻이다.
  • 그 말인 즉슨 웹 페이지는 누가 로그인을 했는지, 다음 서비스를 제공할 수 없다는 뜻이다.
  • 그래서 이를 보완하고자 나온 개념이 cookiesession이다.
  • cookiesession의 차이점
  • 자바코드이기 때문에 항상 JSP에서 씌여야 한다. 즉, Cookie나 Session이 사용될 페이지는 jsp로 작성되어야 한다는 뜻이다.
<%
Cookie cookie = new Cookie("id", "smart");
%>

  • 사용자에게 무언가를 보내려면 response객체를 쓰면 된다.
<%
response.addCookie(cookie);
%>
  • 사용자 pc에 저장된 쿠키정보를 가져옴 이때 쿠키가 한두개가 아니기 때문에 배열형태로 가져온다.
<%
Cookie[] cookies = request.getCookies();
%>

<%
for(int i =0; i<cookies.length; i++){
	out.print("쿠키 이름 : " + cookies[i].getName()+"<br>");
	out.print("쿠키 콘텐츠 : " + cookies[i].getValue()+"<br>");
}
%>
  • 다른 정보는 암호화 되어있지만 보안을 위해 올리지 않겠다.
  • 사용pc에 direct로 접근하여 파일을 삭제할 수 없기에 cookie의 수명을 조절하여 덮어 씌우는 방식으로 cookie를 삭제하고 있다.
<%
//삭제하려는 쿠키의 Name값으로 쿠키생성
Cookie cookie = new Cookie("id","");

// 쿠키의 생명주기를 설정
cookie.setMaxAge(0);

// 사용자의 pc에 쿠키 덮어 씌우기
response.addCookie(cookie);
%>

  • Longin Con의 일부를 발췌
// JDBC 연동 후 select문으로 id, pw가 일치할 때 실행문.

if(rs.next()) {
	Cookie cookie = new Cookie("id",id);
	response.addCookie(cookie);
    
	response.sendRedirect("LoginS.jsp");
}else {
	response.sendRedirect("LoginF.html");
}
  • 로그인 성공시 클라이언트의 이름 작성 후 환영 문구 출력하는 jsp
Cookie[] cookies = request.getCookies();
for (int i = 0; i < cookies.length; i++) {
	if (cookies[i].getName().equals("id")) {
		out.print(cookies[i].getValue() + "님 환영합니다." + "<br>");
	}
}

2. Session

  • 아래 코드들을 보면 cookie와는 다르게 생성자가 없다. 그 이유는 request, response, out 처럼 내장 객체라 객체 생성없이 바로 사용 가능하기 때문이다.
  • 아래 코드가 실행되는 순간 서버어느 구석에 세션이 생성이 되고 그 안에 name이라는 상자에 value가 생성되어있다는 것을 항상 생각해야 한다.

1. session 생성 (get)

<%
session.setAttribute("id","smart");
%>

2. session 가져오기 (set)

  • session의 get함수가 가져오는 자료형은 모든 class의 super class인 Object class이다. 따라서 원하는 query를 짜고 싶다면 반드시 형 변환히 필수이다.
<%
String id = (String)session.getAttribute("id");
%>

3. session 삭제 (remove)

<%
session.removeAttribute("id");
%>

2-1. Session 적용

  • Longin Con의 일부를 발췌

servlet과 달리 jsp는 객체 자동생성 기능이 없으므로 servlet에서 사용한다면 객체를 생성후 사용하여야 한다.

// JDBC 연동 후 select문으로 id, pw가 일치할 때 실행문.

if(rs.next()) {
	HttpSession session = request.getSession();
    
    사용자 'id'를 server 한 구석에 session 할당(set).
	session.setAttribute("id", id);
	response.sendRedirect("LoginS.jsp");
	} else {
	response.sendRedirect("LoginF.html");
}
  • 로그인 성공시 클라이언트의 이름 작성 후 환영 문구 출력하는 jsp
<%
	// 서버 한 구석에 만들어져 있는 session을 가져와서(get) 쓰겠다.
	String id =(String)session.getAttribute("id");
%>
<%= id %>님 환영합니다.

전체 그림

profile
智(지)! 德(덕)! 體(체)!

0개의 댓글