01cookie
Request Headers 에 쿠키명=값 을 쌍으로 들고다님
쿠키를 주고받는 연습
쿠키는 브라우저, 세션은 서버에 저장
(설명 ↓
java.util.Enumeration<java.lang.String>
getHeaderNames()
Returns an enumeration of all the header names this request contains. If the request has no headers, this method returns an empty enumeration.
Some servlet containers do not allow servlets to access headers using this method, in which case this method returns null
이 요청에 포함된 모든 헤더 이름의 열거를 반환합니다. 요청에 헤더가 없는 경우 이 메서드는 빈 열거를 반환합니다.
일부 서블릿 컨테이너는 서블릿이 이 메서드를 사용하여 헤더에 액세스하는 것을 허용하지 않습니다. 이 경우 이 메서드는 null을 반환합니다.
( 자바에서 컬렉션 프레임워크에서 저장된 요소를 읽어오는 방법을 표준화하기 위한 인터페이스 인 Iterator 과 사용 방법 비슷)
)
<body>
<h1>request headers </h1>
<%
Enumeration<String> enumeration = request.getHeaderNames();
while (enumeration.hasMoreElements()) {
String name = enumeration.nextElement();
%>
<p><%= name %> : <%= request.getHeader(name) %></p>
<%
}
%>
<hr>
<h1>request cookies</h1>
<%
Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {
%>
<p><%= cookie.getName() %> : <%= cookie.getValue() %></p>
<%
}
%>
</body>

- 코드와 실행하면 뜨는 페이지-
enumeration 은 뭔지 모르겠고
위에는 request header, 아래는 request cookie 인데
각각 request.getHeader(name), request.getCookies() 를 쓴 게 눈에 들어온다
cookie.getName, cookie.getValue 이런것도?
02addCokkie
쿠키 추가하기
<%
Cookie cookie = new Cookie("my-cookie", "my-value");
response.addCookie(cookie);
%>
my-cookie, my-value 를 쌍으로 cookie 에 넣었음
그리고 추가한 듯? response.addCokkie()
첫 줄이 쿠키를 생성한 것이고, 두번째 줄이 response 객체에 쿠키를 담은 (추가한) 것이다
쿠키를 추가한다고 하면, 이 두 과정이 모두 필요하다
페이지를 이동하면, 쿠키는 헤더에 포함되어 다른 페이지로 전송되는데, 이 때 Cookie[] cookies = request.getCookies(); 로 쿠키 배열을 반환, 없으면 null 반환한다?
실행 시 저 내용은 안 뜸. 당연함. 자바코드임.
대신, ↓

