JSTL, JSP를 사용하는 사람이라면 알아야 할 것

    JSTL (Jsp Standard Tag Library)


     

    JSTL은 JSP를 사용하는 사람이라면, 알아둔다면 매우 좋습니다.

     

    장점

    1. 빠른 개발
    2. 코드 재사용성
    3. 스크립틀릿 테그 사용할 필요가 없음
    4. HTML 테그와 비슷하여 JSP 작업시 편리.

     

    JSP를 사용할때는 기본적으로 <% %>을 이용하여, JAVA문구를 이용하지만, JSTL은 테그만으로도 이용이 가능합니다.

    특히 EL코드매우 중요하면서도 자주 쓰이는 문구입니다.

     

    이 EL코드를 활용하기 위해서 JSTL을 사용한다고 과언이 아닐정도 입니다.

    다만, 처음보는 사람은 생소할 수가 있어서 접근하는데 불편함을 겪기도 하지만 EL코드를 한 번쯤 접했던 사람들이라면 EL코드를 사용하기 위해 JSTL을 사용하게 될 것 입니다.

     

     

     

     

    EL코드

    기본적으로 request.getAttribute를 대신하여 사용합니다.

    request.getAttribute("abc")  => ${abc} 로 표현합니다.

     

    여기서 주의점은 request.getParameter는 해당사항이 아니므로, 오해하시면 안된다는 것 입니다.

    이를 사용하게 된 원인은 서버로부터 넘어오는 값을 호출 하기 위해서는

    JSP 스크립트가 필요하게되며,  <% %. 활용으로 인해 HTML을 다루는 사람이라면 매우 불편함을 호소하게 됩니다.

     

    이유는 JSP 스크립트 안에서는 HTML문구가 안 되기 때문이죠.

     

    그러나 EL코드는 HTML문구 사이로 자연스럽게 사용되기도 합니다.

     

    <input type="text" value="<%=request.getAttribute("key")%>">

    이 jsp 스크립트를

    <input type="text" value="${key}">

    이렇게 끝낼 수 있게 됩니다.

     

     

    ▼예제 보기

    사용방법은 위와 같습니다. java코드로부터 받은 request.setAttribute의 값을

     

    html에서 키값을 통해 결과값을 낼 수 있게 됩니다.

     

     

    ▼예제 보기

    그리고 request뿐만 아니라 다른 값 또한 가능 하다는 것을 확인 할 수 있습니다.

     

    만약 page, request, session, application의 키값이 동일할 경우, 앞에 Scope가 명시되면 구분 또한 가능합니다.

    그렇다는 뜻은 Scope끼리 동일한 이름의 key값이 없다면 Scope는 생략이 가능하다는 의미도 됩니다.

     

    다만 주의점이 있다면, 같은 Scope의 같은 key이 될 경우 인식이 되지 않으니 그 점을 주의 하셔야 합니다.

     

     

     

    Scope 종류


    이름 보관소
    pageScope JspContext
    requestScope ServletRequest
    sessionScope HttpSession
    applicationScope ServletContext

     

     

     

     EL코드로 객체 표현하기

    java에서 반드시 필요한 것은 DTO, VO, BEANS 등 다양한 이름으로 불리우는 객체입니다.

    이또한 setAttribute를 통해 값을 넣을 수가 있는데, 이를 표현하는 방법에 대해 알아보겠습니다.

     

    ▼예제 보기

    설명을 하기 위해 <%@ page import%>를 통하여 Mollang을 불러왔습니다.

    그러나 el코드를 사용할 때에는 page imort를 불러오지 않고도 사용 할 수 있습니다.

     

    Mollang의 객체를 만들고, mollang의 name과 blog에는 각각의 값이 들어갑니다.

    이를 평범하게 request.getAttribute를 가져올 경우, mollang의 주소값을 가져오는 것을 확인 할 수 있게 됩니다.

     

    이제 우리는 이를 활용하여 값을 표현하면 됩니다.

     

    ${key값.필드명} 혹은 ${key값.메소드명}으로 표현하면 값이 정상적으로 표현되는 것을 확인 할 수 있습니다.

     

    이제 이를 Scope까지 활용하게 된다면 3번 예시와 같게됩니다.

    ${Scope명.객체명.필드명}

     

    표현방법과 생략에 대해 이해를 하신다면 EL코드가 엄청 어렵지 않다는 것을 알 수 있습니다.

     

     

    EL코드로 배열 표현하기

     ${키값}은 request.getAttribute를 대신하여 사용 할 수 있음을 알 수 있었습니다.

    그리고 객체 또한 담을 수 있는 것을 확인 할수 있었습니다.

     

    그렇다면 배열을 표현할 때는 어떨까?

    방법은 똑같습니다. 다만, 배열이라면 index가 빠질 수 없겠죠?

     

     

    ▼예제 보기

    EL코드로 배열 표현하는 방법 입니다.

    arr이라는 배열의 이름을 request.setAttribute의 list라는 이름으로 담게 된다면

     

    출력시 list[0]으로 하면 됩니다. index에 따라서 값이 표현되는 것을 확인 할 수 있습니다.

     

     

    ▼예제 보기

    이를 활용하여, ArrayList 또한 표현 할 수 있는 것을 확인 할 수 있습니다.

     

     

     EL코드, 그 외 사용 방법

    ▼예제 보기

    이 밖에도 ${} 안의 값을 불러오고 계산이 가능합니다.

     

    ▼예제 보기

    그리고 만약 null이 담겨 있을 경우, el코드로 표현되는 결과값은 "" 공백으로 표현됩니다.

    이에 명심하여, null값 비교를 원할 경우 "" 공백을 통해 비교 할 수 있으므로 참고하셔야 합니다.

    반응형

    'Web > JSP' 카테고리의 다른 글

    [JSP] 절대경로와 상대경로  (0) 2021.05.14
    [JSP] WEB.XML은 무엇일까?  (0) 2021.05.13
    [JSP] JSP 빈즈  (0) 2020.08.28
    [JSP] Bean  (0) 2020.08.26
    [JSP] 지시어  (0) 2020.08.26

    댓글

    Designed by JB FACTORY