[JSP] 내장 객체 영역

8106 단어 jspjsp

💻 1. 내장 객체의 영역

  • 1-1 내장 객체의 영역이란?

    💡 내장 객체의 영역은 각 객체가 저장되는 메모리의 유효기간이다.

    • 자바 프로그래밍에서 지역변수를 생각해보면 이해가 쉽다.
    • 자바 프로그래밍에서 메서드 내에서 선언된 변수는 메서드를 벗어나면 소멸되는데 클래스 단위로 구성된 자바와는 다르게 JSP와 같은 웹 애플리케이션은 페이지 단위로 구성된다.
      • A페이지에서 선언한 변수를 B페이지로 이동한 후에도 접근할 수 있으려면 자바와는 조금 다르게 접근해야한다.
      • 그래서 JSP에서는 영역을 통해 내장 객체에 저장된 속성값을 공유할 수 있도록 한다.

    📌 내장 객체의 영역은 총 4가지가 있다.

  • 1-2 내장 객체의 영역 종류

    영역 이름내용
    page 영역동일한 페이지에서만 공유되고 페이지를 ㅣ벗어나면 소멸된다.
    request 영역하나의 요청에 의해 호출된 페이지와 포워드(요청 전달)된 페이지까지 공유된다.
    session 영역클라이언트가 처음 접속한 후 웹 브라우저를 닫을 때까지 공유된다.
    application 영역한 번 저장되면 웹 애플리케이션이 종료될 때까지 유지된다.
  • 1-3 영역이 제공하는 주요 메서드

    💡 void setAttribute(String name, Object value)

    • 각 영역에 속성을 저장한다.
    • 첫 번째 인수는 속성명, 두 번째 인수는 저장할 값이다.
    • 값의 타입은 Object이므로 모든 타입의 객체를 저장할 수있다.

    💡 Object getAttribute(String name)

    • 영역에 저장된 속성값을 얻어온다.
    • Object로 자동 형변환되어 저장되므로 원래 타입으로 형 변환 후 사용해야 한다.

    💡 void removeAttribute(String name)

    • 영역에 저장된 속성을 삭제한다.
    • 삭제할 속성명이 존재하지 않더라도 에러는 발생하지 않는다.

    📌 이제 각 영역을 설명하기 전 공통적으로 사용할 데이터 전송 객체에 대해서 알아보자


    💻 2. 데이터 전송 객체(DTO)준비

  • 2-1 데이터 전송 객체(Data Transfer Object)란?

    💡 주로 데이터를 저장하거나 전송하는데 쓰이는 객체로, 다른 로직 없이 순수하게 데이터만을 담고 있다.
    데이터만 가지고 있는 객체라 하여 값 객체 라고도 한다. DTO 는 자바빈즈 규약에 따라 작성한다.

    📌 자바 빈즈란?
    자바로 작성한 소프트웨어 컴포넌트로 , 다음의 규약을 따르는 자바 클래스를 말한다.

    💡 자바빈즈 규약

    • 자바빈즈는 기본(default)패키지 이외의 패키지에 속해야한다.
    • 멤버 변수(속성)의 접근 지정자는 private으로 선언한다.
    • 기본 생성자가 있어야한다.
    • 멤버 변수에 접근할 수있는 게터/세터 메서드가 있어야 한다.
    • 게터/세터 메서드의 접근 지정자는 public으로 선언한다.

    📌 이제 부터 person이라는 이름의 DTO를 작성해보자 DTO는 데이터를 저장하거나 전송하는데 쓰이는 객체로 jsp파일이 아닌 java파일로 생성을 한다.

  • 2-2 Person DTO 예시

public class Person {
	private String name;	// private 멤버변수
    	private int age;	// private 멤버변수
    
    public Person() {		// 기본 생성자
    }
    
    // get/set 메서드
    public String getName(){
    }
    
    public String setName(name){
    	this.name = name;
    }
    
    public int getAge(){
    }
    
    public int setAge(age){
    	this.age = age;
    }
}////////////class

📌 각 객체의 영역에 대해서 설명하기 전 DTO 준비가 완료되었으니 범위가 좁은 순서대로 객체의 영역에 대해서 알아보자


💻 3. page 영역

  • 3-1 내장 객체 page의 영역이란?

    • 기본적으로 클라이언트의 요청을 처리하는데 관여하는 JSP페이지마다 하나씩 생성된다.
    • 그리고 이때 각 JSP페이지는 page영역을 사용하기 위한 pageContext객체를 할당 받게 된다.
    • 이 객체에 저장 된 정보는 해당 페이지에서만 사용할 수 있고 페이지를 벗어나면 소멸된다.
    • include 지시어로 포함한 파일은 하나의 페이지로 통합되므로 page영역이 공유된다.

💻 4. request 영역

  • 4-1 내장 객체 request 의 영역이란?

    클라이언트가 요청을 할 때마다 새로운 request객체가 생성되고, 같은 요청을 처리하는데 사용되는 모든 JSP 페이지가 공유한다.

    • 따라서 reqeust 영역에 저장된 정보는 현재 페이지와 포워드된 페이지까지 공유할 수있다.
    • 단, 페이지 이동 시에는 소멸되어 사용할 수 없게 된다.
  • 4-2 request내장 객체를 통해 포워드를 수행하는 코드

    request.getRequestDispatcher("포워드할 파일 경로").forward(request, response);


💻 5. session 영역

  • 5-1 내장 객체 session 의 영역이란?

    클라이언트가 웹 브라우저를 최초로 열고난 후 닫을 때까지 요청되는 모든 페이지는 session객체를 공유할 수 있다.

    세션이란?

    • 클라이언트가 서버에 접속해 있는 상태 혹은 단위를 말한다
    • 주로 회원인증 후 로그인 상태를 유지하는 처리에 사용된다.
      포털 사이트에서 웹 브라우저를 닫으면 자동으로 로그아웃이 되는 이유가 바로 session 객체의 특성 때문이다.

💻 6. application 영역

  • 6-1 내장 객체 application의 영역이란?

    • 웹 애플리케이션은 단 하나의 application 객체만 생성하고, 클라이언트가 요청하는 모든 페이지가 application 객체를 공유하게 된다.
    • 또한, application 객체는 웹 서버를 시작할 때 만들어지며, 웹 서버를 내릴 때 삭제된다.

      즉, application 영역에 한 번 저장된 정보는 페이지를 이동하거나, 웹 브라우저를 닫았다가 새롭게 접속해도 삭제되지 않는다.


💬 요약

  • page 영역 : 동일한 페이지에서만 공유되고, 페이지를 벗어나면 소멸된다.
  • request 영역 : 하나의 요청에 의해 호출된 페이지와 포워드된 페이지까지 공유된다. 새로운 페이지를 요청하면 소멸된다.
  • session 영역 : 클라이언트가 처음 접속한 후 웹 브라우저를 닫을 때까지 공유된다. 포워드나 페이지 이동 시에도 영역은 소멸되지 않는다.
  • application 영역 : 한 번 저장되면 웹 애플리케이션이 종료될 때까지 유지된다. [즉, 서버가 셧다운 되지 않는다면 언제까지든 공유되는 영역이다.]

좋은 웹페이지 즐겨찾기