1 표현언어의 표현방식
$(expr}
2. 표현언어의 기본객체
pageContext :: PageContext 객체 .사용$(pageContext.request.requestURI}
pageScope :: page 범위에 포함된 속성 값에 접근
requestScope :: request 범위에 포함된 속성값에 접근 .사용$(requestScope.name}
sessionScope :: session 범위에 포함된 속성값에 접근
applicationScope :: application 범위에 포함된 속성값에 접근
param :: request.getParameter("aa")와 동일한 기능. 사용은 $(param.aa)
paramValues :: request.getParameterValues의 기능. $(paramValues.aa)
header :: request.getHeader('aa") 와 동일. $(header.aa)
headerValues :: request.getHeaderValues("aa")와 동일 $(headerValues.aa)
initParam :: 컨텍스트의 초기화 파라미터값
cookie :: 쿠키 정보에 접근
3.연산자
3.1 수치 연산자
+ : 덧셈
- :뺄셈
* :곱셈
/ or div :나눗셈
% or mod : 나머지
ex)
${"10"+1} =>11
$("일"+1} => 에러남 "일"이 숫자로 변경이 안되기 때문
${null +1} =>1 null은 0으로 처리
3.2 empty연산자
empty<값>
- 값이 null이면 true
- 빈문자열 true
- 길이가 0인배열 true
- 빈Map true
- 빈 Collection true
3.3 비교연산자 ,논리연산자 , 비교선택연산자(?:) ->자바연산자와 동일
4.JSTL이 제공하는 태크 종류
라이브러리 | 하위기능 | 접두어 | 관련 URL |
코어 | 변수지원 , 흐름제어 , URL처리 | c | http://java.sun.com/jsp/jstl/core |
XML | XML 코어 , 흐름제어 , XML변환 | x | http://java.sun.com/jsp/jstl/xml |
국제화 | 지역 , 메시지 형식 , 숫자및 날짜형식 | fmt | http://java.sun.com/jsp/jstl/fmt |
데이터베이스 | SOL | sql | http://java.sun.com/jsp/jstl/sql |
함수 | 콜렉션처리 , String 처리 | fn | http://java.sun.com/jsp/jstl/functions |
-코어,함수 라이브 러리가 자주 사용되며 ,접두어는 다른접두어를 사용해도 상관없다.
- 필요한 jar 파일: jstl.jar , standard.jar (다운받는 방법 : http://www.cyworld.com/love82u/3054391)
4.1 코어태그(가장 많이 사용)
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
기능분류 | 태그 | 설 명 |
변수지원 | set | JSP에서 사용될 변수 설정 |
remove | 설정한 변수 제거 | |
흐름제어 | if | 조건에 따라 내부코드수행 |
choose | 다중조건을처리 | |
forEach | 콜렉션이나 Map의 항목처리시사용 | |
forTokens | 구분자로 분리된 각각의 토근을 처리할때 사용 | |
URL 처리 | import | URL을 사용하여 다른자원의 결과삽입 |
redirect | 지정한 결로로 리다이렉트한다 | |
url | url재작성 | |
기타태그 | catch | 예외처리에 사용 |
out | JspWriter에 내용을 알맞게 처리후 출력 |
4.1.1변수지원
● set 태그(변수선언)
- <c:set var="varName" scope="session" value="someValue">
: c - > 접두어(선언된 접두어를 입력하면됨)
: var -> 값을 지정할 변수
: scope -> 변수를 지정한 영역 (page , request, session , application)
: value -> 변수의 값 지정
<c:set var="varName" scope="session"> <!--이런식으로 몸체에 값을 입력할 수도있다.
someValue
</c:set>
map 및 객체
: var를 target로 , property 선언후 똑같이 사용
● remove 태그(선언된 변수 삭제)
<c:remove var="varName" scope="session/>
4.1.2 흐름제어 태그(제일 많이 사용)
● if태그(java의 if와 같은 하지만 if-else의 효과는없음)
<c:if test="조건">
</c:if>
● choose 태그
<c:choose >
<c:when test="${num>10 && num<15}">
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>
● forEach 태그(java의 for, do-while등등)
- 배열 , collection 또는 Map에 저장되어 있는 값 순차적으로 처리
<c:forEach var ="i" begin="1" end="100" step="2">
</c:corEach>
<c:forEach var ="i" items="${inarr}" begin="2" end="4">
[${i}]
</c:forEach>
[${i}]
</c:forEach>
<c:forEach var ="i" items="${map}">
${i.key} = ${i.value}</br>
</c:forEach>
● forTokens 태그(java의 java.util.StringTokenizer같은 기능제공)
<c:forTokens var="token" items"문자열" delims="구분자">
${token}
</c:forTokens>
4.1.3 URL 처리태그
● import(<jsp:include>와 같은기능)
-import와 <jsp:include>의 차이점으로는 import 태그는 같은 웹 어플리케이션 디렉터리에 포함되지 않았더라도 그리고 심지어 같은 서버에 있지 않은 자원에대해서도 접근가능
- 주의해야할 사항 : import태크를 사용한다고해서 읽어온 내용이 곧바로 import태그 위치에 포함되지 않는다는점.
<c:import url=http://media.daum.net charEncoding="euc-kr" var="daumNews" scope="request">
<c:param name="_top_G" value="news"/>
</c:import>
url : 읽어올 URL
charEncoding : 읽어 온 데이테의 캐릭터 셋
var : 읽어온 데이터를 저장할 변수명
scope : 변수를 저장할 범위 지정
-위와 같이읽어온 데이터를 var="daumNews"에 저장하기 때문에 곧바로 import 위치에 포함되지 않는다. 또한 읽어온 데이터를 쉽게 원하는 형태로 변경이 가능하다.
● url태그
- url을 생성하여 변수에 저장할때 사용
<c:url var="url1" value="/shopping.do" scope="session">
<c:param name="Add" value="isdn-001"/>
</c:url>
url : 생성한 URL이 저장될 변수
value : 생성할 url
scope : 변수를 저장할 범위 지정
● redirect 태그(response.sendRedirect와 비슷한기능)
- 지정한 페이지로 리다이렉트할때 사용
<c:redirect url="/ifTag.jsp">
<c:param name="name" value="bk"/>
</c:redirect>
4.1.4 기타태그
● out 태그
- JspWriter에서 데이터를 출력할때 사용
<c:out value="value" escapeXml="{true|false}" default="defaultValue"/>
value : JspWriter에 출력할 값을 나타냄
escapeXml : 이속성의 값이 true일경우 아래의 문자변경 ,생략가능
문자 | 변환된 형태 |
< | < |
> | > |
& | & |
' | ' |
'" | " |
default : value 속성에서 지정한 값이 존재하지 않을때 사용될 값을 지정
● catch 태그
- 예외가 발생할때 사용되는 태그
<c:catch var="exName">
</c:catch>
${header.Host}
${header["User-Agent"]}
${headerValues.Accept[0]} : Accept=>헤더이름 , [0]=>인텍스
${headerValues["Users-Data"][1] : Users-Data=>헤더이름 , [1]=>인텍스
${cookie.CART} : CART=>쿠키이름
${cookie["User_Name"]} : User_Name=>쿠키이름
${cookie.CART.value} : CART=>쿠키이름 Cart의 값을 가져오라
${cookie["CART"]["value"]} : CART=>쿠키이름 Cart의 값을 가져오라
${cookie.CART["value"]}
${cookie["CART"].value}
${cookie.CART.domain}
${cookie.CART["path"]}
${cookie.CART["maxAge"]}
${initParam.PARAM_NAME}
${initParam["PARAM_NAME"]}
fn:substringBefore , fn:substringAtter
파일 이름만 가져오고 싶었는데 lastIndexOf 를 써봐도 안됨.
jstl 함수에는 lastIndexOf가 없다
대신 fn:substringBefore , fn:substringAtter 존재
<c:set var="name" value="son01.gif />
${fn:substringBefore( name ,'.')}
<c:out value="${name}" />
결과 -> son01
<img src="${pageContext.request.contextPath}${ImgUrlPath}thumb/${fn:substringBefore(list.FILE_SAVE_NAME,'.')}<s:message code='board.thumb.backName' />.<s:message code='board.thumb.extension' />" alt="" />
fn:split
예) 02-123-4567 이란 값을 split 처리 할 경우 배열의 순서값으로 찾아서 처리 함.
${fn:split(list.TEL,'-')[1]} - ${fn:split(list.TEL,'-')[2]}
[출처] jstl 함수 정리2|작성자 237
${header.Host}
${header["User-Agent"]}
${headerValues.Accept[0]} : Accept=>헤더이름 , [0]=>인텍스
${headerValues["Users-Data"][1] : Users-Data=>헤더이름 , [1]=>인텍스
${cookie.CART} : CART=>쿠키이름
${cookie["User_Name"]} : User_Name=>쿠키이름
${cookie.CART.value} : CART=>쿠키이름 Cart의 값을 가져오라
${cookie["CART"]["value"]} : CART=>쿠키이름 Cart의 값을 가져오라
${cookie.CART["value"]}
${cookie["CART"].value}
${cookie.CART.domain}
${cookie.CART["path"]}
${cookie.CART["maxAge"]}
${initParam.PARAM_NAME}
${initParam["PARAM_NAME"]}
'front' 카테고리의 다른 글
element의 크기/위치 정보와 관련된 프로퍼티-메소드(offsetLeft....etc) (0) | 2015.01.04 |
---|---|
익스프레션 언어 (0) | 2014.10.29 |
자주쓰는 정규식 (0) | 2014.10.24 |
el 식 (0) | 2014.10.21 |
FILE AJAX로 업로드하기 (0) | 2014.09.04 |