백엔드/JSP

JSP : EL

두개의 문 2023. 6. 20. 14:01
EL (Expression Language)

 
- EL의 표현식 : ${    }
- 값(데이터)을 웹 페이지에 표시하는데 사용하는 태그로, JSP 2.0부터 간단하게 사용할 수 있는 출력용 언어인 EL이 개발됨 
  → 프론트 쪽 태그와 쉽게 어울릴 수 있게 기획됨
     JSP 표현식 : <%=           %>  → ${        자바 영역으로 생각하자          } 

- 요청객체로부터 특정 값을 가져와 JSP 표현식을 사용해 출력하는 코드 
<%
        String id = request.getParameter("id");
%>
<%= id %>

- 위의 코드를 EL로 바꿔보자
${ param.id }

- 두 코드를 비교해보면,
❶ EL로 코드를 작성하는 것이 불필요한 코드 줄여줌 → JSP 페이지의 전체적인 코드 간결해짐
❷ 자바 코드가 줄어듦 → 디자인적 요소( HTML, CSS )와 자바 코드를 서로 구분하기 쉬워짐 

 

- 자바 코드를 몰라도 getter/setter 호출 및 약간의 연산 등도 가능
- EL을 이용한 출력 
   · EL을 이용하는 경우, 자동으로 getter를 호출함 
   · 멤버변수 : private 지정 후, getter / setter 속성함수로 접근
      → EL 표현식으로는 자동적으로 getter 호출되므로, private로 지정된 멤버변수를 속성함수없이 바로 접근 가능 
         ex ) getTno( ) 대신 ${ list[0].tno }로 작성할 수 있음
                물론 정식표현인 ${ list[0].getTno } 도 가능 
   · ${ } 내부에 표현식이 결과를 만들어 낼 수 있다면 언제든 사용 가능   
   ⇒ EL : JSP에서 간단한 표현식을 이용해서 데이터의 출력만을 담당하는 용도
 
 
 
예시를 통해 EL 표현식에 대해 알아보자.
 * JSP file 생성 시, 하단의 Advanced 클릭 → 폴더까지 생성 가능 

 
 
 
① el_01EL연습.jsp
  - 서블릿 / JSP에서 데이터 출력하는 방법 3가지
     : EL, 표현식, Scriptlet
    · Scriptlet : 내장객체인 out의 println( ) 메서드 이용해 출력 
                        → JSP 페이지가 생성하는 결과를 출력할때 사용되는 출력 스트림 

 
 
② el_02EL데이터형.jsp
 - EL에서는 5가지의 데이터형 제공 

데이터형  예시 설명
boolean    ${ true }
   ${ 3 > 2 }
   true와 false값을 가짐 
int     ${ 1000 }    0 ~ 9로 이루어진 정수를 표현, 음수 표현 시 - 가 붙음
double / float    ${ 3.14 }    실수를 표현하며, 소수점 사용 및 지수형 표현 가능
String    ${ 'Hello' }
   ${ "Hello" }
   문자열로 작은따옴표 또는 큰따옴표로 표현 가능
null    ${ null }  EL의 결과가 null인 경우, 최종적으로 출력하는 값은 "" (공백 문자열)

※ 일반적으로 자바에서 null은 가르키는 주소가 없음을 의미 → 콘솔창에 NPE(Null Pointer Exception) 예외 발생
    웹에서는 출력할 데이터가 없으면, 빈 공백으로 처리됨 

 

 
 
③ el_03연산자연습.jsp
 
 - 일부 연산은 평소에 사용하는 연산자 이외에 lt, gt와 같은 키워드를 통한 연산이 가능함 

연산자 구분 연산자 설명
산술 연산자  +   덧셈
-   뺄셈
*   곱셈
/ or div   나눗셈
% or mod   나머지 연산 
비교 연산자  == or eq   앞의 값이 뒤의 값과 같으면 true
!= or ne   앞의 값이 뒤의 값과 다르면 true
< or lt   앞의 값이 뒤의 값보다 작으면 true
> or gt   앞의 값이 뒤의 값보다 크면 true
<= or le   앞의 값이 뒤의 값보다 같거나 작으면 true
>= or ge   앞의 값이 뒤의 값보다 같거나 크면 true
empty 연산자 empty < 대상 >   < 대상 >이 null이거나 빈 문자열 또는 길이가 0인 배열이나 List, 비어있는 Map, Collection 객체인 경우, true를 리턴함 
비교 선택 연산자  < 수식 > ? <값1> : < 값2 >   앞의 <수식>이 true인 경우 < 값1 >, false인 경우 <값2>를 리턴함 

 
※ ${ } 표기를 문자열 그대로 출력하고 싶은 경우, $ 앞에 '\(역슬래시)'를 붙여주면 됨 

 

 
 


 ( null 여부 검사 내용 추가 )

 

 
 


