[WEB]

[JSP & Servlet] 쿠키 Cookie / 세션 Session / 캐시 Cache

ddgoori 2020. 7. 5. 15:13

* 쿠키/세션 비교

 

 

 쿠키

세션 

 저장위치

클라이언트 

서버 

 보안

변질 우려로 인해 보안 취약 

비교적 보안성이 좋음 

 라이프 사이클

만료 기간 지정, 브라우저 종료 시에도 유지 

브라우저 종료시 삭제 (기간 지정이 가능하긴 함)

 속도

빠름 

느림 (서버에 정보가 있으므로)

 



출처: https://ryusae.tistory.com/7 [초보자 전용 마을]

 

ryusae.tistory.com/7

 

[HTTP] 쿠키/세션/캐시의 차이점은?

0. HTTP 의 특징 (1) Stateless 프로토콜 클라이언트의 상태 정보를 가지지 않는 서버 처리 방식이다. 클라이언트와 첫번째 통신에서 데이터를 주고 받았다 해도, 두번째 통신에서 이전 데이터를 유��

ryusae.tistory.com

 

 

 

쿠키란?

 

https://lookingfor.tistory.com/entry/%EC%9E%90%EB%B0%94-%EC%BF%A0%ED%82%A4-%EB%8B%A4%EB%A3%A8%EA%B8%B0-%EC%BF%A0%EA%B8%B0-%EC%83%9D%EC%84%B1-%EC%A1%B0%ED%9A%8C-%EC%82%AD%EC%A0%9C

 

자바 쿠키 다루기 (쿠기 생성, 조회, 삭제)

쿠키는 4개의 속성과 하나의 데이터를 가지는 구조체이다. 서버는 응답에 Set-Cookie 헤더를 포함시키는 방식으로 쿠키를 설정한다. 쿠키는 key, 값 쌍과 선택적인 어튜리뷰트들로 구성된다. 쿠키 ��

lookingfor.tistory.com

- 보안에 취약

- 서버와 클라이언트가 연결을 시도한 흔적을 남겼다가 나중에 흔적을 가지고 사용할 수 있도록 함

- HTTP 프로토콜은 특징이있다. 

 

쿠키구현

 

 

 

 

* 출처:

 

[JAVA] 반복문 for문, while문, for each문

반복문이란?  반복문이란 어떤 프로그램 명령어를 반복하여 실행할 수 있는 문법입니다. 프로그램 동작을 제어함에 있어서 반복문은 정말 중요하다고 할 수 있습니다. 처리할 과정이 많다고 ��

webcoding.tistory.com

for each문

기본 사용법

for (변수 : 반복 가능한 객체) {
    // 실행문
}

for each문은 배열과 같이 여러 가지 값들이 들어 있는 객체에 대해 순차적으로 반복문을 실행할 수 있는 문법입니다.

 

결과

public static void main(String[] args) {
    int[] array = {1, 2, 3, 4};
        
    for (int e : array) {
        System.out.println(e); // 1, 2, 3, 4
    }
}

 ':'를 기준으로 왼쪽에는 하나의 변수를 선언하고, 오른쪽에는 배열이나 리스트 같은 연속된 값들을 넣어줍니다. 만약 array부분에 배열이 들어간다면 배열의 첫 번째 값을 e에 넣고 수행문을 실행합니다. 실행이 끝나고 다시 e에 두 번째 값을 넣어 실행하는 식으로 모든 요소를 순차적으로 한 번씩 e에 대입하여 실행합니다. 따라서 요소의 개수만큼 반복을 진행하게 됩니다.

 

 

login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login Page</title>
</head>
<body>

	<%
		Cookie[] cookies = request.getCookies();
		System.out.println("cookies:" + cookies);
		
		if(cookies != null) {
			for(Cookie c : cookies) {
				if(c.getName().equals("memberID")) {
						response.sendRedirect("loginOk.jsp");
				}
			}
		}
	%>

	<form action="loginCon" method = "post">
		ID : <input type = "text"  name ="mID"><br>
		PW : <input type = "password" name ="mPW"><br>
		<input type ="submit" value ="login">
	</form>

</body>
</html>

 

 

loginCon.java

package com.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.Cookie;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class loginCon
 */
@WebServlet("/loginCon")
public class loginCon extends HttpServlet {


	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		//login.jsp에서 사용자가 입력한 데이터 정보를 가져
		PrintWriter out = response.getWriter();
		
		String mId = request.getParameter("mID");
		String mPw = request.getParameter("mPW");
		
		out.print("mid : " + mId);
		out.print("mid : " + mPw);
		
		//쿠키에 저장
		Cookie[] cookies = request.getCookies();
		Cookie cookie = null;
		
		for(Cookie c : cookies) {
			
			System.out.println("c.getName() : " + c.getName() + ", c.getValue() : " + c.getValue());
			
			if(c.getName().equals("memberId")) {
				cookie = c;
			}
		}
		
		if(cookie == null) {
			System.out.println("cookie is null");
			cookie = new Cookie("memberId", mId);
		}
		
		response.addCookie(cookie);
		cookie.setMaxAge(60*60); //쿠키의 유효기
		
		response.sendRedirect("loginOK.jsp");
		
	}


	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

	}

}

 

 

loginOk.jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>loginOk.jsp</title>
</head>
<body>
	<%
		Cookie[] cookies = request.getCookies();
	
		for(Cookie c : cookies) {
			
			out.print("name:" + c.getName()+"<br>");
			out.print("value:" + c.getValue()+"<br>");
			out.print("------------------------");

		}
	%>

</body>
</html>