마트철수
[059] EL과 JSTL 본문
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()

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

예제: LoginServlet.java
- 파라미터 추출 ... 100에러(클라이언트가 정보를 잘못 전달했을 때)
- BL 실행 → 가장 중요 ... 500 에러(개발자)
- 결과 request scope 저장
- 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에 넣어주기

- Apache Tomcat® - Apache Taglibs Downloads 에서 다운받아서 톰캣의 lib에 넣어주기
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 ...
- formatNumber: 수치 데이터를 특정 포맷으로 설정 시 사용되는 태그
실습
- loginform.jsp -> LoginServlet > login.jsp
- domain은 DB와 관련이 있고, domain은 서버와 관련이 있음
외우기


'KB IT's Your Life > 교육' 카테고리의 다른 글
| [061] 알고리즘: 백트래킹 (1) | 2024.08.02 |
|---|---|
| [060] FrontController 그리고 Spring 시작 (1) | 2024.08.01 |
| [058] 세션, 쿠키, 포워딩 (0) | 2024.07.30 |
| [057] JSP 그리고 HTML5 Form 태그화 서블릿 (0) | 2024.07.29 |
| [056] 알고리즘: 암시적 그래프 (0) | 2024.07.26 |