EL문과 JSTL

전영덕·2023년 4월 29일
0

JSP

목록 보기
14/16

1. EL문과 JSTL

  • JSP페이지 내에 자바코드와 HTML 코드가 섞여 있으면 가독성이 떨어진다.
    EL문과 JSTL문을 사용하면 HTML과 같은 태그로만 구성된 일관된 소스코드를 볼 수 있다는 장점이 있다.

1-1. EL

  • Expression Language
  • 값을 간결하고 간편하게 출력할 수 있도록 해주는 언어
  • <%= %>, out.println() 과 같은 자바코드를 더이상 사용하지 않고 좀더 간편하게 출력을 지원하기 위한 도구.
  • EL구문 : ${....}

1-2. 저장 범위

  • 값을 찾을 때는 작은 scope에서 큰 scope으로 찾습니다.
  • page > request > session > application

1-3. EL문 표현식

  • pageContext : JSP 내장객체의 pageContext
  • pageScope
  • requestScope
  • sessionScope
  • applicationScope
  • param : 파라미터를 꺼내오는 객체
  • paramValues : 같은 이름으로 전달된 질의 문자열의 이름과 값들을 저장하고 있는 map객체
  • header
  • headerValues

webapp아래에 el폴더와 el_test.jsp파일을 만듦

1-4. EL연산자

  • 산술연산자 : +, -, *, /(div), %(mode)
  • 논리연산자 : &&(and), ||(or), !(not)
  • 비교연산자 : ==(eq), !=(ne), <(lt), >(gt), <=(le), >=(ge)
  • empty연산자 : 값이 null이거나 공백문자인지를 판단하는 연산자 //empty 와 "" 사이에 스페이스바 하나있다.

${empty ""} -> true

${empty null} -> true

${empty data} -> 값이 없으면 true, 있으면 data

1-5. 예

  • request.setAttribute("cnt", 30);
    "cnt"를 가져오는 2가지 방법
    -> request.getAttribute("cnt");
    -> ${cnt}
  • List list = new ArrayList<>{"1", "test", ...};
    request.setAttribute("list", list);
    list의 0번째 값을 가져오는 2가지 방법
    -> ((List)request.getAttribue("list")).get(0)
    -> ${list[0]}

com.codingbox.servlet 패키지랑 ElTest클래스 만들기
웹앱 밑에다가 test.jsp만들기

day09 에 했던 자바 패키지의 filter랑 servlet을 가져옴

webapp밑에다가 test.jsp만들기

ElTest.java(JSP파일이아니라 Java서블릿)
이2개를 왔다갔다하면서 EL문 으로 표현하기 연습

test2.jsp 만들기

1-6. EL의 데이터 저장소

  • 각 객체에 동일한 변수가 있을 시 EL로 출력하면 아래 순서대로 출력된다.
    page > request > session > application
    범위가 작은 곳부터 찾기 시작한다. 하지만 특정하게 뽑아올 경우 한정자를 사용한다.
  • page scope : 하나의 JSP페이지에서만 사용
  • request scope : 하나의 요청(request)에서만 사용할 수 있는 영역
  • session scope : 하나의 웹 브라우저에서 사용할 수 있는 영역
  • application scope : 웹 어플리케이션 영역

test.jsp에다가 엄청 추가했다.

그러고선 el_test3.jsp, el_test4.jsp

el_test5.jsp

2.JSTL

  • JSP Standatd Tab Library
  • 연산이나 조건문, 반복문을 편하게 처리할 수 있으며, JSP페이지 내에서 자바코드를 사용하지 않고도 로직을 구현할 수 있도록 효율적인 방법을 제공한다.
  • JSTL을 사용하려면 라이브러리가 필요하다 : archive.apache.org/dist/jakarta/taglibs/standard/binaries/
    1.1.2검색해서 jakarta-taglibs-standard-1.1.2.zip 이것을 다운받자
    util폴더의 lib에 잘라내기해서 옮기고 알집 풀어주기
    알집 푼것에서 라이브러리가 2개가 나온다.
    오늘의 라이브러리에 추가하고 빌드패스 잡아주자

jstl폴더안에다가 jstl_test.jsp만들기
그 파일 상단 (3번째줄)에 c라고해서 선언을 해주었다.

2-1. jstl core 태그

  • <c:set />
    : 변수를 만들 때 사용
  • <c:out> </c:out>
    : 값을 출력할 때 사용. 하지만 EL문을 더 많이 사용한다.
  • <c:choose > </c:choose>
    : 내부에 c:when, c:otherwise만 있어야 한다.
  • <c:when > </c:when>
    : 조건 제어(case문)
  • <c:otherwise > </c:otherwise>
    : 조건 제어(default)
  • <c:forEach > </c:forEach>
    : 반복 제어(for문)

jstl_test6.jsp까지 쭉 달림
jstl_test7.jsp 강사님꺼랑 내꺼랑 다르게 했으니까 각각생각하자
jstl_test7_1.jsp이 내가 한것

jstl_test8.jsp은 태그라이브러리 하나더 추가해주었다.
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

갑자기?? 아무튼 el과 jstl을하는 이유? 자바코드를 최대한 걷어내자!
이걸로 jstl 이론을 다했다.

User폴더 만들기-> searchview.jsp
search_db.jsp만들고
day09에서 자바파일 복붙해올 것이다.
dao패키지, mybatis패키지, sql패키지, vo패키지
mybatis패키지의 파일2개는 수정할 것이 없다.

dao 패키지의 MemberDao.java : 생성자 제외하고 메서드 3개 삭제
sql 패키지의 member.xml : 매퍼 태그 안에 전부 삭제

이러고선 search_db.jsp로 간다
14번줄까지 작성하고 MemberDao로 가서 메서드 만들기

searchview.jsp도 태그라이브러리 2개모두 복붙해주자

0개의 댓글