페이지소스보기-저장공간-쿠키
보면 my-cookie, my-value 가 추가되어있다! 신기해!! >_<
03maxAge
쿠키 추가한 뒤 유효시간을 설정해보기
cookie.setMaxAge(60); - 초단위라서 60초이다
response.addCokkie(cookie)
쿠키 확인해보면 expires 에 만료시간 표시됨, 새로고침하면 갱신됨 (참고로 유효시간 설정 안한 것들은 "세션" 이라고 써 있음)
뭐 확인은 못했지만 암튼 시간 지나면 사라진다고 한다
04addCookie-ex
쿠키추가는 다음과 같이 하면 된다
Cookie cookie = new Cookie("cookie-name", "cookie-value");
cookie.setMaxAge(60*60); //유효시간설정
response.addCookie(cookie); //이거까지 써야 추가되는지 잘 모르겠음
05session-cookie-maxage
세션 쿠키 maxAge 재설정
<%
Cookie[] cookies = request.getCookies();
Cookie sessionCookie = null;
for (Cookie cookie : cookies) {
String name = cookie.getName();
if (name.equals("JSESSIONID")) {
sessionCookie = cookie;
sessionCookie.setPath(request.getContextPath());
sessionCookie.setHttpOnly(true);
sessionCookie.setMaxAge(60*60);
response.addCookie(sessionCookie);
}
}
%>
request.getCookies()
뭔지는 몰라도 일단 쿠키를 얻어와서 cookies 에 저장
처음에 sessionCookie 를 선언, 처음이니까 null
향상된 for 문으로 cookies 를 cookie 에 저장
cookie.getName 은 아마 쿠키 이름 반환이겠지
만약 쿠키이름이 JE~ 어쩌고이면, sessionCookie 에 cookie 저장
그 뒤로는 줄줄이 setPath, setHttpOnly, setMaxAge 후 response.addCookie
06login-form,main,process
또그인;;
login-form
일단 그냥 평범한 로그인 창,action 으로 process 로 이동
process
<%
Cookie[] cookies = request.getCookies();
Cookie sessionCookie = null;
for (Cookie cookie : cookies) {
String name = cookie.getName();
if (name.equals("JSESSIONID")) {
sessionCookie = cookie;
sessionCookie.setPath(request.getContextPath());
sessionCookie.setHttpOnly(true);
sessionCookie.setMaxAge(60*60);
response.addCookie(sessionCookie);
}
}
%>
<%
// 로그인 처리
String userid = request.getParameter("userid");
if (userid != null) {
session.setAttribute("user", userid);
}
// main.jsp 리디렉션
response.sendRedirect("06main.jsp");
%>
위에서 쿠키 어쩌고 작업하고
밑에서는 정보확인 후 로그인 처리, main 으로 리디렉션
main
그냥 정보 확인해서 ~님 반갑습니다 / 손님 반갑습니다 + 로그아웃/로그인 링크 띄우는 것 밖에 없음
07add,remove
add
쿠키추가
Cookie cookie = new Cookie("remove-cookie","remove-value");
response.addCookie(cookie);
remove
쿠키삭제
Cookie cookie = new Cookie("remove-cookie", "remove-value");
cookie.setMaxAge(0); // maxage가 0이면 쿠키 삭제
response.addCookie(cookie);
쿠키선언 후 유효시간 cookie.setMaxAge 를 0으로 작성
즉, maxage 0으로 설정하면 쿠키삭제
08add,remove
07예제라는데 내용없음
'course 2021 > JSP' 카테고리의 다른 글
JSP12 - 11el (0) | 2021.11.19 |
---|---|
JSP11 - 10scope (0) | 2021.11.19 |
JSP09 - 08session (0) | 2021.11.18 |
JSP08 - 07redirect (0) | 2021.11.17 |
JSP07 - 06forward (0) | 2021.11.17 |
01cookie
Request Headers 에 쿠키명=값 을 쌍으로 들고다님
쿠키를 주고받는 연습
쿠키는 브라우저, 세션은 서버에 저장
(설명 ↓
java.util.Enumeration<java.lang.String>
getHeaderNames()
Returns an enumeration of all the header names this request contains. If the request has no headers, this method returns an empty enumeration.
Some servlet containers do not allow servlets to access headers using this method, in which case this method returns null
이 요청에 포함된 모든 헤더 이름의 열거를 반환합니다. 요청에 헤더가 없는 경우 이 메서드는 빈 열거를 반환합니다.
일부 서블릿 컨테이너는 서블릿이 이 메서드를 사용하여 헤더에 액세스하는 것을 허용하지 않습니다. 이 경우 이 메서드는 null을 반환합니다.
( 자바에서 컬렉션 프레임워크에서 저장된 요소를 읽어오는 방법을 표준화하기 위한 인터페이스 인 Iterator 과 사용 방법 비슷)
)
<body>
<h1>request headers </h1>
<%
Enumeration<String> enumeration = request.getHeaderNames();
while (enumeration.hasMoreElements()) {
String name = enumeration.nextElement();
%>
<p><%= name %> : <%= request.getHeader(name) %></p>
<%
}
%>
<hr>
<h1>request cookies</h1>
<%
Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {
%>
<p><%= cookie.getName() %> : <%= cookie.getValue() %></p>
<%
}
%>
</body>

- 코드와 실행하면 뜨는 페이지-
enumeration 은 뭔지 모르겠고
위에는 request header, 아래는 request cookie 인데
각각 request.getHeader(name), request.getCookies() 를 쓴 게 눈에 들어온다
cookie.getName, cookie.getValue 이런것도?
02addCokkie
쿠키 추가하기
<%
Cookie cookie = new Cookie("my-cookie", "my-value");
response.addCookie(cookie);
%>
my-cookie, my-value 를 쌍으로 cookie 에 넣었음
그리고 추가한 듯? response.addCokkie()
첫 줄이 쿠키를 생성한 것이고, 두번째 줄이 response 객체에 쿠키를 담은 (추가한) 것이다
쿠키를 추가한다고 하면, 이 두 과정이 모두 필요하다
페이지를 이동하면, 쿠키는 헤더에 포함되어 다른 페이지로 전송되는데, 이 때 Cookie[] cookies = request.getCookies(); 로 쿠키 배열을 반환, 없으면 null 반환한다?
실행 시 저 내용은 안 뜸. 당연함. 자바코드임.
대신, ↓

