GitHub

https://github.com/Backcoder-June

BackCoder 기록 그리고 숙달

Back to the JSP

[JSTL] <c: set /> 변수 : Java 와 EL 중개자

Backcoder 2022. 8. 13. 18:01

[[ JSTL ]]  - JSP Standard Tag Library 

: 사용자정의 태그 라이브러리 

 

- EL 까지는 JSP 가 기본으로 제공해주지만,

 

1. 변수 선언

2. 조건문

3. 반복문 

 

특히나 이 기능들이 제대로 제공되지 않는 단점이 있다. 

 

이런 기능들을 태그로 만들어, 편하게 사용하라고 라이브러리로 만들어 둔게 JSTL 이다. 

 

- 라이브러리 설치 ( dependency )

- 지시자 설정 필수 

<%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c" %> 

( 페이지 지시자 밑에 설정 ) 

 

- uri 지정 필수 : JSTL 여러 종류가 있는데, 그중  core 를 사용하겠다. 
- preifx : JSTL 사용할때, 접두사로 c 를 사용하겠다.   
( core의 c 를 기본으로 사용한다. 코드 재활용성을 생각해 유저들이 c 로 맞추어 사용한다. ) 

 

------------------------------------------------------------------------------------

 

1. 변수선언  set 

 

<c:set var="id" value="backcoder"/>
 

var : 변수타입 ( var 로만 사용 가능 ) 

value : 넣을 값. ( 숫자일 경우도 "  " 쌍따움표만 가능하다. 자동형변환 해준다. ) 

 

<c:remove var="id" /> 

: 변수 제거  

 

 

[ 중개자 JSTL ]

:  Java <=>  JSTL  <=> EL   

: JSTL 은 Java값도 <% %> 바로 가져다 쓸 수 있고,  EL 값도 ${ } 바로 가져다 쓸 수 있다.  

 

(1) 기본적으로  <% %> 자바변수를  EL ${ } 에서 사용하려면 

(scope).setAttribute 에 등록해서 key 값을 통해 공유가 가능하다. 

( Java 와 EL 은 서로 안친하다. ) 

 

(2) JSTL 중개 

Java => JSTL 

: JSTL 은 Java 값을 바로 가져올 수 있고,

JSTL => EL 

: JSTL이 가져온 Java값을 EL은 바로 사용할 수 있다. 

 

자바

<% String nick = "BackCoder"; %>

JSTL

<c:set var="id2" value="<%=nick%>"/>   Java값  

EL

${ id2 }  

${ id2.toUpperCase() } : Java 변수 가져오면 Java 메소드 사용 가능  

 

: 자바 변수/객체 를 JSTL 을 통해 EL 로 가져와 사용 

 

( 반대로, EL 변수를 자바로 가져올 땐, 결국엔 getAttribute 를 사용해야  한다. ) 

${ id2 } : 백코더  

<c:set var="백코더" value="${id2}"/>  

<% String nick = request.getAttribute("id2");%>

 

: EL => (JSTL )=> Java 

 

 

- JSTL 의 var 변수에는 value 값으로 객체, ArrayList 등 모든 Type 을 다 넣을 수 있다. 

<% HashMap<String, memberDTO> dtomap = new HashMap<>(); %> 

<c:set var="dtomap" value="<%=dtomap%>"/>

 

 

- JSTL변수 당연히 JSTL에서 가져다 쓸 수 있다 

<c:set var="pay" value="300"/>
<c:set var="editpay" value="${ pay+100 }"/>