본문 바로가기

6개월 대장정/JSP 개념

55일차 - [JSP] JavaBeans, 표현 언어(el) - 기본 객체(1)

반응형

안녕하세요. pitang입니다.

JavaBeans(자바 빈)에 대해 알아본 다음, 표현 언어(Expression Language)에 대해 알아보겠습니다.

 

JavaBeans(자바 빈)

JSP 기반 웹 애플리케이션에서 정보를 표현할 때 사용하는 것 중 하나가 자바 빈이다.

 

자바 빈은 속성(데이터), 변경 이벤트, 객체 직렬화를 위한 표준이다. JSP에서는 속성을 표현하기 위한 용도로 사용된다.

자바 빈 규약을 따르는 클래스를 자바 빈이라 부르고, 자바 빈 클래스는 필드, 값을 읽어올 때 메서드, 값을 저장할 때 메서드로 구성된다.

 

프로퍼티는 자바 빈에 저장되는 값을 나타낸다.

메서드 이름을 사용해 프로퍼티의 이름을 결정하게 되는데,

이름은 get, set 메서드의 get/set을 지우고 앞글자를 소문자로 결정하고, 프로퍼티 타입이 boolean 일 경우 get 대신 is를 붙일 수 있다.

 

읽기 전용 프로퍼티 - get 또는 is 메서드만 존재하는 프로퍼티

읽기/쓰기 프로퍼티 - get/set 또는 is/set 메서드가 존재하는 프로퍼티

 

ex1)

sample03javabean/Bean01

 

ex2)

sample03javabean/Bean02

 

ex3)

sample03javabean/Bean03

-> boolean 타입은 get 대신 is를 붙일 수 있다.

 

표현 언어(Expression Language)

표현 언어는 다른 형태의 스크립트 언어로서 스크립트 요소 중 하나이다. 표현식보다 간결하고 편리하기 때문에 많이 사용된다.

표현 언어는 값을 표현하는 데 사용하는 스크립트 언어로, JSP의 스크립트 요소를 보완하는 역할을 한다.

 

표현 언어는 아래와 같은 기능을 제공한다.

- JSP의 네 가지 기본 객체가 제공하는 영역의 속성 사용

- 수치 연산, 관계 연산, 논리 연산자 제공

- 자바 클래스 메서드 호출 기능 제공

- 쿠키, 기본 객체의 속성 등 JSP를 위한 표현 언어의 기본 객체 제공

- 람다식을 이용한 함수 정의와 실행

- 스트림 API를 통한 컬렉션 처리

- 정적 메서드 실행

 

EL은 JSP의 스크립트 요소(스크립트릿, 표현식, 선언부)를 제외한 나머지 부분에서 사용될 수 있고,

EL의 사용법은 ${attribute} 와 같이 사용한다.


EL의 기본 객체

 

JSP는 웹 애플리케이션을 구현하는 데 필요한 요청, 응답, 세션 등에 쉽게 접근할 수 있도록

request, response, session 등의 기본 객체를 제공하고 있다.

 

JSP는 EL에서 사용할 수 있는 기본 객체도 제공하고 있다.

이 객체를 이용해 요청 파라미터나 세션 속성 값 등을 표현 언어에서 사용할 수 있다.

 

EL에서 사용할 수 있는 기본 객체

pageContext JSP의 pageContext 기본 객체와 동일.
pageScope pageContext 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체
requestScope request 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체
sessionScope session 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체
applicationScope application 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체
param 요청 파라미터의 <파라미터 이름, 값> 매핑을 저장한 Map 객체
paramValues 요청 파라미터의 <파라미터 이름, 값 배열> 매핑을 저장한 Map 객체
header 요청 정보의 <헤더 이름, 값> 매핑을 저장한 Map 객체. request, getHeader의 결과와 동일.
headerValues 요청 정보의 <헤더 이름, 값 배열> 매핑을 저장한 Map 객체. request, getHeaders의 결과와 동일.
cookie <쿠키 이름, Cookie> 매핑을 저장한 Map 객체. request.getCookies()로 구한 Cookie 배열로부터 매핑을 생성.
initParam 초기화 파라미터의 <이름, 값> 매핑을 저장한 Map 객체. application, getInitParameter의 결과와 동일.

 


pageContext 객체

ex1) 

03el.jsp
console

-> 값이 없는 경우 java code는 null을, el은 출력하지 않는다.


request 객체

ex1)

04el-request.jsp
console

 

ex2) forward

06from.jsp
06to.jsp
console


session 객체

ex1)

07session.jsp
console

 

ex2) redirect

09from.jsp
09to.jsp
console


application 객체

ex1) 

10application.jsp
10application console
11application.jsp
11application console

-> application 객체는 모든 사용자를 위해 공유할 정보를 저장하고 있으므로,

     10번 파일을 실행한 후에 11번 파일을 실행하면 값이 같이 저장되어 있는 것을 알 수 있다.


ex5) scope

12scope.jsp
console

-> 영역을 나타내는 EL 기본 객체를 사용하지 않고 이름만 지정하는 경우,

     EL은 네 개의 영역을 page->request->session->application 차례대로 검색해서 속성이 존재하는지 확인한다.


JavaBeans 객체

자바 빈에서는 내장 객체에 저장하여 값을 주고받는데 이때 표현 언어로 자바 빈의 값들을 꺼내올 수 있다.

 

${자바 빈 이름.속성이름} 또는 ${자바 빈 이름["속성 이름"]} 과 같이 사용한다.

두 번째, ${자바 빈 이름["속성 이름"]}과 같이 사용하는 이유는 프로퍼티 이름에 특수문자가 존재하는 경우 이와 같이 사용한다.

 

실제 내부에서 일어나는 일은 bean 객체 안에 get메서드를 호출하여 값을 가지고 온다.

 

Bean03.java

-> 아래의 예제들에서 사용 될 Bean03 자바 빈 파일이다.

 

ex1)

Bean03.java - 13javaBean.jsp
console

 

ex2) 표현식 사용

14forward-from.jsp
14forward-to.jsp
console

 

ex3) 표현언어 사용

15forward-from-el.jsp
15forward-to-el.jsp
console

 

ex4)

22bean-bean.jsp
console

-> 거꾸로 거슬러 올라가 보면 값이 어디 있는지 알아보기 쉽다.

 

 

 

 

 

 

감사합니다.

 

*m1 맥북을 사용 중입니다.*

728x90
반응형