본문 바로가기
Front-end (국비)/이론

23.07.04 수업 정리 (JSTL 태그와, EL식)

by Hwanii_ 2023. 7. 4.
728x90

1.

JSTL :

 

JSTL의 정식 명칭은,

자바서버 페이지 표준 태그 라이브러리(JavaServer Pages Standard Tag Library)이고,

줄여서 JSTL이라 부른다.

 

JSTL은 Java EE 기반의 웹 애플리케이션 개발 플랫폼을 위한 컴포넌트 모음이다.

JSTL은 XML 데이터 처리와 조건문, 반복문, 국제화와 지역화와 같은 일을 처리하기 위한,

JSP 태그 라이브러리를 추가하여 JSP 사양을 확장했다.

자바 코드를 바로 사용하지 않고 로직을 내장하는 효율적인 방법을 제공한다.

코드의 유지보수를 용이 하게 한다.

 

2.

 

 

<%-- 태그 라이브러리 지시어 라고 한다. --%>

<%-- 태그 라이브러리 지시어는 두가지 속성이 필요 하다. --%>

<%-- uri와 prefix 이다. --%>

<%-- uri는 위의 링크이고, prefix는 접두사 이다. --%>

 

 

JSTL 태그 예시 이다.

 

<c:forEach> 가 JSTL 태그 이다.

 

Core 모듈이라 하며, 

<c:forEach> 태그는, 컬렉션을 반복하며 태그 내부의 코드를 실행 한다.

 

즉, JAVA의 for each 문의 기능을 가지는 태그이며,

JSTL 에서도 JAVA의 반복문을 사용할 수 있도록 구현 되어 있다.

 

위의, 코드를 해석 하자면 아래와 같다.

 

어떤 items 이라는 이름의 값이 있어 ~

그것을 참조변수 v라고 부를께 ~

(JAVA 에서 for each 문 사용할 때, 변수 선언 하는 것과 동일 하다.)

 

근데 지금 여기서, items의 값으로 EL 식을 사용 했다.

 

EL 식은 아래와 같이 정의 할 수 있다.

 

3.

EL 식 이란 ?

 

Expression Language 라고 하며, 줄여서 EL 이라고 한다.

 

호환성이 JSTL 태그와 잘 맞아서, 둘이 자주 사용 된다.

 

${ } 

 

으로 표현 한다.

 

당연하게도 JSTL 과 EL은 전혀 무관한 다른 언어 이다.

 

JSTL은 사용 하려면 외부 라이브러리가 필요하고,

EL은 JSP 에서 기본 제공 해주는 라이브러리 라고 생각 하면 된다.

 

(EL 식은, 자바의 표현식을 대체 하는 느낌 이라고 생각 하면 된다.)

( 표현식 : <%= 값 %> )

 

4. ★

 

현재 form 태그가 있는 페이지는, test01.jsp 이다.

 

 

위의 코드를 해석 하면 아래와 같다.

 

post 방식으로, 해서 데이터를 test02.jsp 로 전송 할거야 ~

 

데이터 값을 읽기 위해 product 라는 이름을 줘서 ~

 

객체명.속성명 의 형식으로 EL 식을 사용 했고,

JSTL 태그의 forEach 문에 따라서, 아래와 같이 표현 된다.

 

 

<jsp:useBean id = "pb" class ="model.ProductBean" scope = "session" />

 

상단에, 위와 같이 pb 객체명을 사용 하기 위해서, useBean 액션 태그를 사용한 모습 이다.

 

그래서 보면, model 패키지에 ProductBean 이라는 클래스를 pb 라는 이름의 객체로 선언한 모습 이다.

 

이전에 자바 언어를 사용했을 때는, 객체 선언 후,

VO의 멤버변수를 set 하기 위해서,

setProperty 액션 태그를 사용 했었는데,

 

(객체는 new 키워드를 통해 객체화가 됬다면, 언제든지 사용 할 수는 있다..)

(다만, 멤버변수 값이 초기화 되지 않았을 수 있는 상황)

 

