관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

표현 언어와 JSTL 1 - 표현 언어로 표현 단순화하기 본문

웹 · 앱 개발/JSP & Servlet

표현 언어와 JSTL 1 - 표현 언어로 표현 단순화하기

huenuri 2024. 11. 29. 06:46

오늘부터 JSP/Servlet 공부를 다시 시작하려고 한다. 지난 8월에 JSP 공부를 열흘 정도 했었는데 절반 정도 남겨놓고 다른 과목으로 학습을 진행했었다. 이번에는 나머지 공부를 모두 끝낼 생각이다.

수업 영상도 있지만 책으로만 할지 그래도 수업과 함께 진행할지 고민이 된다. 금방 30분이 넘도록 수업 영상을 돌려보며 공부할만한지 살펴보았는데 별로 도움이 되는 수업이 아닌 것 같았다. 그리고 이 선생님이 가르치시는 건 솔직히 머릿속에 잘 와닿지도 않았다. 그냥 책을 보고 혼자서 공부하는 것이 훨씬 더 효율적일 것 같다.

 

조금 전에 오랜만에 이클립스를 켜니 어떻게 하는지 잊어버려 환경 설정도 바꿔주며 공부할 준비를 모두 마쳤다. 전에는 검은색 테마가 보기에 편했는데 언제부터인지 검은 바탕으로 보는 것이 눈이 훨씬 피로하며 잘 보이지도 않는다는 걸 알게 되었다. 요즘에는 거의 대부분 밝은 바탕으로 바꾸는 편이다.

이제 공부를 시작해보자.


 

 

 

 

 

 

표현 언어로 표현 단순화하기

표현 언어(EL)는 값(데이터)을 웹 페이지에 표시하는데 사용되는 태그이다. 

EL(Expression Language)?
JSP 출력에 대한 부분을 쉽게 하기 위해 개발한 태그이다.

 

JSP에서 출력을 위해서 표현식을 사용한다. JSP에서는 스크립트 요소를 제공해 주는데, 그중에 표현식 스크립트 요소는 계산식, 함수 호출 결과를 문자열 형태로 출력해주는 역할을 한다. 

 

 

표현식은 자바에 익숙한 초보 JSP 개발자들이 기초적인 웹 애플리케이션을 학습하면서 사용한 것이라면 앞으로 다룰 예제들은 표현식 대신 표현 언어를 사용한다. 요즘은 순수 JSP로만 웹사이트를 개발하지 않고 스프링과 같은 프레임워크로 웹 개발을 하는데, 이때도 표현 언어를 사용한다. 


 

 

 

[직접 해보기] 표현 언어로 간단한 메시지를 출력하는 JSP 페이지

 

 

 

출력이 잘 되었다. 세 달만에 다시 JSP 공부를 하려니 실행하는 것도 잊어버려서 한참 책을 들여다보며 확인해보았다. 

이 예제에서는 표현을 위한 방법 세 가지(표현 언어, 표현식, 스크립트릿)을 설명하기 위해 'Hello'라는 문지열을 사용했다. 문자열 외에 표현 언어에서 사용 가능한 데이터 타입으로는 정수형, 실수형, 논리형, null 등이 있다.

 

 

 

다음 예제에서는 표현 언어에서 사용 가능한 데이터 타입들을 사용한 예이다.

 

[직접 해보기] 표현언어에서 사용 가능한 데이터

 

 

 

표현 언어가 자바와는 다른 특징 중 하나는 null은 결과 화면에 공백으로 처리되는 점이다. 표현 언어는 식을 계산해서 그 결과를 출력하는 것을 목적으로 한다. 

프로그래밍 언어에서는 문장 단위로 프로그램을 기술하는데 한 문장을 식이라고 표현한다. EL을 사용한 문장을 EL 식이라고 한다. 표현 언어는 EL 식으로 접근한 데이터를 조작 및 비교할 여러 연산자를 표현하고 있다. 다음은 표현 언어 연산자 목록이다.

 

 

 

 

관계형 연산자는 숫자 또는 텍스트 데이터를 비교할 수 있도록 한다. 비교한 결과는 부울 값(true or false)으로 리턴된다. 같은지를 물어보기 위한 연산자는 ==이지만 eq를 사용할 수도 있다.

${3 == 3}

${3 eq 3}

 

 

empty 연산자는 검사할 객체가 텅 빈 객체인지를 검사하기 위해서 사용하며 표현식을 인자로 취한다.

${empty input}

 

 

일반적으로 객체에 저장할 값이 없을 경우 null을 저장한다. 다음을 문자열을 저장하기 위해 String 클래스로 선언한 레퍼런스 변수 input에 null을 저장한 예이다.

String input = null;

 

 

null이 저장된 상태에서 그 객체를 사용하게 되면 예외가 발생하기 때문에 객체를 사용하기 전에 null이 저장되어 있는지를 물어보고 사용하는 것이 일반적이다. 이럴 때 사용하는 연산자가 empty이다. ${empty input}과 같이 표현하면 결과값은 true로 반환된다.

EL 식 안에 여러 연산자를 함께 사용하면 왼쪽부터 오른쪽으로 순서대로 처리되지만 우선순위가 다른 연산자가 삮여 있으면 다음 표에 의해서 연산하는 순서가 정해진다.

 


 

 

[직접 해보기] 표현 언어의 연산자 사용하기

 

 

여기 빨간줄이 떠서 이 문제를 해결해보려고 했으나 1시간 넘게 문제를 붙들고 있어도 해결할 수 없어 그냥 넘어가기로 했다. 진짜 공부해야 할 것을 하지 못하고 시간만 낭비했다.

 

 

 

책에는 \를 앞에 붙이면 표현 언어가 단순 문자열로 인식되어 EL 식이 그래도 출력된다고 했지만 이처럼 제거해도 문제없이 출력되었다.


 

 

 

 

학습을 마치고

오늘 이렇게 JSP 수업을 오랜만에 시작해서 첫 번째 공부를 마쳤다. 세 달만에 하려니 다 잊어버렸고 감도 떨어졌다. 하지만 두 시간 넘게 공부하는 사이 어느새 JSP가 하고 싶어지고 알고 싶은 마음이다.

평소에는 새벽 2시에 일어나는데 요즘 시계를 맞추지 않았더니 잠을 더 많이 자는 것 같아 내일부터는 다시 루틴일지도 잘 쓰고 자기관리를 철저히 하기로 했다. 며칠 몸이 안좋아서 여유를 부렸으니 다시 허리띠를 졸라매고 앞으로 나아갈 수 있게 되었다.

 

이 학습을 통해 EL 표현식에 대해 어느 정도 배울 수 있었다. 강의는 듣지 않길 잘한 것 같다.