Burninghering's Blog
article thumbnail

1. JSTL(JSP Standard Tag Library)

JSP에서 if문 쓸 때 

코드들이 쪼개지는데

이런 것들을 없애고 태그화 하는것이 JSTL이다.

 

<%=값%> 이러한 문법을 없애려고 EL

<%~%> 이러한 문법을 없애려고 JSTL

 

2. 예제 코드

<html />
<%@ page contentType="text/html;charset=utf-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <html> <head> <title>JSTL</title> </head> <body> <c:set var="to" value="10"/> <c:set var="arr" value="10,20,30,40,50,60,70"/> <c:forEach var="i" begin="1" end="${to}"> ${i} </c:forEach> <br> <c:if test="${not empty arr}"> <c:forEach var="elem" items="${arr}" varStatus="status"> ${status.count}. arr[${status.index}]=${elem}<BR> </c:forEach> </c:if> <c:if test="${param.msg != null}"> msg=${param.msg} msg=<c:out value="${param.msg}"/> </c:if> <br> <c:if test="${param.msg == null}">메시지가 없습니다.<br></c:if> <c:set var="age" value="${param.age}"/> <c:choose> <c:when test="${age >= 19}">성인입니다.</c:when> <c:when test="${0 <= age && age < 19}">성인이 아닙니다.</c:when> <c:otherwise>값이 유효하지 않습니다.</c:otherwise> </c:choose> <br> <c:set var="now" value="<%=new java.util.Date() %>"/> Server time is <fmt:formatDate value="${now}" type="both" pattern="yyyy/MM/dd HH:mm:ss"/> </body> </html>

 

3. Filter

서블릿들에 중복된 코드가 있으면

걸러내는 것이 Filter임

서블릿은 코드가 제거되고 간결해짐

 

요청이 오면 필터에서 전처리, 서블릿 호출(서블릿에 가서 처리), 필터에서 후처리, 그리고 응답

 

4. Filter가 2개일 때의 처리 과정

Filter가 2개라면,

요청이 와서

Filter 1 전처리

다음 Filter 2를 호출

Filter 2 전처리 

서블릿 호출

서블릿에서 처리

Filter 2 후처리

Filter 1 후처리 후에 응답

 

5. 서블릿 호출에 소요된 시간 (수행시간) 측정하기

수행 시간 측정하는 코드를 매번 서블릿에 만들어놓을 수 없으니,

필터에 만들어놓고 서블릿을 호출만 하면 편하다.

<html />
// 필터를 적용할 요청의 패턴 지정 - 모든 요청에 필터를 적용. @WebFilter(urlPatterns="/*") public class PerformanceFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { // 초기화 작업 } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // 1. 전처리 작업 long startTime = System.currentTimeMillis(); // 2. 서블릿 또는 다음 필터를 호출 chain.doFilter(request, response); // 3. 후처리 작업 System.out.print("["+((HttpServletRequest)request).getRequestURI()+"]"); System.out.println(" 소요시간="+(System.currentTimeMillis()-startTime)+"ms"); } @Override public void destroy() { // 정리 작업 } }

el.jsp를 실행해보니

로그에 아래와 같이 찍힌다.

처음에 필터가 필터객체를 생성하고 JSP에 적용하느라 오래 걸렸고,

두번째부턴 소요시간이 짧아지는 것을 알 수 있다.


본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

http://bit.ly/3Y34pE0

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

profile

Burninghering's Blog

@개발자 김혜린

안녕하세요! 반갑습니다.