[정리] EL :: Basic

2012.03.20 22:01

가을의 곰을... 조회 수:7292

[정리] EL :: Basic

[출처] http://ethdemor.springnote.com/pages/4015477

선에서 "JSP는 자바 언어를 몰라도 된다" 라고 했던 말은 EL과 Java Bean을 염두해 두고 한 말이지 스크립틀릿을 두고 한 말은 아닙니다.

Jaba Bean과 Enterprise Java Bean은 또 다른 거라고 하더군요. EJB는 뭘까요?

Expression Language (표현식 언어)

아직까지는 html 안에 java 코딩을 하는 JSP가 많이 남아있지만, 점차 없어지는 추세라고 하는군요. 왜 그럴까요? 그건 다음과 같은 이유랍니다.

1) 웹 페이지 디자이너가 자바를 알 필요가 있을까?

2) JSP 안에 있는 자바 코드는 유지/보수 하기가 어렵다.

EL은 JSP를 사용할 경우 발생하는 위의 두 가지 문제점에 대한 해답입니다.

EL은 JSP 2.0 스펙에 공식적으로 포함되었으며, 스크립틀릿이나 표현식으로 했던 작업을 간편하게 할 수 있습니다. EL의 핵심은 자바 코딩을 다른 곳에 해놓고, EL을 사용해 호출하자는 거죠. 요즘 추세인 비지니스 로직(자바 프로그래머)과 프레젠테이션(디자이너)을 분리해서 각자 할 일을 확실하게 나누자는 거겠죠. 코드가 같은 파일에 들어 있다면 많은 애로사항이 있을 것도 같습니다. EL은 비 자바 개발자를 위해 만들어진 문법이지만 위의 두 가지 문제 중 두 번째 문제를 해결할 수 있다는 점에서 자바 개발자에게도 어필할 수 있죠.


문법이 '직관적'이다 라는게 어디서 부터 시작한 건지는 모르겠지만 어쩌면 그 시작이 XML 일지도 모르겠습니다. XML의 Extensible한 메타 언어이기 때문에 가지는 장점 중 하나는 바로 자기기술적(self-descriptive)이라는 겁니다. 한국말로 적당히 번역해 보자면 특별한 문법을 알지 못해도 직관적으로 눈에 읽히는 코드 라고 할 수 있습니다. (XSD 쪽으로 들어가면 이 의미도 많이 퇴색하긴 하지만 그래도 좀 낫죠.)


