23.02.07

이동욱·2023년 8월 6일
0

NaverCloudCamp

목록 보기
22/42

학습내용

  1. ROWNUM
  2. 01 => 02 refactory 내용
  3. jsp EL(Expression Language)
  4. jsp EL ObjectScope

ROWNUM

  1. ROWNUM
select ROWNUM id, name, salary
from emp_test;
  • 칼럼들의 출력 결과에 번호를 매겨준다
  1. ROWNUM 실행 순서
select ROWNUM R, id, name, salary
from emp_test
where salary between 1111 and 7777;

where 키워드 실행 결과에 ROWNUM을 매겨준다

select ROWNUM R, id, name, salary
from emp_test
where salary between 1111 and 7777
order by salary desc nulls last; 

where => ROWNUM 번호 매긴 후 order by 실행

따라서 월급이 1111이고 7777인 사람을 월급순으로 내림차순 정렬 한 후 번호를 매기고 싶다면 아래와 같이 쿼리를 작성하면된다.

select ROWNUM R, vt.*
from
(
select id, name, salary
from emp_test
where salary between 1111 and 7777
order by salary desc nulls last
)vt
  1. ROWNUM의 WHERE는 1을 포함해야한다
select ROWNUM , vt.*
from
(
select id, name, salary
from emp_test
where salary between 1111 and 7777
order by salary desc nulls last
)vt where ROWNUM >= 3;
  • ROWNUM은 출력 결과에 대해서 하나씩 1부터 ROWNUM을 걸어준다 따라서 ROWNUM이 처음 1인 데이터가 출력되야지만 ROWNUM이 증가가 되기에 위 코드는 항상 레코드가 없다.
    ROWNUM이 3이상인 데이터를 출력하려면 아래와 같이 작성하면 된다.
select vt2.r, vt2.*
from
(
select ROWNUM r, vt.*
from
(
select id, name, salary
from emp_test
where salary between 1111 and 7777
order by salary desc nulls last
)vt 
)vt2 WHERE r >= 3;

jsp EL(Expression Language)

jsp안에 java 코드를 최소화 하기 위해 아래와 같은 기능들을 제공한다
1. objcet scope 접근용이
2. bean field 접근용이
3. colletcion 접근용이
4. 자체 연산자 제공
5. 내장 객체 제공(${"1" + 2} 실행시 자체적으로 문자에 Integer.parseInt("1") 실행)
-> java code를 캡슐화 하였다.

jsp EL ObjectScope

  1. pageScope(새로 추가된 scope, page 내부에서만 사용 가능)
  2. requestScope
  3. sessionScope
  4. applicationScope

${sessionScope.value} 처럼 object scope를 명시해주면 해당 object scope의 value를 찾지만 objcet scope을 명시 안해주면
pageScope => requestScope => sessionScope => applicationScope 순으로 value를 찾는다.

OGNL(Object Graph Navigation Language)

<%= pageContext.getSession.getId()%> --> ${pageContext.session.id}

  • .를 통해 필드를 접속하면 자동으로 getter/setter로 가져온다.(OGNL)

Bean Field 접근

${sessionScope.client.name}

  • object scope와 OGNL을 통해 field 접근 가능

${client.addr}

  • scope 생략 가능

taglib, jstl

jsp 화면출력기술(4개)

<c.out value=> 추가
<%= %>
<% out.print %>
${}

지금까지 모델 변경 내용

  1. 모델구현
  2. 검색 쿼리, 검색 조건 유지
  3. jsp를 el태그로 변경
profile
Backend Developer

0개의 댓글