[21.09.13] JSP:useBean, Cookie

yed·2021년 9월 13일
0

서블릿과 jsp는 결과적으로 동일한 바이트코드형태로 돌아간다.

기본적인 자바클래스에 웹 네트워킹을 위한 서블릿을 상속받은 것이라 서블릿은 자바와 동일함.


JSP:useBean

  • 특정 클래스 객체(object)를 쉽게 사용하기 위한 태그

기본타입

  • <jsp:useBean id="name" class="package.classname.java" />
  • <jsp:setProperty>
  • <jsp:getProperty>

속성(attributes)

  • id : 빈의 이름
  • class : 빈으로 사용될 클래스의 위치
  • scope : 빈에 사용될 범위
  • property : 빈의 각 속성 이름. 생성된 클래스의 변수이름과 동일해야한다
  • value : property에 들어갈 값

범위(scope)

  • page : 생성된 페이지(자기 자신) 내에서 사용할 수 있음
  • request : 요청된 페이지(A->B) 내에서 사용할 수 있음
  • session : 웹 브라우저(클라이언트)의 생명주기 내에서 사용할 수 있음
  • application : 웹 어플리케이션의 생명주기(프로젝트 영역) 내에서 사용할 수 있음

scope 포함 관계

page < request < session < application

이름을 중복으로 지으면 포함관계에 의해 의도가 달라질 수 있음.
해당 scope에 저장된 객체가 없으면 새로운 객체를 생성하고 객체가 있으면 해당 객체를 가져온다.


TestBean test=new TestBean();
  test.setMsg("msg값이 변경됨");
  out.write(test.getMsg());

new로 생성하는 방식

<jsp:useBean id="test" class="edu.java.jsp01.TestBean"></jsp:useBean>

useBean을 사용하는 방식. 둘의 동작은 동일하다

useBean 사용방법1

미리 클래스를 하나 생성하고 그 클래스의 객체선언 시 사용하는 것
name은 빈의 id와 같아야하며 property는 클래스의 변수명, value는 변수에 적용할 값.
getter/setter와 동일한 동작인데 비교적 옛날기술임.

<jsp:setProperty name="test" property="msg" value="msg값이 변경됨" />
<p>변경된 값 출력 : <jsp:getProperty property="msg" name="test" /></p>

useBean 사용방법2

getter/setter 사용

  <% test.setMsg("getter/setter 사용"); %>
  <p>변경된 값 출력 : <%=test.getMsg() %></p>

useBean 사용방법3

EL 표기법을 사용. 가장 많이 사용하는 방법이다.

<p>${test.msg}</p>

parameter 묶어서 받기

String name=request.getParameter("name");
String phone=request.getParameter("phone");
String email=request.getParameter("email");

기존에는 각각의 parameter값을 각각의 변수에 저장해주었다면

useBean을 사용하여 모든 parameter 값을 contact에 저장할 수 있다.

<jsp:useBean id="contact" class="edu.web.homework.ContactVO"></jsp:useBean>
<jsp:setProperty property="*" name="contact"/>

모든 파라미터*를 contact라는 bean 안에 넣는다.

<p>이름 : <%=contact.getName() %></p>
생성된 bean은 클래스 객체처럼 사용한다.

JSP Request

  • 요청한 HTTP의 객체(ip주소, 파라미터 등)을 갖고있는 객체. servlet의 HttpServletRequest와 동일하다
  • 요청한 하나의 객체(A->B)만 가지고 있고 요청위치를 벗어나면 사라진다. (값이 사라진다는 뜻)
  • ip주소 : request.getRemoteAddr()
  • Host Name : request.getHeader("host")
  • 쿠키 : request.getHeader("cookie")
  • servlet 경로 : request.getServletPath()
  • 전송된 메소드 방식 : request.getMethod()

JSP Response

HttpServletResponse 클래스의 객체와 동일하다
HTTP 요청에 대응하는 정보를 저장하는 객체.
JSP에서 쓰는일은 적어서 그냥 참고~~


Cookie와 Session

이용자가 로그인확인이 필요한 사이트를 이동할 때마다 매번 로그인을 해야만 하면 귀찮음. 그때 한번 로그인했다면 승인을 받게하여 로그인을 해야만 이용할 수 있는 기능들을 로그인없이 사용할 수 있게 한다.

이때 쿠키와 세션을 이용합니다.

HTTP는 HTML문서의 송수신을 위해 사용하는 프로토콜이다. 비연결지향, 무상태 프로토콜이라고도 함.
http는 요청을 넘겨주면 연결이 끝나는 프로토콜입니다.

HTTP 기본 특성

  • connectionless : 클라이언트가 요청을 한 후 응답을 받으면 연결을 끊는 특성
  • stateless : 통신이 끝나면 상태를 유지하지 않는 특성
(수정 21.09.14)

쿠키와 세션은 위 두가지 특징에서 http의 연결 상태를 유지하기 위해 사용한다.

쿠키는 필요한 정보를 클라이언트에서 저장함
세션은 필요한 정보를 웹 서버에서 저장함

정보저장이 목적이느냐 보안 목적이느냐에 따라 나뉨.

쿠키들은 해당 클라이언트에게 있기때문에 보안에 상관없는 정보들이 들어간다. 예를 들어 광고팝업창 체크 유무. 해제하기를 체크하면 해당 클라이언트한텐 팝업창이 뜨지않음.

세션은 id/pw를 입력해서 id회원 정보를 유지하기 위해서 사용함. 일정시간이 지나면 세션만료되면서 로그아웃되는 걸 볼 수 있음.

javax.servlet.http

웹 브라우저가 저장하는 데이터. key-value 형식.
필요한 정보나 브라우저에서 사용자가 선택한 내용(ex. 접속기록, 검색기록, 이미지)을 클라이언트(웹 브라우저)에서 저장하며 다양한 정보추적을 목적으로 데이터가 유지된다.

쿠키 사용자 식별 3단계

1) 서버 스크립트는 이름, 나이, 식별숫자 등 정보를 쿠키에 설정해 브라우저에 전송한다
2) 브라우저는 쿠키를 개인 PC에 저장한다
3) 다음 접속 시 브라우저에서 웹 서버에 특정 요청을 할 경우, 쿠키를 서버에 전송하고 서버는 사용자 식별 용도로 사용한다.

브라우저가 최초 요청 시 서버가 쿠키를 생성해서 응답함. 응답받은 쿠키를 브라우저가 저장하게 됨.
이미 한번 접속한 웹 브라우저에서는 저장된 쿠키를 요청에 담아 서버로 보내게 된다.

쿠키는 클라이언트에서 확인 할 수 있다.
언제만들어서 어떻게 쓰는지가 중요

//파라미터 값으로 쿠키 생성하기 
Cookie firstNameCookie=new Cookie("first_name", firstName);
Cookie lastNameCookie=new Cookie("last_name", lastName);
  
//만료 시간 설정하기. (초단위) : 24시간
firstNameCookie.setMaxAge(60*60*24);
lastNameCookie.setMaxAge(60*60*24);
  
//response.header에 쿠키 추가하기
response.addCookie(firstNameCookie);
response.addCookie(lastNameCookie);

쿠키를 생성한 도메인에서 f12->application->Cookies을 통해 브라우저가 종료되었다 다시 시작해도 쿠키가 유지되는 것을 확인 할 수 있다.


String.join("구분자", 배열) : 문자열 배열을 특정 구분자로 연결해주는 함수

profile
6개월 국비과정 기록하기

0개의 댓글