Spring

[이론 + 코드] 1/17 월 Spring Framework - JSTL + EL

PHM 2022. 1. 18. 22:36

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"); %>