관리 메뉴

IT창고

JSP 익스프레션언어 본문

프로그래밍/JSP

JSP 익스프레션언어

방구석여포 2018. 2. 8. 00:28

EL(Expression Language)는 식(expression)을 중심으로 코드를 기술하는 언어를 뜻합니다.

익스프레션 언어로 JAVA언어 대신 좀 더 쉽게 JSP를 할수있게 됩니다.

EL표현은 연산자와 피연산자의 조합을 ${와 }로 둘러싸서 표현합니다.


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<% 

int var =0;

pageContext.setAttribute("var",1);

request.setAttribute("var", 2);

session.setAttribute("var", 3);

application.setAttribute("var", 4);

pageContext.forward("result1.jsp");

%>

위의 jsp 파일을 실행하면 result1.jsp파일로 포워드가 됩니다.


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

var = ${var }<br>

pageScope var = ${pageScope.var }<br>

requestScope var = ${requestScope.var }<br>

sessionScope var = ${sessionScope.var }<br>

applicationScope var = ${applicationScope.var }<br>

</body>

</html>

위의 jsp파일이 result1.jsp파일입니다. EL언어로 만들어졌습니다.


결과를 확인해보면 pageContext는 페이지가 바뀌면서 확인이 안되고 var는 가장 가까이에 있는 데이터가 들어갑니다.

순서는 page -> request -> sesion -> application 입니다.


EL로 파라메터 처리를 해보겠습니다.

<%

String t = request.getParameter("age");

int age = 0;

try{

age = Integer.parseInt(t);

}catch(Exception e){

out.println("나이가 넘어오지 않았습니다!!!");

return;

}

%>

당신의 내년 나이는 <%=age+1 %>세 입니다.<br>

파라메터를 EL로 처리가 가능하다.<br>

당신의 내년 나이는 ${param.age+1 }세 입니다.<br>


파라메터값을 받는다면 내년의 나이가 출력됩니다. 내년의 나이를 $로 받아서 표현할수있습니다.


age에 3의 값을 입력하면 정상적으로 파라메터 값이 전송되는걸 확인할수있습니다.


헤더값을 EL식으로 출력하는 걸 알아보겠습니다.


<%@page import="java.util.Enumeration"%>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

자바코드를 이용한 헤더값 출력하기<br>

<%

Enumeration<String> em = request.getHeaderNames();

while(em.hasMoreElements()){

String key = em.nextElement();

String value = request.getHeader(key);

out.println(key + " : " + value + "<br>");

}

%>

EL을 이용한 헤더값 출력하기<br>

host : ${header.host }<br>

host : ${header["host"] }<br>

user-agent  : ${header.user-agent  }<br>

user-agent  : ${header["user-agent"] }<br>

</body>

</html>


위의 코드와 같이 자바를 사용해서 출력할수도 있으며 EL을 사용하여 표현할수있습니다. 둘 중 편한 언어로 작성하면 됩니다.

확인해보면 자바와 EL의 표현되는데 차이점은 없습니다. 단 user-agent  : ${header.user-agent  }<br> 과 user-agent  : ${header["user-agent "] }<br>중 첫번째는 0으로 표기가 되는데 user-agent에서 -를 연산자(-)로 인식했기 때문입니다. 이 부분을 주의합니다.


쿠키 또한 EL식으로 표현이 가능합니다.

<body>

<%

response.addCookie(new Cookie("name","일번gsk"));

response.addCookie(new Cookie("age","26"));

%>

자바를 이용한 쿠키의 사용<br>  

<%

Cookie[] cookies = request.getCookies();

for(Cookie cookie : cookies){

out.println(cookie.getName() + " : " + cookie.getValue() + "<br>");

}

%>

<br><hr>

EL을 이용한 쿠키의 사용<br>

이름 : ${cookie.name.value }<br>

나이 : ${cookie.age.value }<br>

이름 : ${cookie.name.name }<br>

나이 : ${cookie.age.name }<br>

</body>

쿠키값도 EL로 표현을 해보면 자바와 크게 차이점이 없음을 알수있습니다. 익스프레션 언어는 자바언어 보다 간단하기에 쉽게 배우고 사용할수있습니다.


마지막으로 Array와 List의 EL식 표현을 알아보겠습니다.

<body>

<%

String[] ar = "강아지,고양이,개구리,너구리,토끼".split(",");

request.setAttribute("ar", ar);

%>

${ar[0] }<br>

${ar[1] }<br>

${ar[2] }<br>

${ar[3] }<br>

${ar[4] }<br>

</body>


배열을 El로 표현할때는 []를 사용합니다. []번호로 순서대로 출력할수있습니다.


<body>

<%

String[] ar = "강아지,고양이,개구리,너구리,토끼".split(",");

List<String> list = new ArrayList<>(Arrays.asList(ar));

request.setAttribute("list", list);

%>

${list[0] }<br>

${list[1] }<br>

${list[2] }<br>

${list[3] }<br>

${list[4] }<br>

</body>


리스트는 배열에서 리스트로 만들어주면 됩니다. 자바언어로 확인하면 한줄이 더 추가되었지만 결과를 확인해본다면

배열과 같은 결과가 나옵니다. 겉으로 표현되는데 자바언어와 별로 다를것이 없으며 익스프레션 언어로도 간단히 JSP를 해볼수있었습니다.

Comments