반응형
1. 내장 객체의 영역이란?
- 내장 객체 중 4개는 ‘영역’ 개념을 갖고 있음 - 데이터를 저장하고 공유할 수 있는데, 각 영역에 저장된 데이터는 공유 범위가 서로 다름 → page 영역, request 영역, session 영역, application 영역이 있음
- 각 내장 객체가 저장되는 메모리의 유효기간
- 웹 애플리케이션은 페이지 단위로 구성되는데, 그래서 A페이지에서 선언한 변수에 B페이지로 이동한 후에도 접근하려면, 클래스 단위인 자바와는 조금 다르게 접근해야 함 → JSP에서는 영역을 통해 내장 객체에 저장된 속성 값을 공유할 수 있도록 함 (범위의 크기는 아래와 같음)
- 사용법(API): 모두 같음-영역이 제공하는 주요 메소드 3가지 있음
void setAttribute(String name, Object value) Object getAttribute(String name) void removeAttribute(String name)
void setAttribute (String name, Object value) |
Object getAttribute (String name) |
void removeAttribute (String name) |
각 영역에 속성 저장 (첫 번째 인수는 속성 명, 두 번째 인수는 저장할 값) |
영역에 저장된 속성 값을 얻어 옴 | 영역에 저장된 속성 삭제 |
값의 타입은 Object이므로 모든 타입의 객체 저장 가능 |
Object로 자동 형변환되어 저장되므로, 원래 타입으로 형변환 후 사용 |
삭제할 속성명이 존재하지 않아도 에러 발생 X |
- 관련 학습 순서
2. 데이터 전송 객체(DTO) 준비
1) 데이터 전송 객체(DTO)란?
- 주로 데이터를 저장하거나 전송하는 데 쓰이는 객체(다른 로직 없이 순수하게 데이터만을 담고 있음)
- 데이터만 가지고 있는 객체라 하여, ‘값 객체’라고도 함
- 자바로 작성한 소프트웨어 컴포넌트인 ‘자바빈즈(JavaBeans)’ 규약에 따르는 자바 클래스 [*JSP 파일이 아님!]
(1) 자바빈즈는 기본(default) 패키지 이외의 패키지에 속해야 함
(2) 멤버 변수(속성)의 접근 지정자는 private로 선언
(3) 기본 생성자가 있어야 함
(4) 멤버 변수에 접근할 수 있는 getter/setter 메소드가 있어야 함
(5) getter/setter 메소드의 접근 지정자는 public으로 선언
2) ‘Person’이란 이름의 DTO 작성
(1) Person 클래스 생성
- HelloJSP 프로젝트의 디렉토리 Java Resources → 디렉토리 src에서 마우스 우클릭 → [New] 클릭 → [Class] 클릭
- 패키지명(Package) “common” 클래스명(Name) “Person”입력 후 [Finish] 클릭
(2) 자바빈즈 규약 1~3번 적용한 코드 작성
- String 타입의 이름(name)과 int 타입의 나이(age) 멤버 변수를 private으로 선언 [규약 1~2번]
- 기본 생성자 정의 [규약 3번]
- 여기서 각 멤버 변수의 Getter와 Setter 메소드를 public으로 선언해주면 됨
//Person 클래스(규약 1~3번 적용한 버전)
package common; // 기본 패키지 이외의 패키지(규약 1번)
public class Person {
private String name; // private 멤버 변수(규약 2번)
private int age; // private 멤버 변수(규약 2번)
public Person() {} // 기본 생성자(규약 3번)
}
(3) 자바빈즈 규약 1~5번 모두 만족하는 코드 작성(이클립스 자동 생성 기능)
- 편집창에서 마우스 우클릭 → [Source] → [Generate Getters and Setters…] 선택
- 다음 화면에서 [Select All] → [Generate] 클릭
- +인수들을 받아 모든 속성을 한 번에 초기화해주는 생성자 추가
- 편집창에서 마우스 우클릭 → [Source] → [Generate Constructor using Fields…] 선택
- 다음 화면에서 [Select All] → [Generate] 클릭
//Person 클래스(완성 후, 코드는 보기 좋게 정리한 버전)
package common; // 기본 패키지 이외의 패키지(규약 1번)
public class Person {
private String name; // private 멤버 변수(규약 2번)
private int age; // private 멤버 변수(규약 2번)
public Person() {} // 기본 생성자(규약 3번)
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
// public 게터/세터 메서드들(규약 4번, 5번)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
반응형
'자바(JAVA) > JSP 웹 프로그래밍 공부 (성낙현의 JSP 자바 웹 프로그래밍 참고)' 카테고리의 다른 글
JAVA/JSP 9. 내장 객체의 영역(Scope) - session 영역, application 영역 (2) | 2023.05.03 |
---|---|
JAVA/JSP 8. 내장 객체의 영역(Scope) - page 영역, request 영역 (0) | 2023.04.30 |
JAVA/JSP 6. 내장 객체 - out 객체, application 객체, exception 객체 (0) | 2023.03.30 |
JAVA/JSP 5. 내장 객체 - 내장 객체란? Request, Response 객체 (0) | 2023.03.23 |
JAVA/JSP 4. JSP 파일 기본 구조 (2) | 2023.03.08 |