1. EL(Expression Language)이란?
JSP의 표현식(<%= %>)보다 더 쉽게 값을 출력하기 위한 language(${ })
1. EL에서 사용할 수 있는 기능
1) JSP의 4개의 영역 속성 사용 : PageContext, Request, Session, Application
2) 자바 클래스의 메서드 호출
3) EL의 기본 객체 사용
4) 수치, 관계, 논리 연산 사용
2. EL 내장객체
category | identifier | type | 설명 |
JSP | pageContext | Java Bean | 현재 페이지의 Page객체 |
범위 | pageScope | Map | page 영역에 저장된 객체 추출 |
requestScope | Map | request 영역에 저장된 객체 추출 | |
sessionScope | Map | session 영역에 저장된 객체 추출 | |
applicationScope | Map | application 영역에 저장된 객체 추출 | |
요청 매개변수 | param | Map | ServletRequest.getParameter(String)으로 값 추출 |
paramValues | Map | ServletRequest.getParameterValues(String)으로 여러 값 추출 | |
쿠키 | cookie | Map | HttpServletRequest.getCookie()로 쿠키 정보 추출 |
2. EL 문법
1. Dot 사용
1) Map 사용
${ Map.Map의 키 }
2) Java Bean 사용(자바 객체)
${ Java Bean.Bean속성 }
2. [] 사용
- 배열과 리스트인 경우, 문자로 된 인덱스 값은 숫자로 변경해서 처리함
ex) arr["0"] => arr[0]으로 처리
request.setAttribute("user.special", user);
${user.special.name} /*에러*/
${requestScope["user.special"].name};
3. EL로 객체 접근
1. 특정 영역에 저장된 값 접근
- 범위 지정 없이 key나 property이름만 쓰면, pageScope > requestScope > sessionScope > applicationScope 순으로 객체를 찾아간다.
//request.setAttribute("data", "데이터입니다.");
${requestScope.data}
${pageContext.request.data}
${data}
2. parameter값 접근
//url?name=홍길동&hobby=독서&hobby=게임
${param.name}//홍길동
${paramValues.hobby[0]}//독서
${paramValues.hobby[1]}//게임
3. Cookie값 접근
- Cookie가 null이거나, 해당 key에 해당하는 값이 null이라면 return null
- EL은 값이 null이면, 공백을 출력한다.
//스크립트릿을 이용했을 때
Cookie[] cookies = request.getCookie();
for(Cookie cookie : cookies){
if(cookie.getName().equals("test"){
out.println(cookie.getValue();
break;
}
}
//EL을 이용했을 때
${cookie.test.value}
4. EL 연산자 사용
*not empty와 같이 keyword로 사용 가능
종류 | 설명 |
산술 | +, -, *, /(div), %(mod) |
관계 | ==(eq), !=(ne), <(lt), >(gt), <=(le), >=(ge) |
논리 | 조건 ? 값1 : 값2 |
3항 | &&(and), ||(or), !(not) |
존재 검사 | empty - empty가 true를 반환하는 경우 1) 값이 null 2) 빈 문자열("") 3) 길이가 0인 배열([]) 4) 빈 객체 |
5. EL method 호출
1. 객체의 getter메서드 = get 떼고, 맨 앞 철자는 소문자로 수정, ()는 빼고 작성해서 접근한다.
ex) userInfo.name
2. 일반 메서드는 그대로!
ex) list.size()
//Data.java 클래스
import java.util.ArrayList;
public class Data {
private String name;
private int age;
private ArrayList<String> hobby;
public Data() {//기본 생성자
}
public Data(String name, int age, ArrayList<String> hobby) {
super();
this.name = name;
this.age = age;
this.hobby = hobby;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public ArrayList<String> getHobby() {
return hobby;
}
public void setHobby(ArrayList<String> hobby) {
this.hobby = hobby;
}
}
<%
ArrayList<String> hobbies = new ArrayList<>();
hobbies.add("맛집탐방");
hobbies.add("독서");
Data data = new Data("홍길동", 30, hobbies);
request.setAttribute("userInfo", data);
%>
${userInfo.name}//홍길동
${userInfo.hobby.size()}//2
'Programming > Servlet & JSP' 카테고리의 다른 글
[환경설정] Eclipse의 Web Project와 DB(MySQL) 연결하기2 (0) | 2022.03.28 |
---|---|
JSP (4) - JSTL (0) | 2022.03.27 |
Servlet & JSP (4) - Cookie와 Session (0) | 2022.03.27 |
Servlet & JSP (3) - MVC 패턴 (0) | 2022.03.27 |
Servlet & JSP (2) - Page 이동 (0) | 2022.03.27 |