JSP/Servlet - 쿠키와 세션

songmin jeon·2024년 1월 4일
0

1. 쿠키

1.1. 쿠키 작동방식



1.2. 쿠키 사용예시와 단점



1.3. 쿠키 사용해보기

  • 쿠키 생성 방법
// 1. 쿠키 객체 생성
// Cookie(name(String), value(String))
Cookie cookie = new Cookie("cookie1", "송민;

// 2. 유효기간 설정(초단위)
cookie.serMaxAge(60*60*24*365);

// 3. 클라이언트에게 쿠키 전송(서버 -> 클라이언트)
response.addCookie(cookie);

// 3.1. 쿠키를 생성과 동시에 전송
response.addCookie(new Cookie("id", "test"));
  • 쿠키 출력해보기
// 1. 쿠키 객체 가져오기
Cookie[] cookie = requst.getCookies();

for(Cookie c : cookies){
	out.print(c.getName() + " : " + c.getValue() + "<br>");
}
  • 쿠키 삭제하기
// 1. 쿠키를 생성(쿠키를 삭제시켜주는 메소드가 없음)
// 같은 name으로 생성해서 유효기간을 0으로 바꾸기
Cookie cookie = new Cookie("cookie1", "");

// 2. 유효기간 0초
cookie.setMaxAge(0);

// 3. 클라이언트에게 전송
response.addCookie(cookie);

2. 세션

2.1. 세션 작동방식



2.2. 세션의 특징

  • 세션은 서버의 자원을 사용하기 때문에 무분별하게 만들다보면 서버의 메모리가 감당할 수 없어질 수가 있고 속도가 느려질 수 있다



2.3. 세션 사용해보기

  • 세션 꺼내오기
// 1. session 꺼내오기
HttpSession session = request.getSession();
  • 세션 생성해보기
// 1. 세션 값 설정
// setAttribute(name(String), valus(Object))
session.setAttribute("name", "송민");
session.setAttribute("age", 20);

// 서버가 알아서 세션 아이디를 부여해줄 것임으로 응답 x
  • 세션 불러오기
String name = (String) session.getAttribute("name");
Integer age = (Integer) session.getAttribute("age");
  • 세션 유효기간
session.getMaxInactiveInterval();
  • 세션 삭제하기
// 1. name 지정하여 삭제하기
session.removeAttibute("name");
session.removeAttibute("age");

// 2. session 모두 삭제
session.invalidate();


3. 실습

  • loginform.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>
	<form action="Ex08logincheck.jsp">
		아이디:<input type="text" name="id"><br>
		비밀번호:<input type="text" name="pw"><br>
		<input type="submit" value="로그인"> 
	</form>
</body>
</html>

  • logincheck.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>
	<%
		String id = request.getParameter("id");
		String pw = request.getParameter("pw");
		
		if(id.equals("test") && pw.equals("12345")){
			session.setAttribute("id", "SongTestSss");
			response.sendRedirect("Ex08main.jsp");
		} else {
			response.sendRedirect("Ex08loginform.jsp");
		}
	%>
</body>
</html>

  • main.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>
	<%
		String id = (String) session.getAttribute("id");
	%>
	
	<%=id %>님 환영합니다.
	<a href="Ex08logout.jsp">로그아웃</a>
</body>
</html>

-logout.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>
	<%
		// 세션 값 모두삭제
		session.invalidate(); // 무효화 하다.
		response.sendRedirect("Ex08loginform.jsp");
	%>
</body>
</html>

3.1. 로그인 실패시 문구 띄우기

  • loginform.jsp


  • logincheck.jsp


  • 로그인 실패시 다음과 같이 표기됨 !
profile
제가 한 번 해보겠습니다.

0개의 댓글