객체(Object)
EL (Expression Language)
EL이란?
JSP를 사용하다보면 먼가 불편하고 이상한 점을 느꼇을 것이다.
분명 html을 작성하려고 JSP 코드를 작성하는데 <% %>의 Java코드가
생각보다 많이 작성되어 있고 가독성이 떨어지는 모습을 볼 수 있을 것이다.
이러한 부분을 보완하기 위해서 JSP 2.0부터는 EL이라는 tag를 지원하여 Java코드를 더 간결하게 작성할 수 있게된다.
EL 특징
접근용이
- Object Scope
- Bean Field
- Collection
제공
- 자체연산자
- 내장객체
EL의 사용
EL tag의 사용법은 ${ }을 사용한다.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%
String name = (String)request.getAttribute("name");
%>
<html>
<head>
</head>
<body>
나의 이름은 <%= name %>이다.
</body>
</html>
위와 같이 servlet에서 request Scope를 통해 어떠힌 데이터를 보내려면
<% %> 안에 getAttribute코드를 작성하고 캐스팅 또한 해줘야하는
번거로움이 있다.
하지만 EL tag인 ${ }을 사용한다면 이러한 코드를 더욱더 간결하게
작성 할 수 있게된다.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<html>
<head>
</head>
<body>
나의 이름은 ${name}이다.
</body>
</html>
위와 같이 따로 캐스팅과 get코드를 작성하지 않더라도 key값으로
request의 저장된 데이터를 쉽게 불러 올 수 있다.
EL tag
EL은 데이터를 불러오는 것 뿐만 아니라 연산식을 사용 할 수 있다.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<html>
<head>
</head>
<body>
1 + 2 = ${ 1 + '2' } <br/> <!-- 1 + 2 = 3 -->
2 * 3 = ${ 2 * 3 } <br/> <!-- 2 * 3 = 6 -->
</body>
</html>
EL은 뿐만아니라 데이터를 자동으로 인식하여 숫자로 구성된
문자열은 int로 바뀌어 계산을 한다.
OGNL (Object Graph Navigation Language)
EL은 OGNL 오픈 소스이며 간단한 표현식을 사용하용하여 코드를
간결하게 작성 할 수 있다.
Servlet을 배웟다면 Object Scope를 배웠을 것이다.
- request
- session
- application
EL 또한 Object Scope 개념이 존재한다.
- pageScope
- requestScope
- sessionScope
- applicationScope
위에 ${ name }을 불렀는데 이것은 Scope가 생략되 있는 코드로써
session인지 request인지 알 방법이 없다.
여기서 찾아가는 순서를 가지게 되는데 page => request => session => applucation
순서대로 찾아가게된다.
//java
public class UserVO{
private String name = '홍길동';
public String getName(){
return this.name;
}
}
// -----
request.setAttribute("user", new UserVO);
<!-- jsp -->
~
<body>
${ user.getName }
<!-- get을 통하여 접근한다 -->
${ user.name }
<!-- get을 생략하여 properties에 접근 -->
</body>
~
위와 같이 get/set , scope의 생략을 통해 코드를 간략하게 작성할 수 있다.
이것을 OGNL이라고 한다.
EL 활용
EL tag는 이렇게 JSP 코드를 쉽게 쓰는 방법을 가지고 있어
JSTL과 후에 배울 Spring framework에서도 사용하게 된다.
Leave a comment