[이론 + 코드] 1/17 월 Spring Framework - JSTL + EL
JSP : View(프리젠테이션 로직)
+ 스크립트적인 요소 (프로그래밍적인 요소) + HTML tag
1. 지시자 : <%@page %>, <%@include %>, <%taglib %>
2. 선언문 : <%! 메서드 %>
3. 스크립틀릿 : <% 자바소스코드 %>
4. 출력식 : <%= 변수%>, <%= 메서드 호출문%>
5. 주석문 : <%-- JSP주석 --%>
=> 디자이너를 고려해서 코딩을 하자
스크립트적인 요소를 tag적인 요소로 바꿔서 사용하자
JSTL( Javaserverpage Standard Tag Library ) : 스크립트적인 요소를 tag적인 요소로 바꿔서 사용하자
c:if / c:forEach / c:choose
EL ( Express Language, 표현식, 출력식 ) : ${ 식 }
식 1. var(변수) 2. 연산자(산술, 관계, 논리) 3. 속성이름
JSTL + EL
기본 설정 : <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
1. For문
<% for(int i = 1; i<=5 ; i++){
if(i%2==0){%>
<font size="<%=i%>">야호~</font><br>
<%}
} %>
-------Tag--------------------------------------------------------------
<c:forEach var="i" begin="1" end="5" step="1" >
<c:if test="${i%2==0}">
<font size="${i}">야호~</font><br>
</c:if>
</c:forEach>
2. if문 / Switch문
<c:if test="${a%2==0 }">
짝수입니다.
</c:if>
<c:if test="${a%2!=0 }">
홀수입니다.
</c:if>
<c:choose>
<c:when test="${a%2==0 }">
짝수입니다.
</c:when>
<c:when test="${a%2!=0 }">
홀수입니다.
</c:when>
<c:otherwise> <!-- default -->
^^
</c:otherwise>
</c:choose>
3. For문 - 배열 뽑기
<%
String[] str = {"사과", "바나나", "오렌지", "포도", "귤"};
request.setAttribute("str", str);
%>
--------------------------------------------------------------------------------------
<c:forEach var="f" items="${str }">
<!-- ${str} => request.getAttribut("str") -->
<tr>
<td>${f }</td>
</tr>
</c:forEach>
items : 여러개를 받을 수 있는 속성
4. For문 - ArrayList 뽑기
<%
List<Board> list = new ArrayList<Board>();
Board vo = new Board();
vo.setIdx(1);
vo.setTitle("Test");
vo.setWriter("관리자");
vo.setIndate("2022-01-17");
vo.setCount(0);
list.add(vo);
list.add(vo);
list.add(vo);
request.setAttribute("list", list);
%>
--------------------------------------------------------------------------------------------
<c:forEach var="vo" items="${requestScope.list }">
<tr>
<td>${vo.idx }</td>
<td>${vo.title }</td>
<td>${vo.writer }</td>
<td>${vo.indate }</td>
<td>${vo.count }</td>
</tr>
</c:forEach>
requestScope.list : request에 있는 list
sessionScope.list : session에 있는 list
* fn
JSTL에서 함수를 써야할때
함수 태그라이브러리 설정 - functions 안에는 String이 제공하는 Method들이 존재
<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
1. <td>${fn:replace(vo.content, newLine ,"<br>")}</td>
2. <td>${fn:split(vo.indate," ")[0] }</td>
+ \는 EL기호안에서 적용이 안된다. 그래서 아래와 같은 방법을 이용한다.
* pageContext 현재페이지에서만 사용할려고 쓰는 함수
<% pageContext.setAttribute("newLine", "\n"); %>