티스토리 뷰
1. 쿠키
웹브라우저에서 서버로 어떤 데이터를 요청하면 서버측에서는
알맞은 로직을 수행 -> 데이터를 웹브라우저에 응답 -> 서버는 웹브라우저를 종료
이렇게 웹브라우저에 응답 후 관계를 끊는 것은 http프로토콜의 특징이다.
- 쿠키는 연결이 끊겼을 때, 어떤 정보를 지속적으로 유지하기 위한 수단으로 사용한다.
- 쿠키는 서버에서 생성하여 서버가 아닌 클라이언트측에 특정 정보를 저장한다(데이터를 웹브라우저에 저장한다)
- 그리고 서버에 요청할 때 마다 쿠키의 속성값을 참조 또는 변경할 수 있다
- 용량이 제한적이고 300개 까지 데이터 정보를 가질 수 있다
- 쿠키생성 -> 속성설정 -> response객체에 탑승
<쿠키사용 간단한 로그인 예제>
-DB사용 ㄴㄴ, 특정 ID 하나만 로그인 했을때
<login.html>
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title>Insert title here</title>
- </head>
- <body>
- <form action="loginOk.jsp">
- ID : <input type = "text" name="id">
- PW : <input type = "text" name="pw">
- <input type="submit" value="로그인">
- </form>
- </body>
- </html>
<loginOk.jsp>
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Insert title here</title>
- </head>
- <body>
- <%!
- String id,pw;
- %>
- <%
- id = request.getParameter("id");
- pw = request.getParameter("pw");
- if(id.equals("asdf") && pw.equals("1234")){
- Cookie cookie = new Cookie("id", id); //쿠키객체 생성, 앞에id값에다가 내가 만든 id값 삽입
- cookie.setMaxAge(60); //쿠키유지 최대시간 설정, 60초
- response.addCookie(cookie); //response객체에 탑재
- response.sendRedirect("welcome.jsp"); //로그인 성공시 페이지 이동
- } else {
- response.sendRedirect("login.html"); //실패시 다시 로그인창
- }
- %>
- </body>
- </html>
<welcome.jsp>
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Insert title here</title>
- </head>
- <body>
- <%
- Cookie[] cookies = request.getCookies();
- for(int i=0; i < cookies.length; i++){
- if(id.equals("asdf")){
- out.print(id + "님 환영합니다");
- }
- }
- %>
- </body>
- </html>
2. 세션 (Session)
- 세션도 쿠키와 마찬가지로 서버와의 관계를 유지하기 위한 수단이다
단, 쿠키와 달리 클라이언트의 특정 위치에 저장되는것이 아니라, 서버상에 객체로 존재한다.
따라서 세션은 서버에서만 접근이 가능하여 보안이 좋고 저장할 수 있는 데이터에 한계가 없다.
- 서버 컨테이너에서 클라이언트의 요청이 발생하면 자동으로 생성
- 클라이언트 요청 -> 세션 자동생성 -> 세션속성설정(내부객채사용)
<login.jsp>
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title>Insert title here</title>
- </head>
- <body>
- <form action="loginOk.jsp">
- ID : <input type = "text" name="id">
- PW : <input type = "password" name="pw">
- <input type="submit" value="로그인">
- </form>
- </body>
- </html>
<loginOk.jsp>
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Insert title here</title>
- </head>
- <body>
- <%!
- String id,pw;
- %>
- <%
- id = request.getParameter("id");
- pw = request.getParameter("pw");
- if(id.equals("asdf") && pw.equals("1234")){
- session.setAttribute("id", id);
- response.sendRedirect("welcome.jsp"); //로그인 성공시 페이지 이동
- } else {
- response.sendRedirect("login.html"); //실패시 다시 로그인창
- }
- %>
- </body>
- </html>
<welcome.jsp>
- <%@page import="java.util.Enumeration"%>
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Insert title here</title>
- </head>
- <body>
- <%
- while(enumeration.hasMoreElements()){
- if(sValue.equals("asdf")){
- out.print(sValue + "님 환영합니다.");
- }
- }
- %>
- <br>
- <a href="logout.jsp">로그아웃</a>
- </body>
- </html>
- Enumeration을 처음봐서 찾아보니까 순서가 있는 배열의 종류라고 생각하면 될거같다.
<logout.jsp>
- removeAttriute로 세션삭제
- <%@page import="java.util.Enumeration"%>
- <%@page import="com.sun.jmx.snmp.Enumerated"%>
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Insert title here</title>
- </head>
- <body>
- <%
- while (enumeration.hasMoreElements()){
- if(sValue.equals("asdf")){
- session.removeAttribute(sName);
- }
- }
- %>
- <a href="sessionTest.jsp">session TEST</a>
- </body>
- </html>
<sessionTest.jsp>
- 세션이 삭제됐는지 확인
- <%@page import="java.util.Enumeration"%>
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Insert title here</title>
- </head>
- <body>
- <%
- int i = 0;
- while(enumeration.hasMoreElements()){
- i++;
- out.println("sName : " + sName + "<br>");
- out.println("sValue : " + sValue + "<br>");
- }
- if(i==0){
- out.println("세션이 모두 삭제되었습니다.");
- }
- %>
- </body>
- </html>
'JSP' 카테고리의 다른 글
[JSP] Scope 간단예제 - 상품선택, 내가선택한 품목보기 (0) | 2018.07.13 |
---|---|
[JSP] 자바빈 JavaBean (0) | 2018.07.13 |
[JSP] Request, Response 간단한 메뉴계산 예제 (0) | 2018.07.10 |
[JSP] Request, Response 성적처리 예제 (0) | 2018.07.10 |
[JSP] 액션태그 (0) | 2018.07.10 |
- Total
- Today
- Yesterday