④ el_04요청파라미터처리.jsp
 
  - EL에서 사용할 수 있는 내장 객체 중 요청 파라미터와 관련된 것만 살펴보자.

분류 내장 객체 설명 예시
요청 파라미터 param   HTTP 요청 파라미터 값 참조하는 Map 객체 ${ param.파라미터명 }
paramValues   HTTP 요청 파라미터를 배열로 참조하는 param과 다르게 배열이므로 속성명 뒤에 배열의 요소를 참조하는 것처럼 [ index ]를 붙여주어야 함  ${ paramValues.속성명[index] }
${ paramValues.name[3] }

 

 
 • el_04do.jsp 

- 향상된 for문 : 배열 또는 여러 원소를 포함한 자료형일 때 이용
   for ( 자료형  변수명  :  배열명 ) {

   } 

 

 

 
 
 ⑤ el_05logon.jsp 
 
  - 태그의 method를 따로 작성하지 않은 경우, GET 방식으로 처리됨 
 
  - <label> 태그 : 폼의 양식에 이름 붙이는 태그 
    · for 속성 : label의 for 속성 값과 양식의 id 값이 같으면 연결됨 
      → label 클릭 시, 연결된 양식에 입력할 수 있도록 하거나, 체크를 하거나 체크를 해지함 
           즉, input 태그의 type 속성에 맞게 처리됨 
 
 - <input> 태그의 id 속성과 name 속성 비교  
  ❶ id 속성 
     : page 영역에서 중복으로 사용 불가, 주로 JavaScript에서 다루기 위해 지정
  ❷ name 속성
     : page 영역에서 중복되어 사용 가능, action에 해당하는 페이지에 전달할 수 있는 파라미터로 사용 
 
 - &nbsp; : ‘Non-breaking Space’을 의미하는 HTML entity로, 줄바꿈을 일으키지 않는 공백을 의미함 
    → 띄어쓰기는 되지만, 자동으로 줄바꿈은 되지 않음 
        즉, 줄바꿈을 일으키지 않으면서 공백을 넣고 싶을 때 &nbsp;를 사용함 
 

 

→ '아이디' 클릭 시, 양식에 입력할 수 있도록 연결됨 

 
 
 • el_05logon_do.jsp
 ➊ 고전적 방식 : 요청객체에서 정보를 얻어와 표현식으로 출력
 ❷ EL 방식 : EL의 내장 객체인 param을 이용해 출력 

 

 

 
 
 
 ⑥-➊ el_06null.jsp 
 

 
 • el_06null.jsp를 실행시킨 경우
   : EL의 결과가 null인 경우, 최종적으로 출력하는 값은 "" (공백 문자열)

 
 • id에 입력하지 않을 경우 

 
 • id 값에 ‘중앙’을 입력한 경우 

 
 
 ⑥-❷ el_06값비교_자바.jsp

 

→ 500 내부 서버 오류 발생 
    : NPE 오류
     요청객체로부터 가져온 id 값이 null 상태인데, 값과 비교하려고 했으므로 예외 발생 
 
 
 • id에 비어있는 상태로 값은 존재 / null 상태 아님 

 
 • id 값에 “seoul” 입력해보자

※ 자바와 달리 EL식에서 '==' 연산자로 비교 : 주소 비교가 아닌 값 비교를 기본으로 함
 
 


 ⑥-❸ el_06null_에러처리.jsp
   : 500 에러 java.lang.nullpointerexception 논리 오류 
 - 사용자가 올바른 입력을 제공함에도 불구하고 잘못된 출력을 생성 할 때 Java 로직 오류가 발생
 - 값을 가져와서 사용하기 전에, 그 값이 null 값인지 먼저 확인 후 사용하자!
     null은 값이 아니라 상태!
  - View에는 비즈니스 로직 포함시키지 말자!

 
 • 요청 파라미터 id가 null인 경우
    param으로 처리할 경우, 빈 공백이 출력되거나 값이 출력됨 ( null 값 나오지 않음 )

 


• id에 비어있는 상태로 값은 존재 / null 상태 아님 


 
 • id 값에 “seoul” 입력해보자

 
 
 
  ⑦ el_07간단계산기.jsp
 

 
 • el_07간단계산기_결과.jsp

 

 

 

'백엔드 > JSP' 카테고리의 다른 글

JSP : JSTL  (0) 2023.06.19
웹 프로그래밍의 시작 (3)  (0) 2023.06.18
웹 프로그래밍의 시작 (2)  (0) 2023.06.16
웹 프로그래밍의 시작 (1)  (0) 2023.06.14
JSP Servlet 기초 (8) : Session  (0) 2023.06.13