샘플 코드 #1 XML

  1. <note>

  2. <to>Tove</to>

    <from>Jani</from>

    <heading>Reminder</heading>

    <body>Don`t forget me this weekend!</body>

    </note>


샘플 코드 #2 HTML

  1. <html>
    <head>

    <title>Reminder</title>

    </head>

  2. <body>

    <p>to - Tove</p>

  3. <p>from - Jani</p>

  4. <p>tit.........젠장!

샘플 코드 #1 을 보고 각 태그가 무슨 의미를 담고 있는지 모르는 사람이 있을까요?

자바 코딩을 하지 못한다라.. 그냥 '하지맙시다' 라고 눈빛을 보내는 것 보다 항상 더 우아한 방법이 있죠.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com


web.xml

  1. <web-app ...>
  2. <jsp-config>

  3. <jsp-property-group>

  4. <url-pattern>*.jsp</url-pattern>

  5. <scripting-invalid>true</scripting-invalid>

  6. <el-ignored>true</el-ignored>

  7. </jsp-property-group>

  8. </jsp-config>

  9. </web-app>

이것이 <scripting-invalid> 관련 설정의
유일한 방법입니다. JSP 2.0 초안엔 <@ page> 속성으로 뭐가 있었다는데 하여간 최종안에선 사라졌습니다.

아래는 EL을 사용하지 않는다는 설정입니다. 디폴트는 false죠. (기존에 EL 문법처럼 어딘가 코딩을 해놨다면 그게 문제를 일으킬 수도 있지 않겠어요?)


  1. <%@ page isElIgnored="true" %>

이렇게 페이지 별로 따로 설정도 가능합니다. 페이지 지시자는 DD의 설정을 오버라이드 합니다.


<url-pattern> 값 지정으로 전체가 아닌 개별적인 jsp 파일도 지정 가능하다.


Action 태그의 단점은 빈의 프로퍼티가 기본 자료형(+문자열)이 아닐 때 금새 드러나 버립니다. 만약 Foo 객체가 프로퍼티로 Bar 클래스 객체를 가지고 있을 경우, getProperty를 한다면 객체기 때문에 toString()이 호출되겠죠. Bar의 속성에 접근할 수 있는 방법이 없습니다. 그럼 다시 스크립팅의 세계로 가야하느냐.. 답은 EL 입니다.


간단한 한 줄 비교 코드 # 1

  1. Scriptlet: <%= foo.getBar().getName() %>
  2. ActionTag: <jsp:getProperty id="foo" property="bar" /> <!-- 이게 한계. bar.name 하면 에러! -->
  3. EL: ${foo.bar.name}


이렇게 보면 Scriptlet이나 EL이나 별 다른 점이 없어 보이지만, 만약 저 foo 객체가 바인딩되서 넘아온다면 코드가 어떻게 바뀔까요?


  1. Scriptlet: <%= ((foobar.Foo)request.getAttribute("Foo")).getBar().getName() %>
  2. EL: ${foo.bar.name}


Action 태그의 두 번째 단점은 JSP 내장 객체에 접근할 수 없다는 겁니다. 반면에 EL은 쉽게 접근 가능하죠.


간단한 한 줄 비교 코드 # 2

  1. Scriptlet: <%= application.getAttribute("name") %>

  2. ActionTag: <jsp:getProperty id="application" property="name" /> ERROR!

  3. EL: ${applicationScope.name}


사실 첫 번째 한 줄 비교 코드는 예가 좀 잘못되있는데, 그 이유는 EL 첫 자리에 오는 변수는 내장 객체 아니면 Scope에 바인딩 된 속성이기 때문입니다. 따라서 첫 번째 예제는 foo 객체가 어느 Scope이던 바인딩 되어 있다는 걸 전제로 해야합니다.

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
118 linux man 명령어 자세히 알아보자 [두번째] file 가을의 곰을... 2012.04.28 4278
117 linux man 명령어 자세히 알아보자 가을의 곰을... 2012.04.28 6299
116 Oracle XE 11g install error on re-install of second times 가을의 곰을... 2012.04.18 5621
115 리눅스마스터 1급 실기 리눅스마스터1급 2차 실기 기출문제 분석 가을의 곰을... 2012.04.08 8963
114 리눅스 커널 분석 file 가을의 곰을... 2012.04.07 5037
113 Gnuplot을 사용하여 웹 페이지에 데이터 표시하기 file 가을의 곰을... 2012.03.31 5305
112 Dark Room file 가을의 곰을... 2012.03.31 5797
111 ICS (아이스크림 샌드위치)빌드시 에러 가을의 곰을... 2012.03.25 7604
110 W3C의 오픈소스 HTML/CSS 에디터 file 가을의 곰을... 2012.03.24 6579
109 실제 타켓 디바이스에 안드로이드 포팅 (Android Porting On Real Target) file 가을의 곰을... 2012.03.22 7313
108 JSTL 기초, Part 2: core 분석 (한글) file 가을의 곰을... 2012.03.20 5089
107 JSTL 기초, Part 1: Expression Language (한글) file 가을의 곰을... 2012.03.20 4622
106 [정리] EL :: Function file 가을의 곰을... 2012.03.20 7600
» [정리] EL :: Basic file 가을의 곰을... 2012.03.20 7292
104 ubuntu에서 GTK 개발환경 꾸미기 가을의 곰을... 2012.03.19 11088
103 Ubuntu에 Oracle11g 설치 가을의 곰을... 2012.03.16 7358
102 ubuntu에서 나눔글꼴 설치 가을의 곰을... 2012.03.16 6031
101 gnu free document license 번역 출간 file 가을의 곰을... 2012.02.29 7370
100 GNU 자유 문서 사용 허가서 1.2판 file 가을의 곰을... 2012.02.29 5595
99 자주 쓰이는 정규식(regular expression) 유형 가을의 곰을... 2012.02.22 6120
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED