PowerPoint 프레젠테이션

Download Report

Transcript PowerPoint 프레젠테이션

익스프레션 언어(expression language)
자바 코드를 대신하여 다른 표현 식을 사용함으로써 태그와의 혼동을 막고 좀더 간결
한 소스 작정이 가능
<%=a + 1 %>;
익스프레션의 식
${a + 1};
익스프레션 언어의 식
익스프레션에 사용된 a는 자바 프로그래밍 언어의 변수의 이름
익스프레션 언어의 식에서 사용된 a는 애트리뷰트의 이름
애트리뷰트란 setAttribute, getAttribute, removeAttribute 메서드를 통해 저장되고
관리되는 데이터를 의미
익스프레션언어 이하 el 이라고 부름
El은 쓰게 되면 보다 간결하게 작성할 수 있으므로 가독성이 좋아 지지만 단점으로
는 단순히 데이터 처리 결과의 간결성을 목표로 했기 떄문에 복잡한 로직은 구현 할
수 없다.
EL식의 문법 : ${식}
-${RESULT} : 데이터 이름 하나로만 구성된 EL식
-${RESULT + 100} : 연산자를 포함하는 EL식
-${m:sqrt(100)} : 자바의 정적 메서드를 호출하는 EL식
Jsp서블릿 에서 사용되는 네종류의 애트리뷰트
애트리뷰트의 종류
호출할때 사용하는 내장
변수
메서드의 소속
Page 애트리뷰트
pageContext 내장 변수
javax.servlet.jsp.JspConte
xt 클래스
Request 애트리뷰트
Request 내장 변수
javax.servlet.ServletReque
st 인터페이스
Session 애트리뷰트
Session 내장 변수
Application 애트리뷰트
Application 내장 변수
javax.servlet.http.HttpSes
sion 인터페이스
javax.servlet.ServletContext
인터베이스
EL식 안에 있는 데이터 이름이 해석되는 순서
- page -> request -> session ->application
Application : 서버(애플리케이션) 종료 전까지 살아 있는 객체
Session : 익스 플로러 종료 전까지 살아있는 객체
Request: 다음 페이지까지 유효한 객체
Page:현재 페이지에서만 유효한 객체
EL의 내장 객체
EL 내장 객체
설명
pageScopePage
영역에 존재하는 객체를 참조할 때
requestScopeRequest
영역에 존재하는 객체를 참조할 때
sessionScopeSession
영역에 존재하는 객체를 참조할 때
applicationScopeApplication
영역에 존재하는 객체를 참조할 때
param
파라미터 값을 얻어올 때
paramValues
파라미터 값을 배열로 읽어올 때
headerHeader
정보를 얻어 올 때
headerValuesHeader
정보를 배열로 얻어올 때
cookie
쿠키 객체를 참조할 때
initParam
컨텍스트의 초기화 파라미터
pageContextPageContest
객체를 참조할 때
Param:웹 브라우저에서 <form> 엘리먼트를 통해 입력된 데이터를 가져올 때 사용하는
내장 객체
${param.Num}
${param[“Num”]}
paramValues: 똑같은 이름의 데이터가 여러 개 입력될 경우 인덱스를 사용하는 표현 방
법
${paramValues.ANIMAL[0]}
${paramValues.[“ANIMAL”][1]}
<body>
<form action = “PetsResult.jsp”>
아이디: <input type = “text” name = “id”> <br> <br>
다음 중 회원님이 키우고 있는 애완동물 선택하십시오.<br><br>
개<input type=“checkbox” name=“animal” value=“개”>
고양이<input type =“checkbox” name=“animal” value=“고양이”>
고릴라<input type =“checkbox” name=“animal” value=“고릴라”><br><br>
<input type = “reset” value =“취소”>
<input type = “submit” value = “확인”>
</form>
</body>
<body>
아이디 : ${param.id}<br>
선택한 동물 : ${paramValues.animal[0]}
${paramValues.animal[1]}
${paramValues.animal[2]}
</body>
익스프레션 언어의 연산자
★산술 연산자, 비교 연산자, 논리 연산자, 조건 연산자
${param.NUM1 div param.NUM2}
${param.NUM1 == param.NUM2}
${param.NUM1 gt 0} and ${param.NUM2 gt 0}
★엠프티 연산자
데이터의 존재 여부를 확인하는 연산자
${empty param.ID ? “guest” : param.ID}
★대괄호 연산자와 마침표 연산자
이 두 연산자는 자바에서는 배열 항목과 객체 맴버를 가리키기 위해 사용되지만 익스
프레션 언어에서는 비슷하면서도 다른 용도로 사용 된다.
대괄호 연산자와 마침표 연산자로 가리킬 수 있는 데이터 항목
-배열 항목
-java.util.List 객체의 데이터 항목
-java.util.map 객체의 데이터 항목
-자바빈( javaBean) 프로퍼티
이 중 배열과 java.util.List 객체의 데이터 항목 = 반드시 대괄호 연산자
Java.util.map 객체의 데이터 항목과 자바빈의 프로퍼티 = 대괄호,마침표 둘다 가능
${WINNERS[0]}
${param.NAME} or ${ADDRESS[param.NAME]}
★익스프레션 언어로 자바의 정적 메소드 호출하기
익스프레션 언어의 목적은 데이터를 처리하는 로직을 구사하는 것이 아니라 데이터의
처리의 결과를 출력하는 것, 하지만 연산자를 이용해서 간단한 데이터를 처리 할 수도
있다. 그리고 그보다 조금 더 복잡한 처리가 필요할 때는 자바의 정적 메소드를 호출하
면 된다. 그런데 EL식 안에서 이런 메소드를 호출하기 위해서는 준비 작업이 필요하다.
EL 식에서 호출할 정적 메소드를 웹 컨테이너에 함수로 등록해 놓아야 한다. 여기에서
말하는 함수는 C언어에서의 함수와 마찬가지로 서브루틴을 의미하는데, 다른 언어의 함
수와 구분을 위해 EL 함수라고 부르기도 한다.
★자바의 정적 메소드를 EL함수로 등록하는 방법
EL함수는 .tld라는 확장자를 갖는 TLD 파일에 등록해야 한다. 그리고 이런 파일을
web.xml 파일과 달리 하나의 웹 어플리케이션 디렉터리 내에 여러 개 존재할 수도 있고
작성 방법도 다르다.
TLD란 (Tag Library Disciptor)의 약자이며, 이 말의 의미는 ‘태그 라이브러리에 대한 정
보 기술이다. 여기에서 말하는 태그란 액션 태그를 말하는 것인데 TLD파일은 본래 이런
액션 태그를 등록하기 위해 개발 되었다.
TLD 파일의 루트 엘리먼트는 <taglib> 이고 이 안에 EL함수를 등록한다.
여기까지가 TLD파일을 등록하는 과정
★ EL 함수를 호출하는 방법
Jsp페이지 안에서 EL함수를 호출할때는 제일 먼저 taglib 지시자를 써야한다.
★우리가 직접 작성한 정적 메소드를 호출하는 방법
다음의 클래스에 있는 sum이라는 메소드는 파라미터로 주어진 두 개의 수와 그 사이에
있는 모든 정수를 더해서 리턴하는 정적인 메소드인데, 이런 메소드도 호출할 수 있다.