본문 바로가기

bitcamp/JSP

JSP_쿠키/섹션/Bean/EL

1. Cookie란?

· 클라이언트 요청에 대한 응답을 마치고나면 채팅처럼 연결성이 지속되지 못하고 서버는 웹브라우저와의 관계를 종료하게된다.
 why? 한 개의 서버에 다수의 클라이언트를 계속 연결해두면 서버는 다운되기 때문!
· 연결이 끊겼을 때 어떠한 정보를 지속적으로 유지(로그인 상태 유지)하기 위해 Cookie 혹은 Session을 사용한다.
· 데이터를 쿠키 파일에 저장하여 서버에서 응답할 때 쿠키와 함께 웹브라우저에 전송되고, 
  서버에서 응답받은 새로운 URL에 접근할 때 쿠키와 함께 전송되어 데이터가 유지된다.
  (웹브라우저는 기본적으로 2개의 저장공간이 존재: 쿠키와 캐시영역(사진 중복 저장 방지))

 

 

2. Session이란?

· 쿠키와 동일하게 서버와의 관계를 유지하기 위한 수단으로 사용되며, 내장객체이기 때문에 객체 생성(new)를 하지 않고,

  객체를 통해 데이터를 저장/사용/삭제한다.
· session은 쿠키와 다르게 데이터가 서버에 저장되며(데이터 전달x), 웹브라우저의 쿠키 영역에 session id가 저장된다.
  (쿠키는 웹브라우저에, session은 서버와 웹브라우저 쿠키영역에 데이터 저장) 
· 연결이 지속되는 이유는 클라이언트 요청에 따른 정보를 서버가 id를 생성하여 서버에 저장하고, 관계를 유지시키기 때문이다.

 

3. Session id란?

· 클라이언트가 서버에 접근 시, 서버에서는 session 공간에 session id를 생성하여 데이터를 저장하고,
  정보를 cookie처럼 객체화 시켜 클라이언트 쪽에 전송하는 방법이 아닌 웹브라우저 쿠키 영역에 저장한다.
· 클라이언트에서 재 접근 시, 서버에서는 웹브라우저의 쿠키를 확인하여 해당 session id와 일치하는지 구분하여 응답한다.
  (session id를 통해 같은 user 인지 구분)
· session id 공간은 시간이 지정되기 때문에 일정 시간이 경과하면 session id는 소멸된다.

  session default 시간은 기본적으로 30분으로 설정되기 때문에 시간이 경과하면 재 로그인을 해야한다.
· session id는 브라우저 당 1개씩 제공하기 때문에, 로그인 한 후에 크롬창과 마이크로소프트(익스플로어) 창을 띄운다면,

  크롬은 자동로그인 상태로 익스플로어는 새로 로그인을 해야한다.

· session id는 보안 상의 이유로 웹피이지에 접속할 때마다 id명은 변경된다.

 

4. bean이란? 

· 반복적인 작업을 효율적으로 하기 위해 사용되며, java의 속성과 메소드로 이루어진 class이다.
  (jsp 페이지에 java 코드가 혼재한다면 다소 복잡해 보일 수 있기 때문에 bean을 사용하여 로직 부분을 분리)
· jsp에서 bean은 액션 태그를 이용하여 사용하고, bean class에는 디폴트 생성자와 멤버변수에 접근 가능한

  getter와 setter 메소드가 존재해야 한다.

· bean 액션 태그는 다음과 같이 사용된다.

 

5. EL이란?

· Expression Language의 약자로, 표현식 또는 액션태그를 대신해서 값을 표현하는 언어로 아래와 같이 사용한다.

· JSP 파일에 자바형식의 코드를 사용하는 경우보다 EL과 JSTL을 이용하는 경우 코드를 더 간결하게 작성할 수 있다.

· 내장객체로는 pageScope, requestScope, sessionScope, applicationScope, param 등이 사용된다.

 

※JSP 파일에서 "${list}" 와 같이 작성해도 오류가 발생하지 않는 이유? 
  웹브라우저에서는 html, javascrept만 받아들이기 때문에 서버에서 로딩하다가 Java 문법인 액션태그, EL, JSTL이 있다면, 

  html으로 미리 변환시켜 웹브라우저로 전송하기 때문에 오류가 발생하지 않는다.

 

6. JSTL 문법

· Jsp Standard Tag Library의 약자로, 액션태그로 해결하기 힘든 연산/조건문/반복문 부분을 담당하여 처리한다.

· Tomcat 프로그램에서는 제공하지 않는 문법이므로 lib 라이브러리 안에 파일을 복사하여 사용하거나,

  JSP 페이지에 <%@ taglib prefix="c" uri="http://java. sun. com/jsp/jstl/core" %>를 표기하여 사용하도록 한다. 필수!


7. JSTL 태그

· 출력 태그: <c:out value="출력하려는 결과값">

· 페이지 이동 태그: <c:redirect url="경로">

· 변수설정 태그: <c:set var="변수명" value="설정값" property="값" scope="범위">

· 반복문 for 태그: <c:forEach items="객체명" begin="시작" end="끝" var="변수명></c:forEach>

· 제어문 if 태그: <c:if test="조건" var="변수명" scope="범위"></c:if>

· 제어문 switch 태그: <c:choose>             

                            <c:when test="조건">실행내용</c:when>

                            <c:otherwise>실행내용</c:otherwise>

                            </c:choose>

 

8. Scope 범위

· JSP에서는 page, session, request, application 네가지 객체 범위를 제공하며, 각 객체마다 적용되는 범위가 다르다. 
 1) page : 생성된 페이지 내(현재 페이지)에서만 사용 가능
 2) session : 웹브라우저의 생명주기(설정한 시간)과 동일하게 사용 가능

 3) request : 요청된 페이지 내에서만 사용 가능(요청 받고 응답 처리가 완료되면 request 객체 소멸)

    forward의 경우? 페이지를 넘겨서 결과 값을 출력하므로 첫 번째 페이지에서 응답을 한 상태가 아니다. 

                         그러므로 두번째 페이지에서 응답 후에 객체는 소멸된다. (Scope 범위: request>page)
 4) application : 사이트 전체를 범위호 현재 사용하고 있는 어플리케이션 전체에 대해 사용 가능

    (a/b/c/d.jsp가 존재한다면 모두 사용 가능하고, 영역이 가장 넓다)

 

 

'bitcamp > JSP' 카테고리의 다른 글

JSP_게시판 작성을 위한 DB 맛보기!  (0) 2021.02.11
JSP_bean_연습문제  (0) 2021.02.11
JSP_연습문제  (0) 2021.02.11
JSP_기본개념과 경로  (0) 2021.02.11
JSP_Servlet_연습문제  (0) 2021.02.11