이제는 더이상 자바 언어를 사용하지 않기에,

setProperty 액션 태그를 사용 하지 않아도 된다.

 

현재, 이 페이지 에서는 , EL 식으로 값을 받고 있는 모습을 볼 수 있는데,

 

이 EL 식은

${객체명.프로퍼티명} 형식으로 객체의 프로퍼티에 접근 할 수 있다.

 

즉,

객체명과 프로퍼티명 (멤버변수명) 이 같다면, 

객체의 속성(멤버변수 / 프로퍼티) 을 사용 할 수 있다.

 

매우 매우 간편 해진 느낌 이다.

 

(따로 멤버변수 / 프로퍼티 를 get 할 필요 없이, EL 식은 바로 사용이 가능 하다.)

(   ${객체명.프로퍼티명}   )

 

 

여기서 pdatas의 값을 이미 set 해줬기에 ~ EL 식을 사용 할 때, 따로 set 해줄 필요도 없거니와, get 할 필요도 없는게 EL 식의 기능 이라고 볼 수 있겠다.

 

 

 

사용자 로부터, form 태그에서 데이터 전송을 받았을 때,

 

${param.product}

 

를 확인 할 수 있다.

 

select 태그 특성상, 사용자는 1개의 option 값만 선택 해서 submit을 하기 때문에,

값은 사용자가 선택한 딱 1개만 post 방식으로 전송된 상황 이다.

 

그 값을, product 라는 name 으로 보냈고,

 

따라서, param.product 로 값을 받는 문법을 확인 할 수 있다.

 

num1 + num2 = ${pb.num1 + pb.num2}

 

얘는 이제,

 

num1 + num2 = 참조변수.멤버변수 + 참조변수.멤버변수 의 형식 이다.

 

원래, 자바에서 private 처리를 멤버변수에 했었기 때문에,

멤버변수 자체를 위와 같이 쓸 수 없고, getter를 통해서 값을 받아야 하는데,

 

EL식 기능상,

멤버변수 그 자체를 쓰더라도,

알아서, getter을 호출 해서,

그 getter 안의 멤버변수를 사용할 수 있게 하는 특징이 있다.

 

그래서,

 

원래라면, pb.getNum1() + pb.getNum2() 이지만, 이렇게 적으면 길고 귀찮으니까,

위와 같이 표현한 모습을 확인 하면 된다.

 

한번 확인해 보자.

 

 

이렇게 적었을 때,

 

 

똑같은 결과가 나오는 것을 확인 할 수 있다 !

 

 

 

[ 웹 브라우저 에서 확인 하기 ]

 

 

바나나를 고르면, 사용자가 option값을 바나나로 골랐기 때문에,

그 값을 param.product 로 해서 받았고,

 

num1 + num2 = 130 인것을 확인 할 수 있다.

 

 

5.

jsp useBean 액션 태그에서 scope 라는 속성이 존재 한다.

 

 

<%-- useBean 액션태그에 scope 라는 속성이 있다. --%>

<%-- 얘를 session 단위로 범위를 지정해줬기 때문에,

         session이 연결 되어있는 페이지 에서는 pb 참조변수를 사용할 수 있게 된다. --%>

<%-- 즉, 다른 페이지 에서는, 별도의 useBean 액션태그 사용이 필요 없어 진다. --%>

 

6.

"인코딩 필터"

 

VO를 선언 및 멤버변수를 set 하기 전에, 딱 한번만 하면 된다.

즉, 여러 페이지에서 할 필요가 없다.

 

<% request.setCharacterEncoding("UTF-8"); %>

 

 

반응형

'Front-end (국비) > 이론' 카테고리의 다른 글

커스텀 태그  (0) 2023.07.05
23.07.04 수업 정리 2 (JSTL 태그와, EL식)  (0) 2023.07.04
EL (Expression Language) 식  (0) 2023.07.04
JSTL 이란 ?  (0) 2023.07.04
23.06.29 수업 정리 3 (JSP / Java Server Pages)  (0) 2023.06.29