페이지소스보기-저장공간-쿠키
보면 my-cookie, my-value 가 추가되어있다! 신기해!! >_<
03maxAge
쿠키 추가한 뒤 유효시간을 설정해보기
cookie.setMaxAge(60); - 초단위라서 60초이다
response.addCokkie(cookie)
쿠키 확인해보면 expires 에 만료시간 표시됨, 새로고침하면 갱신됨 (참고로 유효시간 설정 안한 것들은 "세션" 이라고 써 있음)
뭐 확인은 못했지만 암튼 시간 지나면 사라진다고 한다
04addCookie-ex
쿠키추가는 다음과 같이 하면 된다
Cookie cookie = new Cookie("cookie-name", "cookie-value");
cookie.setMaxAge(60*60); //유효시간설정
response.addCookie(cookie); //이거까지 써야 추가되는지 잘 모르겠음
05session-cookie-maxage
세션 쿠키 maxAge 재설정
<%
Cookie[] cookies = request.getCookies();
Cookie sessionCookie = null;
for (Cookie cookie : cookies) {
String name = cookie.getName();
if (name.equals("JSESSIONID")) {
sessionCookie = cookie;
sessionCookie.setPath(request.getContextPath());
sessionCookie.setHttpOnly(true);
sessionCookie.setMaxAge(60*60);
response.addCookie(sessionCookie);
}
}
%>
request.getCookies()
뭔지는 몰라도 일단 쿠키를 얻어와서 cookies 에 저장
처음에 sessionCookie 를 선언, 처음이니까 null
향상된 for 문으로 cookies 를 cookie 에 저장
cookie.getName 은 아마 쿠키 이름 반환이겠지
만약 쿠키이름이 JE~ 어쩌고이면, sessionCookie 에 cookie 저장
그 뒤로는 줄줄이 setPath, setHttpOnly, setMaxAge 후 response.addCookie
06login-form,main,process
또그인;;
login-form
일단 그냥 평범한 로그인 창,action 으로 process 로 이동
process
<%
Cookie[] cookies = request.getCookies();
Cookie sessionCookie = null;
for (Cookie cookie : cookies) {
String name = cookie.getName();
if (name.equals("JSESSIONID")) {
sessionCookie = cookie;
sessionCookie.setPath(request.getContextPath());
sessionCookie.setHttpOnly(true);
sessionCookie.setMaxAge(60*60);
response.addCookie(sessionCookie);
}
}
%>
<%
// 로그인 처리
String userid = request.getParameter("userid");
if (userid != null) {
session.setAttribute("user", userid);
}
// main.jsp 리디렉션
response.sendRedirect("06main.jsp");
%>
위에서 쿠키 어쩌고 작업하고
밑에서는 정보확인 후 로그인 처리, main 으로 리디렉션
main
그냥 정보 확인해서 ~님 반갑습니다 / 손님 반갑습니다 + 로그아웃/로그인 링크 띄우는 것 밖에 없음
07add,remove
add
쿠키추가
Cookie cookie = new Cookie("remove-cookie","remove-value");
response.addCookie(cookie);
remove
쿠키삭제
Cookie cookie = new Cookie("remove-cookie", "remove-value");
cookie.setMaxAge(0); // maxage가 0이면 쿠키 삭제
response.addCookie(cookie);
쿠키선언 후 유효시간 cookie.setMaxAge 를 0으로 작성
즉, maxage 0으로 설정하면 쿠키삭제
08add,remove
07예제라는데 내용없음
'course 2021 > JSP' 카테고리의 다른 글
JSP12 - 11el (0) | 2021.11.19 |
---|---|
JSP11 - 10scope (0) | 2021.11.19 |
JSP09 - 08session (0) | 2021.11.18 |
JSP08 - 07redirect (0) | 2021.11.17 |
JSP07 - 06forward (0) | 2021.11.17 |