본문 바로가기
학습 log (이론)/web

'EL과 JSTL'

by abbear25 2017. 6. 21.

EL (Expression Language)

표현 언어를 이해하고 속성 값들을 편리하게 출력하기 위해 제공

배열이나 컬렉션, JavaBean의 프로퍼티에 사용

<%= 출력변수 =>를 ${출력변수}로 쉽게 사용가능

값을 찾을 때 Attribute는 작은 Scope에서 큰 Scope로 탐색

JSP, JSTL: pageContext->request->session->application

EL: pageScope->requestScope->sessionScope->applicationScope

*공유영역에 변수명이 중복되어 있다면 위의 순서로 탐색

특정영역의 값을 가져오려면 requestScope.name으로 값을 가져옴 

param 

파라미터 매핑 객체, request.getParameter("id")

paramValues

파라미터 매핑 객체, request.getParameterValues("id")


EL Attribute Method

page, request

setAttribute("key값", value): 값 추가

getAttribute("key값"): 값 흭득

removeAttribute("key값"): 값 삭제

session

invalidate() 추가: 모든 값 삭제


객체 표현 이해

${객체.이름}

객체 자리에 올 수 있는 타입 2가지

자바빈즈 클래스

Board b = new Board();

pageContext.setAttribute("board", b);

${baord.no}

맵 객체

Map b = new HashMap();

b.put("no", "111");

b.put("title", "EL");

pageContext.setAttribute("board", b);

${board.no}


${객체[이름]}

객체 자리에 올 수 있는 타입 4가지

자바빈즈 클래스

맵 객체

배열

String[] names = {"일루아"};

pageContext.setAttribute("names", names);

${names[0]}

컬렉션

List nameList = new ArrayList();

names.add("일루아");

pageContext.setAttribue("names", nameList);

${names[0]}


JSTL (Jsp Standard Tag Library)

연산이나 조건문, 반복문, DB 작업을 편하게 처리하기 위해 제공

표준 액션태그로 처리하기 힘든 부분을 처리하기 위해 제공

WEB-INF/lib 경로에 jstl.jar와 taglibs-standard.jar 파일을 

아파치 톰켓 (http://tomcat.apache.org/download-taglibs.cgi)에서 다운로드하여 추가


태그종류

prefix:c (core)

실행 흐름 제어, 페이지 이동

prefix:fmt (formatting)

숫자, 날짜, 시간, 국제화, 다국어 지원

prefix:sql (database)

DB 입력, 수정, 삭제, 조회

prefix:x (xml)

xml문서 처리에 필요한 기능

prefix:fn (function)

문자열 제공


태그선언

<%@taglib prefix="태그종류" uri="태그uri"%>

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

*x: xml / fmt: 국제화 / sql: 데이터베이스 / fn: 함수


Core 태그사용

<c:set>

<c:set var="설정할 변수명" value="값" [scope="page"]/>

: [scope영역]변수 값 할당 (기본설정 page / request / session / application)

<c:out>

<c:out value="${msg}" [escapeXml="true/false"] [default="값 없음"]/>

: hi~! 출력

 escapeXml이 true일 경우 출력내용에 태그가 있을 경우 문자값으로 변경

 

<c:remove>

else문이 없고 scope 생략할 경우 page영역 지정 (모든 영역 삭제)

<c:remove var="num" scope="영역"/>

영역의 num 변수 삭제 (영역 생략할 경우 모든 영역의 변수 삭제)

<c:set var="msg" value="일루아">

<c:if>

<c:if var="result" test="${msg=='일루아'}">

test result = ${result} <br/>

</c:if>


<c:choose>

다중 조건 처리

<c:choose>

<c:when test="${param.val=='a'}">

selected 'a' <br/>

</c:when>

<c:otherwise>

<c:set var="result" value="false"/>

</c:otherwise>

</c:choose>


<c:forEach>

배열 또는 컬렉션 객체를 반복할 경우

<c:forEach var="값을 담을 변수" items="반복대상" [varStatus="기본정보"]>

*기본정보

 first: 반복문의 처음인지 판단

 last: 반복문의 마지막인지 판단

 index: 반복의 처음에 0을 반환, 반복이 진행될때마다 1씩 증가

 count: 반복의 처음에 1을 반환, 반복이 진행될때마다 1씩 증가 

</c:forEach>


<c:forEach var="s" items="${array}">

${s}

</c:forEach>


지정된 회수 만큼 반복할 경우

<c:forEach var="변수명" begin="반복문 시작 값 설정" end="마지막 값 설정">

</c:forEach>


for(int i=1; i<=10; i++){

        System.out.println(i);

}

<c:forEach var="i" begin="1" end="10">

        ${i}

</c:forEach>


<c:forTokens>

자바의 StringTokenizer와 동일한 역할 수행

<c:forTokens var="변수명" items="문자열" delims="구분자">

${token}

</c:forTokens>


fn 자주 사용되는 함수

fn:length(obj): list인 경우 값의 개수, 문자열인 경우 문자열의 길이 반환

fn:substring(str, idx1, idx2): idx1 ~ (idx2-1) 사이의 문자열 반환

fn:trim(str): 좌우 공백문자 제거

fn:replace(str, src, dest): str의 src를 dest로 변환

fn:indexOf(str1, str2): str1 ~ str2가 위치한 인덱스 값 반환

fn:startsWith(str1, str2): str1이 str2로 시작할 경우 true, 아니면 false

fn:endsWith(str1, str2): str1이 str2로 끝나는 경우 true

fn:ontains(str1, str2): str1이 str2를 포함하고 있을 경우 true


반응형

'학습 log (이론) > web' 카테고리의 다른 글

'Spring' AOP  (0) 2017.07.06
'Spring' IOC와 DI  (0) 2017.07.04
'AJAX'  (0) 2017.06.27
'JSP'  (0) 2017.06.22
'Servlet'  (0) 2017.06.09