JSP와 서블릿다시 만난 이녀석들.
EL, JSTL 공부하기 전에 다시 한 번 정리하고 가겠다.
서블릿은 자바에서 실행하는 웹코드
JSP는 HTML코드로 작성하고, html파일 내부에 <%%>를 통해 자바 코드 삽입 가능
JSP로 작성된 파일은 JSP Container에 의해 Servlet(.java)파일로 변환되어 실행.
본격적으로 gogo
🌋EL
- EL은 표현을 위한 언어로 JSP 스크립트의 표현식(<%= %>)을 대체할 수 있다.
${ }: JSP가 실행될 때 즉시 반영되며, 객체 프로퍼티 값을 꺼낼 때 주로 사용
- ${변수명}으로 선언하여, 다양한 연산자(산술, 비교, empty)를 사용 할 수 있는 도구
- ${fn:} 등을 통해 함수 사용 가능
- HTML
- <span>${prod.brndNm}</span> : 프론트단 노출 용도
- javascript
- "${prod.brndNm}"
- JS에선 “” 안에 넣어서 사용한다.
<c:set var="user" value="${sessionScope.user}" />
Hello, ${user.name}!
${user.name}은 user 객체의 name 프로퍼티를 가져온다.
EL이 사용되면, 세션 범위(session scope)에서 user 객체를 찾고, 그 프로퍼티 값 출력
<c:set var="fruits" value="${['apple', 'banana', 'orange']}" />
First fruit: ${fruits[0]}
EL을 사용하여 배열이나 리스트의 요소에 접근합니다. ${fruits[0]}은 첫 번째 과일인 apple을 가져온다.
<c:if test="${user.role == 'admin'}">
Welcome, Admin!
</c:if>
사용자의 역할(role)이 admin일 경우에만 "Welcome, Admin!"을 출력
생각보다 간편해 보이는 느낌이다. 눈과 손에 익으면 자주 자주 사용하게 될 것같다.
//JSP 스크립틀릿 사용
<%
User user = (User) session.getAttribute("user");
out.println("Hello, " + user.getName() + "!");
%>
//EL
Hello, ${user.name}!
JSP 스크립틀릿에 비교하면 EL은 줄임말 같다. 이렇게 사용하자. 진짜. 외워야지
⛵JSTL
JSTL (Jsp Standard Tag Library)
JSTL = JSTL + EL의 조합을 의미한다.
HTML내의 스크립틀릿을 편하게 변환하여 준다.
<%= value> → ${value} <%= for> → <c:forEach>
<%= if> → <c:if>
JSTL은 JSP페이지 내에서 java코드를 사용하지 않고 로직을 내장하는 방법을 제공한다.
🚇CORE종류
1. <C:set>
int num = 100; -> <c:set var="num" value="100">
2. <c:out>
system.out.println(" 안녕하세요 "); -> <c:out value=" 안녕하세요 ">
3. <c:remove>
한 영역의 변수명을 지우는 코드
(page → request → session → application) 순서의 영역
4. <c:if>
if - else 문과 동일하지만 JSTL에서는 else문이 없다. scope값을 생략하면 기본으로 page영역이 지정
5. <c:choose> / <c:when> / <c:otherwise>
자바의 switch 구문과 if-else 구문을 혼합한 형태로 다수의 조건문을 걸고 싶을때 사용
<c:choose>
<c:when test="${empty list }">
등록된 글이 없습니다.
</c:when>
<c:when test="${abc}">
안녕하세요
</c:when>
<c:otherwise>
<c:set var="doneLoop" value="false" />
</c:otherwise>
</c:choose>
|
이렇게 <c:choose> 태그안에 <c:when>이 중복되어 사용이 가능하며 boolean값이 True일 경우 블록을 수행 <c:otherwise>는 <c:when>의 결과 값이 모두 False 일 경우 실행
6. <c:forEach>
자바에서는 for문으로 불리던게 JSTL에서는 forEach로 변경
배열이나 컬렉션, Map에 저장되어 있는 값들을 순서대로 처리 할때 사용되며,
<c:forEach var=" i " begin=" 1 " end=" 10 " step=" 1 "> ${ i } </c:forEach>로 i가 1부터 10까지 1씩 증가한다는 구문을 쉽게 만들 수 있다.
7. <c:forTokens>
자바의 StringTokenizer 를 JSTL를 사용하면 아주 간편하게 사용할 수 있다.
<c:forTokens var="abc" items="안녕/하세요/hunit블로그/입니다" delims="/" >
8. <c:catch>
try{
자바에서는 여기에 행동
} catch (Exception err){
에러내용 표시
}
<c:catch var= "abc ">
JSTL에서는 여기에 행동
</c:catch>
태그 밖에 ${abc}를 사용하여 에러내용
|
자바의 Try-catch 구문, 단 <c:catch>태그는 에러내용을 ${abc}로 빼내서 처리해줘야 합니다.
9. <c:redirect>
아래와 같이 파라미터 값을 지정된 url로 보낸다.
<c:redirect url="baordList.jsp">
<c:param name="abc" value="안녕하세요" />
</c:redirect>
참고 사이트
'developer Studying > JSP' 카테고리의 다른 글
[JSP] 서블릿과 JSP 기초 문법 (2) | 2024.09.12 |
---|