note

EL , JSTL 코어태그 (c:forEach)(c:choose) 본문

JSP/JSTL

EL , JSTL 코어태그 (c:forEach)(c:choose)

투한 2012. 2. 14. 10:46


코어태그 라이브러리













<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="kame.chap16.Member" %>
<%@ page import="java.util.HashMap" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
	Member member = new Member();
	HashMappref = new HashMap();
	
%>




set 태그












회원 이름 : ${member.name},
좋아하는 색 : ${favoriateColor}

설정 이후 좋아하는 색 : ${favoriateColor}

5번 라인
해당 클래스가 식별자를 통해  불려지도록함


  • <c:set />
  •  
  -> setAttribute(속성명,속성값) 

${속성명} -> getAttribute(속성명)

<c:remove/> 
 -> removeAttribute(속성명)







<c:if>태그
















<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>




<span class="hljs-keyword">if</span> 태그



무조건 수행
name 파라미터의 값이${param.name}입니다.
당신의 나이는 18세 이상입니다. <%-- 다중 조건 체크는 못함(else) --%>



<c:choose>
















한번의 문장 만 실행하고 빠져나가기 때문에 착각에 빠지기 쉽다





<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>




choose 태그


  • 당신의 이름은 ${param.name}입니다.
  • 당신은 20세 이상입니다.
  • 당신은 'bk'가 아니고 20세 이상이 아닙니다.





<c:forEach>




VarStatus 속성

index : 루프 실행에서 현재 인덱스
count : 루프 실행 횟수
begin : begin 속성값
end : end속성값 
step : step 속성값
first : 현재 실행이 첫 번째 실행인 경우 true
last : 현재 실행이 루프의 마지막 실행인 경우 true
current : 컬렉션 중 현재 루프에서 사용할 객체 


 


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.HashMap" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>




forEach 태그


<%-- 대입 연산자가 없기 떄문에 sum에 계속 덮어씌워서 마지막 값이 출력됨 --%>

1부터 100까지 홀수의 합

결과 = ${sum}

구구단 : 4

  • 4 * ${i} = ${4 * i}
<%-- varStatus :루프 상태를 저장할 EL 변수 이름 --%>

int형 배열

${status.index}-${status.count}-[${i}]

Map

<% HashMap mapData = new HashMap(); mapData.put("name","최범균"); mapData.put("today",new java.util.Date()); %> ${i.key} = ${i.value}


HashMap

<%

HashMap map = new HashMap();

%>

스크립트 릿 안에 있는 객체는 EL과 JSTL에서 사용할 수 없다 
그래서 page,request,session,application 에 넣어야된다
<c:set var="map" value="<%=map%>" /> 







<c:forTokens>






<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>




forTokens 태그


콤마와 점을 구분자로 사용:
${token }





<c:out>




실행시 오류남 path를 걸어줘야 됨


같은 경로에 있는 파일 이름을 입력






<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.io.IOException,java.io.FileReader" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>







<%
	FileReader reader = null;
	try{
		String path=request.getParameter("path");
		reader = new FileReader(getServletContext().getRealPath(path));
%>
소스 코드 = <%=path%>

<%}catch(IOException ex){ %> 에러 : <%=ex.getMessage() %> <% }finally{ if(reader!=null) try{ reader.close(); }catch(IOException ex){} } %>




<c:catch>











 
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>




catch 태그



name 파라미터의 값 = <%=request.getParameter("name") %>
<%if(request.getParameter("name").equals("test")){ %> ${param.name}test 입니다. <%} %>

예외가 발생하였습니다:
${ex}