EL, JSTL

0

jsp

목록 보기
23/39

EL(Expression Language)

값을 표현하는데 사용되는 스크립트 언어. JSP의 기본 문법을 보완하는 역할을 한다.

자바언어 쓸 수 없음. 반드시 속성데이터써야됨

  • 기본 객체가 제공하는 영역의 속성 사용

  • 속성의 형태로 공유되고 있는 집합 객체에 대한 접근 방법 제공

  • 속성으로 공유되고 있는 데이터에 대한 수치 연산, 관계 연산, 논리 연산자 제공

  • 송성으로 공유되고 있는 자바 클래스 메서드(인스턴스의) 호출 기능 제공

  • 속성 데이터를 잘 갖고 놀기위한 것

속성명이 아니라 변수명이라서 안나옴

어느 영역에서 꺼내야 된다는 것을 명시할 필요가 없다.
파서 안에서 가장 작은 영역부터 뒤진다. pageContext부터 ~

-> 어디에서 가져올건지를 표현하기 위해 영역객체 사용

지원하지 않는 연산자-할당연산자
단항연산자 : ++ -- 증감한다음에 할당해주는 것. -> 증감연산자 지원 안함.

el 3버전부터는 할당연산자 지원되는데 우리나라에서는 3점대 안씀.

단항연산자-length만 판단가능. 진짜 비어있는지는 모름(" "-false로 나와서)

  • 산술연산, 컨켓연산
    el - 산술연산만 가능

스크립트는 연산 중심이 연산자이다.
-> 내가 연산할 수 있는 데이터로 바꾸려고 함. 알아서 파싱함.

산술연산 문자열 지원하지 않는다.
연산 중심은 연산자이다.

연산 중심이 데이터가 아니라 연산자라서 1.5나옴
기본적으로 실수연산한다.

연산 중심이 연산자이기 때문에 자신이 연산할 수 있는걸로 바꾸려고 함. - 없으니까 false로

결과는 1. 존재하지 않으니까 0으로 바꿔서 연산수행함.

el은 -를 빼기로 계산할 것-> 결과는 -2나옴
=> 연산배열구조 사용

greaterthan, lessthan

el은 값을 처리하기 위한게 아니라 출력하기 위한것 - 어지간한 것은 ""로 바꿔서 exception발생 잘 안함.

el원래는 메서드 호출 불가능했음

버전2이하는 이거 안됨
->버전 타지 않게 하자

-> 배열처럼 인덱스로 접근

map은 element가 아니라 entry를 가지고 있다.
자바스크립트-맵의 엔트리 접근 연산배열구조로..?

하지만 마지막거는 단점
만약 값이 "key-1"이라면
숫자로 바꿔서 -1출력됨
->가장 안전한 방법은 연산배열구조

자바가 가지고 있는 프로퍼티 가져오는게 아니라 앞에 get붙이고 뒤에 ()붙여서 가져오는 것

jsp의 기본객체는 el에 없음
->request라는 객체는 el에 없다.


자바스크립트에서 vo property접근 - get, ()떼고
-> member.mem_id
이게 되면 연산배열구조도 가능하다.


jsp, el 객체 다르고 jsp의 기본객체는 el에서 지원되지 않는다.
유일하게 지원되는게 pageContext

el-반쪽짜리 언어. 데이터 가지고 노는 방법은 없고 표현하는 것만 - 제어문없음
=> JSTL 쓰는 것

지금 필드는 거의 다 el이나 jstl


JSTL

jsp에서 바로 db에 접근할 일 없어서 데이터베이스 안씀
xml-요즘은 json 더 많이 쓰고 마샬링 하려면 controller단에서 바로 마샬링해서 내보내면 되서 안씀

함수-el 2.2전까지는 함수 호출 못해서 그거 보안하기 위해 만들어졌던 것

라이브러리 추가.

태그가 라이브러리로 됬다는 것은 커스텀태그의 집합.

action태그는 jsp에서 표준으로 제공했기때문에 라이브러리 추가 안하고 그냥 쓸 수 있었음

taglib로딩할 때 사용

c:remove - 4개 스코프 다 뒤져서 있으면 다 지움
-> remove 쓸때 스코프 명시하자

jstl에서 var - 무조건 속성명
-pageContext에 넣음(제일 작으니까)
->자바 for문에서 블럭변수가 var 블럭 속성명으로 됨. - for문 끝나도 남아있을 가능성 있음(pageContext에 저장되니까)

forEach - step양수만 지원. --없음. - var를 -1로..

선생님

loopTagStatus - 현재 반복문에 대한 상태 정보 가지고 있음

getIndex() - 짝수 2,4,6,8.. -> 지금 반복자의 index. step에 따라 달라짐
getCount() - 반복 횟수
first-첫번째 반복문인지,
last-마지막 반복문인지

여기서부터 여기까지는 html, 여기까지는 css야 라고 구분해서 알려줘야 - 토큰

토큰을 어떻게 쪼개냐에 따라 의미가 달라진다.
토큰-문장의 구성요소. 의미가 부여되는 최소 단위.

forTokens : 문장을 구성하고 있는 토큰들에 대해 반복작업 수행

c:url
1. 서버사이드 주소를 클라이언트 사이드로 만들어줌
2. 쿠키 없어도 세션파라미터 붙여서 넘겨줌.필요할때만. 쿠키지원되면 굳이 안붙임

  1. 쿼리스트링 만들어서 붙여준다.

다음이 소스로 들어옴
소스보기하면

myPage 리펙토링


el, jstl로 바꾸기

i18
특수한 데이터 형태를 일정한 문자열로 바꾸고 싶다-포맷팅
문자열을 특수한 데이터 형태로-파싱
지역에 따라서 날짜,숫자 형식 달라져서 국제화태그로 넣은것

날짜 형식 쓴적없는데 알아서 년.월.일 나옴 - 지금 우리가 쓰고있는데가 한국이라

static이라고 해서 다 갖다 쓸 수 있는게 아니다. -> el함수 사용

el+jstl : layout 엔진, 템플릿 엔진.
뷰 지원하는 엔진 다른것도 있음.
사용방법이 아니라 뭘 해주는지,구조파악

<숙제>
세계시간대 리스트로 제공
선택한 타임존에 따라 시간대 바뀌어야 - Calendar.jsp에 다 있음

본인만의 함수 라이브러리 만들어보기

0개의 댓글