Joslynn의 하루

MSA Full-Stack 개발자 양성 과정 - JSP 내장객체 session, application / Java AtomicInteger_221004 본문

MSA Full-Stack 개발자 양성과정/JSP&Servlet

MSA Full-Stack 개발자 양성 과정 - JSP 내장객체 session, application / Java AtomicInteger_221004

Joslynn 2022. 10. 4. 15:29

JSP 내장 객체

- session

    : HttpSession
    :  클라이언트의 정보를 서버측에 저장할때 사용함.
    : 저장된 정보는 브라우져 창이 시작 해서 종료할때까지 저장정보가 유지됨.
       (일반적으로 로그인 ~ 로그아웃 )
    : 접속된 각각의 클라이언트마다 생성됨.
    : 기본 세션의 시간은 30분(1800초)

    * session.setAttribute(String name, Object value);
      : 세션의 정보를 저장.

    * Object value = session.getAttribute(String name);
      : 세션의정보가져오기

   * session.setMaxInactiveInterval(int interval);
      : 세션의 유지되는 시간설정(초단위)
  
   * int interval = session.getMaxInactiveInterval(); 
    : 설정된 세션의 시간 가져옴(초단위)

   * String id = session.getId();
    : 세션이 생성되면 자동으로 만들어지는 세션아이디
 
   * Enumeration e =session.getAttributeNames();
    : 세션에저장된 name 가져오기

   * boolean b = session.isNew();
      : 현재 브라우져창의 세션이 새로운것인지 판별
         (true면 새로운페이지, false 기존페이지)

   * session.invalidate();
      : 세션의 모든정보를 지운다.

   * session.removeAttribute(java.lang.String name);
    : 저장된 세션의 정보중 name에 해당하는 정보 삭제

   *  long time = session.getLastAccessedTime();
    : 마지막 접속시간

   * long time = session.getCreationTime();
    : 세션이 시작된 시간.

 


- application

     : ServletContext
     : 특정 정보를 서버가 시작해서 종료될때까지 유지되도록 함.
       서버에 대한 정보를 추출과 웹 어플리케이션단위로 상태정보저장

     : 도메인에 접속한 서버들이 공유하는 영역
     
    * application.setAttribute(String name, Object value);
       : 정보를 저장하는 기능

    * Object value = application.getAttribute(String name);
       : name에 해당하는 정보를 가져오는 기능

    * application.removeAttribute(String name);
      :  name에 해당하는 정보를 삭제하는 기능

    * application.getRealPath(java.lang.String path);
      : 실행되는 문서의 경로 가져오는 기능
   
    * Enumeration e = application.getAttributeNames();
      : 저장된 정보의 name 가져오는 기능

 

**AtomicInteger 클래스

: thread-safe로 구현되어 멀티쓰레드에서 synchronized 없이 사용

: synchronized보다 경제적임

: int 자료형을 갖고 있는 Wrapping 클래스

: new AtomicInteger() 생성: 초기값 0으로 AtomicInteger

**추가 자료

 

Java - AtomicInteger 사용 방법

AtomicInteger는 int 자료형을 갖고 있는 wrapping 클래스입니다. 멀티쓰레드 환경에서 동시성을 보장합니다. volatile과 다르게 여러 쓰레드에서 값을 write해도 동시성이 보장됩니다. get, set, getAndSet, compa

codechacha.com

 

application 예제) 방문자 수 count - server가 꺼지면 새로 시작

<%@page import="java.util.concurrent.atomic.AtomicInteger"%>
<%@ page language="java" contentType="text/html; charset= UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
	//1.기존 count 값을 읽어온다.

	Object obj = application.getAttribute("count");

	if (obj == null) {
		application.setAttribute("count", new AtomicInteger()); // AtomicInteger => initial value == 0
		obj = application.getAttribute("count");
	}

	AtomicInteger at = (AtomicInteger)obj;

	int count = at.intValue(); // 기존값
	if (session.isNew()) {
		count = at.incrementAndGet(); //증가 & 값 얻어오기
		//application.setAttribute("count", count); 다시 저장할 필요 X, 이미 객체 안에 정보로 저장
	}
	%>
	<h3>
		방문자 수 : <%=count%>명
	</h3>

</body>
</html>

 


- cookie 

  : javax.servlet.http.Cookie  
  : 클라이언트의 정보를 클라이언트 PC에 저장함.
  : 사용자 측에 대한 정보를 보관해 두었다가 웹서버의 요청에 의해 그 정보를 원하는 순간에 사용할 수 있다.
  : 한번에 4KB 로 용량이 제한되고 300개까지 저장 가능함. (최대용량 : 4KB * 300 = 1.2MB)
  : 작은정보의 형태로 저장되고 오래되면 자동삭제됨. 

    * response.addCookie(new Cookie(name, value));
      : 클라이언트쪽에 클라이언트 의 정보를 저장함.

   * Cookie co [] = request.getCookies();
      : 접속한 클라이언트에 저장된 쿠키정보(클라이언트정보) 가져오기

   * Cookie 관련 메소드 정리
     int getMaxAge() : 쿠키의 사용할수 있는 기간에 대한 정보
     setMaxAge(int max) : 쿠키가 저장되는 기간 설정
      ex) setMaxAge(0) ; : 쿠키삭제
          setMaxAge(-1) ;   
         : 쿠키폴더에 파일이 만들어지지 않지만 브라우져가 종료될까지
           쿠키의 정보는 저장된 상태이고 브라우져를 닫으면 쿠키정보 사라짐.
          (setMaxAge를 생략하면 -1을 기본)
          setMaxAge(60*60*24*365)=> 1년

         setValue(Cookie c) : 쿠키정보 수정하기
          : 쿠키의 정보가 수정되면 setMaxAge도 수정해야만 정보의 유효기간이 설정됨.
      
     String getName(); : 쿠키설정된 이름 가져오기
     String getValue(); : 쿠키에 설정된 값 가져오기 
     

     setPath(String path) : 쿠키의 유효한 디렉토리 설정
      ex)setPath("/")  : 모든 문서(디렉토리)에서 쿠키사용가능함.

  * Cookie 생성자
   Cookie(String name, String value);
   ex) Cookie cookie = new Cookie("id","8253jang"); // 한글 저장 불가

 

 * win7의 쿠키 폴더 : C:\Users\"UserName"\AppData\Roaming\Microsoft\Windows\Cookies 

 

 

 

 

**참고 자료 - Web Server와 Web Application Server

 

Web Server와 Web Application Server

Web Server와 WAS의 차이를 알아보기에 앞서, 먼저 정적 페이지와 동적 페이지에 대해 알아보려고한다.

velog.io

 

Comments