마트철수

[059] EL과 JSTL 본문

KB IT's Your Life/교육

[059] EL과 JSTL

마트스 2024. 7. 31. 18:07

 

2024.07.31(수)
 
JSP, Selvlet 4일차

실무에서 디자인과 협업할 때,

<% %> 이 태그가 그대로 넘어가게 되면

인식이 안 될 것임

 

그래서 tag로 변경하여 작업해둬야한다고 한다!

 


 
JSP, selvlet
 

PART01 시작하기

  • CH01.1 웹 애플리케이션 개요 
  • CH01.2 웹 애플리케이션  프로젝트

PART02

  • CH02.3 JSP 문법

PART03

  • CH03.1 HTML5 Form 태그화 서블릿
  • CH03.2 필터

PART04

  • CH04.1 서블릿 고급 - 세션, 쿠키
  • CH04.2 요청 포워딩, 리다이렉트

PART05

  • CH05 EL, JSTL

 

ch05 EL, JSTL

 

EL(Expression Language)

 

  • 데이터를 출력하기 위한 언어
  • 문법이 직관적, 사용이 용이
  • JSP에서 변수를 출력할 때 사용
  • 처리 가능한 데이터형은 프리미티브 / Map, List, 배열, 자바빈
    (자바빈이 되기 위한 전제조건: (1) 기본 생성자 (2) getter, setter (3) serializeable 있어야함)

※ getter, setter에 의해 결정되는 이름 = property (★)

 

EL 내장 객체

  • pageScope, requestScope, sessionScope, applicationScope
  • 내장 객체는 여러개이나, 위 4개가 가장 많이 사용됨 (특히 requestScope)

EL 기본 문법

  • ${표현식}: 내장 객체이거나 SCOPE에 저장된 속성을 지정
  • ${member.name} ... request.getAttribute("member") / member.getName()

member>getName()에 접근하겠다

 

  • null 처리는?
    EL은 null을 안 나오도록 자동 처리해줌

EL은 자동으로 null을 처리해주는 기능이 포함되어있음

 


 

예제: LoginServlet.java

  1. 파라미터 추출 ... 100에러(클라이언트가 정보를 잘못 전달했을 때)
  2. BL 실행 → 가장 중요 ... 500 에러(개발자)
  3. 결과 request scope 저장
  4.  forwarding, redirect
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String userid = request.getParameter("userid");
        String passwd = request.getParameter("passwd");

        request.setAttribute("userid", userid);
        request.setAttribute("passwd", passwd);

        request.getRequestDispatcher("login.jsp").forward(request, response);
    }
}

 


Scope

  • page scope → request scope →  session scope →  application scope
  • ${name}과 ${requestScope.name} 은 다른 것임 : requestScope은 지정된 scope에서만 봄 !
스코프 명 EL(jsp) Servlet
page scope pageScope 지역변수
request scope requestScope HttpServletRequest
session scope sessionScope HttpSession
application scope applicarionScope servletContext

 

JSTL(Jsp Standard Tag Library)

  • 액션 태그를 사용자가 직접 제작 가능 → 터스텀 태그
  • EL과 JSTL을 함께 사용

 

환경설정

  • JSTL을 다운로드해서 dependencies에 넣어주기

 

JSTL 라이브러리

  • Core(Prefix = c): if, for 등을 제공
  • |18N formattiond(Prefix = fmt): 날짜, 숫자 포맷 ex. 다국어 사이트 운영
  • Prefix는 접두어

JSTL Core 라이브러리

  • 기본적이고 핵심적인 기능들을 구현해 놓은 라이브러리
  • 문자열 출력, if문, for문과 같은 제어문 기능 포함
  • if와 foreach는 외우기 (if: 조건 처리 / forEach: 반복 처리)
    (1) <c:if> 태그 → <c:if test="조건식" var="변수명" scope="scope값">
    (2) <c:forEach> 태그 ↓

 

 

JSTL formatting 라이브러리

  • 국제화/지역화 및 데이터 포맷과 관련된 기능 제공
  • 데이터 포맷 → 날짜와 숫자와 관련된 기
    • formatNumber: 수치 데이터를 특정 포맷으로 설정 시 사용되는 태그
      <fmt: formatNumber value="값" typ="타입" pattern="값"
      surrencyStmbol="값" ...
    • formatDate
      <fmt: formatDate value=값" typ="타입" var="값" scope="값" pattern="값"
      dateStyle ...

 

실습

 

 

  • loginform.jsp -> LoginServlet > login.jsp
  • domain은 DB와 관련이 있고, domain은 서버와 관련이 있음

 

 

외우기