developer Studying/JSP

[JSP]JSP, Servlet, EL, JSTL 간단한 정리

ParkYeseul 2024. 9. 24. 13:40

 

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>

 

 

 

 

참고 사이트

https://hunit.tistory.com/203 

https://velog.io/@wlstjdwkd/JSP-ELJSTL

https://23log.tistory.com/178

'developer Studying > JSP' 카테고리의 다른 글

[JSP] 서블릿과 JSP 기초 문법  (2) 2024.09.12