EL Tag(Expression Language) : web 부분에서 java와 혼용하지 않기 위한 태그
형식 : ${ 값, 연산식 }
EL Tag와 Java 비교 사용 예시
<% // Java
String str1 = "hello";
request.setAttribute("_str", str1);
String s = (String)request.getAttribute("_str"); /* 짐싸 */
%>
str1 = <%=s %>
<% // EL
String str2 = "hi";
request.setAttribute("_str", str2);
%>
str2 = ${ _str }
Java는 표현식(<%= %>)을 사용하여 value를 불러온다. (java는 getAttribute필요)
EL tag는 setAttribute에서 바로 value를 꺼내올 수 있다.
<%='값' %>
<br>
${ '값' }
<br>
${ 2 + 3 }
EL tag : empty 사용예시
<%
Object obj = new String("world");
if(obj != null) {
%>
<p>obj는 null이 아닙니다</p>
<%
}
%>
<%
request.setAttribute("world", obj);
%>
obj = ${ empty world } <!-- false -->
<br>
obj = ${ not empty world } <!-- true -->
empty : boolean형 반환 obj가 비었니? 안비었니?
Java class 예시
package dto;
import java.io.Serializable;
public class MemberDto implements Serializable{
private String message;
public MemberDto() {
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
<%
MemberDto dto = new MemberDto();
dto.setMessage("hello EL");
request.setAttribute("mem", dto);
%>
message:<%=dto.getMessage() %>
<br>
message:${ mem.message }
EL tag는 무조건 setAttribute를 거쳐야한다.
<%
List<MemberDto> mlist = new ArrayList<>();
MemberDto m = new MemberDto();
m.setMessage("안녕");
mlist.add(m);
m = new MemberDto();
m.setMessage("하이");
mlist.add(m);
%>
<%=mlist.get(0).getMessage() %>
<br>
<%
request.setAttribute("mlist", mlist);
%>
${ mlist[1].message }
<br><br>
<input type="text" value="${ mlist[1].message }">
<p>${ mlist[1].message }</p>
배열 value 가져오는 예시
<%
String array[] = { "hello", "world" };
request.setAttribute("array", array);
%>
<%=array[0] %>
<br>
${ array[0] }
<br>
${ array[1] }
List value 가져오는 예시
<%
List<String> list = new ArrayList<>();
list.add("Tiger");
list.add("Lion");
%>
<%=list.get(1) %>
<%
request.setAttribute("mylist", list);
%>
<br>
${ mylist[1] }
Core Tag : 변수나 제어문을 사용할 수 있게 해주는 태그
Core Tag 사용시 jstl-1.2.jar, standard-1.1.2.jar파일이 있어야 한다.
- jstl-1.2.jar 다운로드 : https://mvnrepository.com/artifact/javax.servlet/jstl/1.2
- standard-1.1.2.jar 다운로드 : https://mvnrepository.com/artifact/taglibs/standard/1.1.2
Core Tag는 필히 page지시문에 jstl선언해주어야한다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Core Tag와 Java 비교 사용예시
<%
String data = "Core tag 입니다";
request.setAttribute("_data", data); // 왼 : EL , 오: JAVA
%>
${ _data } <!-- EL -->
<br>
<c:set var="_data" value="Core tag 입니다"/>
<!-- 위와 동일 -->
<c:out value="${ _data }"></c:out>
<br><br>
<!-- if -->
<%
request.setAttribute("count", "10");
%>
<%
String scount = (String)request.getAttribute("count");
int count = Integer.parseInt(scount);
if(count >= 10){
%>
<p>count : <%=count %></p>
<%}%>
<!-- core tag는 자동으로 숫자로 해준다? -->
<c:if test="${count >= 10}">
<p>count : <c:out value="${count}"></c:out>
<p>count : ${count}</p>
</c:if>
<%
request.setAttribute("name", "홍길동");
%>
<%
String name = (String)request.getAttribute("name");
if(name.equals("홍길동")){
%>
<p>이름 : <%=name %></p>
<%} %>
<c:if test="${name == '홍길동' }">
<%-- <c:if test="${name eq '홍길동'}"> --%>
<p>이름 : ${name}</p>
</c:if>
<!-- for -->
<%
for(int i = 0; i < 10; i++){
%>
<p><%=i %></p>
<%} %>
<!-- varStatus="i" : 밖으로 나가는 값 -->
<c:forEach begin="0" end="9" step="1" varStatus="i">
<p>${i.index}</p>
</c:forEach>
<br><br>
<%
List<MemberDto> list = new ArrayList<>();
MemberDto dto = new MemberDto();
dto.setMessage("hello");
list.add(dto);
dto = new MemberDto();
dto.setMessage("world");
list.add(dto);
request.setAttribute("mylist", list);
%>
<%-- 데이터만 다 돌리고 싶을땐 : var="mem" items="${mylist}" 이것만 있으면 된다. --%>
<c:forEach begin="0" end="1" var="mem" items="${mylist}" varStatus="i">
<p>index:${i.index} data:${mem.message}</p>
</c:forEach>
c:set | 변수의 선언 | |
var | 변수명 | |
value | 변수에 넣을 값 | |
c:out | 변수 출력 | |
value | 변수에 넣을 값 | |
c:if | 조건문 (if문) | |
test | 조건 판별식 | |
value | 변수에 넣을 값 | |
c:forEach | 반복문 (for문) | |
begin | 시작값 | |
end | 종료값 | |
step | 증감값 | |
var | 현재 아이템의 변수명 | |
varStatus | 반복상태의 값을 지닌 변수 | |
items | 반복데이터가 있는 아이템명 |
'IT > JSP' 카테고리의 다른 글
[JSP] 엑셀 다운로드 시 DATE FORMAT 안될 경우.(mso-number-format - 셀 서식 지정) (0) | 2022.10.20 |
---|---|
[JSP] 내장객체 이동성 메서드 사용예시(forward, sendRedirect) (0) | 2021.06.15 |
[JSP] form tag 사용하여 입력값 넘기기(submit() 사용예시) (0) | 2021.06.15 |
[JSP] 테이블을 사용하여 구구단 작성하기(새로고침 시 테이블의 행과 열이 증가해가는 페이지) (0) | 2021.06.15 |
[JSP] 변수 선언 후 페이지 새로고침 될 때마다 1씩 값 증가시키기 (0) | 2021.06.15 |