1. JSTL
JSTL 은 JSP Standard Tag Library 의 약자이며, JSP 태그를 라이브러리 형태로 모든 프로그래머가 공통으로 사용하도록 모아 놓은 것이다. 좀 더 자세한 내용은 위키백과에서 확인할 수 있다.
JSTL 을 사용하기 위해서는 JSP 파일에 다음과 같이 선언해 주어야한다.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
- c:out = 객체를 출력할때 사용한다.
<c:out value="${value}" default="Null or empty" escapeXml="false" />
default 와 escapeXml 은 사용하지 않아도 된다.
default 는 기본값 지정시 사용
escapeXml 은 태그를 사용할때 쓴다.
- c:set = 객체를 저장하는 용도로 사용한다.
<c:set var="name" value="홍길동" />
<c:set scope="request" target="book" property="is" value="10" />
<c:set value="홍길동" target="UserModel" property="UserName" />
1. name 이라는 변수에 홍길동이라는 값을 저장한다.
2. request 라는 scope 에 book 객체의 is 라는 property 값으로 10을 저장한다.
여기에서 scope 로 사용되는 것은 page, request, session, application 이 있다.
3. UserModel 이라는 객체의 UserName 이라는 property 값으로 홍길동을 저장한다.
- c:remove = 객체를 삭제할 때 사용한다.
<c:remove var="name" scope="request" />
- c:if = 조건문
<c:if test="${조건}" >
조건 만족시 이영역 수행
</c:if>
조건 부분에는 eq, ne, == 등을 사용하여 조건문을 넣어줘야한다.
- c:choose, c:when, c:otherwise = switch 문에 해당
<c:choose>
<c:when test="${조건}" >
조건에 맞으면 이영역 수행
</c:when>
<c:otherwise>
조건에 맞지않으면 이영역 수행
</c:otherwise>
</c:choose>
- c:forEach = 반복문
<c:forEach items="${values}" var="list" varStatus="status">
<c:out value="${list}" />
</c:forEach>
values 는 외부에서 넘겨 받은 리스토, 배열 형태의 값이고 이걸 forEach 내부에서 사용하기위해 list 라는 값으로 선언하여 사용한다.
var, items 는 필수로 작성해야한다.
varStatus 는 선택적으로 사용할 수 있다.
- ${status.current} : 현재 아이템
- ${status.index} : 0부터 순서
- ${status.count} : 1부터 순서
- ${status.first} : 현재가 첫번째인지 확인
- ${status.last} : 현재가 마지막인지 확인
- ${status.begin} : 시작값
- ${status.end} : 끝값
- ${status.step} : 증가값
begin, end, step 은 선택적으로 사용할 수 있다.
- begin : 시작할 Index (default : 0)
- end : 종료할 Index
- step : index 의 이동량 (default : 1)
- c:forToken = 구분자로 반복
<c:forToken var="alphabet" items="a,b,c,d,e,f" delims="," varStatus="status">
<c:out value="${alphabet}" />
</c:forToken>
delims 를 구분자로 사용하여 items 의 값을 split 하는 개념이다.
- c:import = JSP 파일을 include 한다.
<c:import url="./test.jsp" charEncoding="UTF-8" />
위와 같이 사용하고 charEncoding 은 인코딩이 문제가 있을때에 사용하면 된다.
- c:url, c:param = URL 을 처리할 때 사용
<c:url value="/home.do">
<c:param name="name" value="홍길동" />
<c:param name="id" value="hong" />
</c:url>
- c:redirect = Redirect 시에 사용한다.
<c:redirect url="http://www.url.com" />
- c:catch = 예외 발생시 처리할때 사용한다.
<c:catch var="err">
<%=1010%> <!-- 임의 에러 발생 -->
</c:catch>
<c:out value="err" />
임의로 에러를 발생시켜서 확인해 볼 수 있다.
- fmt와 functions
JSTL 을 사용할때 기본적 Core 외에도 fn과 fmt 등을 선언하여서 사용할 수 있다.
배열의 길이값을 구하거나 데이터의 형태를 변경할때 사용한다.
선언하는 방법은 아래와 같다.
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
가장 많이 사용하는 예
<fmt:formatNumber value="${won }" pattern="#,###" />
<c:out value="${fn:length(list)}" />
2. EL
EL 은 Expression Language 의 약자로서 내장 객체의 데이터를 Java 를 이용하지 않고 출력하는 것이다. 주로 JSTL 과 함께 사용한다. '$' 와 '{}' 을 사용하여 값을 표현한다.
EL 기본객체(내장객체)
JSP/servlet 의 객체(pageContext 제외)의 속성값이나 파라미터 값등을 쉽게 표현하기 위해 기본 객체를 제공한다.
- pageContext : JSP 페이지와 관련된 프로그램에서 다른 내장 객체를 얻어내거나 현재 페이지의 요청과 응답의 제어권을 다른 페이지로 넘겨주는데 사용. request, session, application 과 같은 내장 객체 참조.
- pageScope : page 영역 참조
- requestScope : request 영역 참조
- sessionScope : session 영역 참조
- applicationScope : application 영역 참조
예) ${requestScope.id} -> request.getParameter("id");
${sessionScope.id} -> session.getParameter("id");
※ scope 는 생략이 가능하다. ${sessionScope.id} 를 ${id} 라고 표현할 수 있다. 생략하면 작은 영역순으로 찾게 된다.
request > session > application 순
- param : 요청 파라미터의 값을 String 으로, request.getParameter() 의 결과와 동일
- paramValue : 요청 파라미터의 값을 String[] 으로, request.getParameterValues() 의 결과와 동일
- header : 요청 header 정보 request.getHeader() 의 결과와 동일
- headerValues : 요청 header 정보를 배열, request.getHeaders() 와 동일
- cookie : 쿠키참조, request.getCookies()
- initParam : 컨텍스트의 초기화파라미터. application.getInitParameter(이름)과 동일.
연산자
- 수치연산자 : +, -, *, /, div, %, mod
- 비교연산자 : ==, eq, !=, ne, <, lt, >, gt, <=, le, >=, ge
- 논리연산자 : &&, and, ||, or, !, not
- empty연산자 : 참조값이 null, 문자값이 "", 배열의 길이가 0, 비어있는 List/Set/Map 인 경우에는 true 반환.
예) ${1+2} -> 3
${2==2} -> true
${empty A} -> A 가 null 이면 true
'일하딩 > Web' 카테고리의 다른 글
[Linux] 톰캣 클린 - tomcat clean (0) | 2021.03.29 |
---|---|
[JAVA] 정규표현식으로 특정 패턴의 문자열 찾기 (0) | 2020.12.21 |
[Java] JSON 파싱하는 방법! (0) | 2020.11.12 |
[CSS] Position 이란? (static, relative, sticky, fixed, absolute) (0) | 2020.07.26 |
[Html] Button 태그 사용시 자동 submit 없애기 (0) | 2019.12.16 |
댓글