그거/Java

JSP 의 EL 과 JSTL

뽀기 2013. 8. 9. 17:45

안쓰던거 쓰려니 몸이 고생....이 아니라 머리가 고생 -_-;


환경은 이렇다.

tomcat 6.0, servlet 2.4, jstl 1.1.2


JSTL 을 쓰려고 아래와 같이 코딩했다.


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

<%

String a = "str";

%>


<body>

<c:out value="${a}"/>


값이 안나온다. 젠장

별 뻘짓을 다 해도 데이터가 안나옴. ㅡㅡ;

아래와 같이 하니 나옴.


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

<c:set var="a" value="str"/>


<body>

<c:out value="${a}"/>


그렇다.

EL, JSTL 요놈들은 <% %> 에서 일반 변수 선언한건 안된다.

찾아보니,

<c:set/> 요놈이 page, request, session, application 4 영역에 attribute 를 저장하는 놈이다.

EL을 사용하려면 <c:set/> 을 이용해 지정한 변수만 사용가능하다는.. 

그렇지 않으면, 위 page, request, session, application 영역의 변수만 사용가능하다는거다.


다른 예제.


<%

String a = "DDDD:l";

pageContext.setAttribute("id", "lucky");

session.setAttribute("age", "36");

application.setAttribute("team", "FW");

request.setAttribute("name", "Choi");

%>


위와 같이 설정하고,


<c:set var="str" value="<%= a %>"/>

<%= a %><br>

a = ${a}<br>

a = <c:out value="${str}" default="none"/> <br>

a = ${str}<br>


id= ${id}<br>

age= ${age}<br>

name= ${name}<br>

team= ${team}<br>


<c:out value="id=${id}"/><br>

<c:out value="age=${age}"/><br>

<c:out value="name=${name}"/><br>

<c:out value="team=${team}"/><br>


요걸 찍어보면 아래와 같은 결과가 나옴.

DDDD:l
a = 
a = DDDD:l 
a = DDDD:l

id= lucky
age= 36
name= Choi
team= FW

id=lucky
age=36
name=Choi
team=FW


끝.