본문 바로가기
교재 실습/자바 웹 개발 워크북

53. EL 사용하기 (2)

by Jint 2022. 6. 25.

※ JSTL 설치

참고링크 : https://chrismare.tistory.com/entry/JSTL-%EA%B0%9C%EC%9A%94-%EB%B0%8F-%EC%84%A4%EC%B9%98-Core-%EC%82%AC%EC%9A%A9%EB%B2%95

 

JSTL 개요 및 설치, Core 사용법

JSTL ? JSP의 경우 HTML 태그와 같이 사용되어 전체적인 코드의 가독성이 떨어진다. 예를들어 html 태그 도중 <% %> 를 사용하여 html 코드의 흐름이 깨지며 코드를 보기에 난해해진다. 그래서 이러한 단

chrismare.tistory.com

참고링크를 참고하여 JSTL을 설치했다.

 

3. 리터럴 표현식

EL 블록 ("${}과 #{}")에서 사용할 수 있는 값은 문자열, 정수, 부동소수점, 참거짓(Boolean), 널(Null)이 가능하다. 다음은 EL 표현식과 그 결과이다.

<%//EL표현식 - 리터럴 표현식%>
문자열     : ${"test"}<br/>
문자열     : ${'test'}<br/>
정수       : ${20}<br/>
부동소수점 : ${3.14}<br/>
참거짓     : ${true}<br/>
null       : ${null}<br/>

앞의 EL 표현식을 JSP 페이지에 넣고 테스트해보면 다음과 같은 실행 결과를 얻는다(그림 1).

그림 1 (실행 결과)

마지막 ${null}의 실행 결과는 빈 문자열(" ") 이다.

 

4. 값 표현식

자바 객체, 배열, List, Map, ResourceBundle로부터 값을 꺼낼 때 사용하는 EL 표현식을 알아본다.

 

- 배열에서 값 꺼내기(그림 2)

<%
//EL표현식 - 배열
//배열에 값 준비
pageContext.setAttribute("scores", new int[] {90, 80, 70, 100}); //pageContext는 JSP 내장 객체 중 하나다.
%>
<!-- 배열에서 인덱스 2의 값 꺼내기 -->
${'배열에서 인덱스 2의 값 꺼내기 :'} ${scores[2]}

그림 2 (실행 결과)

 

- List 객체에서 값 꺼내기(그림 3)

<%
//EL표현식 - List
//List에 값 준비
List<String> nameList = new LinkedList<String>();
nameList.add("홍길동");
nameList.add("임꺽정");
nameList.add("일지매");
pageContext.setAttribute("nameList", nameList);
%>
<!-- 리스트 객체에서 인덱스 1의 값 꺼내기 -->
${'리스트 객체에서 인덱스 1의 값 꺼내기 :'} ${nameList[1]}

그림 3 (실행 결과)

 

- Map 객체에서 값 꺼내기(그림 4)

<%
//EL표현식 - Map
//Map에 값 준비
Map<String,String> map = new HashMap<String,String>();
map.put("s01", "홍길동");
map.put("s02", "임꺽정");
map.put("s03", "일지매");
pageContext.setAttribute("map", map);
%>
<!-- 맵 객체에서 키 s02로 저장된 값 꺼내기 -->
${'맵 객체에서 키 s02로 저장된 값 꺼내기 :'} ${map.s02}

그림 4 (실행 결과)

 

- 자바 객체에서 프로퍼티 값 꺼내기(그림 5)

자바 빈에 대한 간단한 설명 참고링크 : https://choitaetae.tistory.com/96

 

[JSP] 자바빈(JavaBean)이란?

자바빈(JavaBean) JSP에서 객체를 가져오기 위한 기법으로 데이터 전달 오브젝트 파일 DTO(Data Transfer Object)라고도 한다. 자바로 작성된 컴포넌트들 즉, 클래스(Class)를 일반적으로 말한다. JSP 프로그

choitaetae.tistory.com

<%
//EL표현식 - 자바빈
//자바 객체에 값 준비
pageContext.setAttribute("member", new Member().setNo(100)
                                               .setName("홍길동")
                                               .setEmail("hong@test.com"));
%>
<!-- 자바빈에서 프로퍼티 email의 값 꺼내기 -->
${'자바빈에서 프로퍼티 email의 값 꺼내기 :'} ${member.email}

그림 5 (실행 결과)

 

- ResourceBundle 객체에서 값 꺼내기(그림 6)

ResourceBundle에 대한 참고링크 : http://cris.joongbu.ac.kr/course/java/api/java/util/ResourceBundle.html#getBundle(java.lang.String) 

 

ResourceBundle (Java 2 Platform SE 5.0)

static ResourceBundle getBundle (String  baseName, Locale  locale, ClassLoader  loader)           지정된 기저명, 로케일, 클래스 로더를 사용해, 자원 번들을 취득합니다.

cris.joongbu.ac.kr

web05 프로젝트에 el.resourcebundle 패키지를 만들고 MyResourceBundle_ko_KR 클래스를 만든다.

package el.resourcebundle;
import java.util.ListResourceBundle;

public class MyResourceBundle_ko_KR extends ListResourceBundle {
	public Object[][] getContents() {
		return new Object[][] {
			{"OK", "확인"},
			{"Cancel", "취소"},
			{"Reset", "재설정"},
			{"Submit", "제출"}
		};
	}
}
<%
//EL표현식 - ResourceBundle
//ResourceBundle 객체 준비
//pageContext.setAttribute("myRB", ResourceBundle.getBundle("MyResourceBundle_ko_KR"));
MyResourceBundle_ko_KR myRB = new MyResourceBundle_ko_KR();
pageContext.setAttribute("myRB", myRB.getObject("OK"));
%>
<!-- 리소스번들 객체에서 값 꺼내기 -->
${'리소스번들 객체에서 값 꺼내기 :'} ${myRB}
<%//${myRB.OK}는 안됨..%>

그림 6 (실행 결과)

pageContext.setAttribute("myRB", ResourceBundle.getBundle("MyResourceBundle_ko_KR")); 방법으로 리소스번들 객체를 준비하면 "java.util.MissingResourceException: Can't find bundle for base name MyResourceBundle_ko_KR, locale ko_KR" 오류가 발생한다. 따라서 MyResourceBundle_ko_KR 클래스의 객체를 생성하여 getObject() 메서드를 사용했다.

 

참고도서 : https://freelec.co.kr/book/1674/

 

[열혈강의] 자바 웹 개발 워크북

[열혈강의] 자바 웹 개발 워크북

freelec.co.kr

'교재 실습 > 자바 웹 개발 워크북' 카테고리의 다른 글

55. EL 사용하기 (4)  (0) 2022.06.27
54. EL 사용하기 (3)  (0) 2022.06.26
52. EL 사용하기 (1)  (0) 2022.06.23
51. JSP 액션 태그의 사용 (2)  (0) 2022.06.22
50. JSP 액션 태그의 사용 (1)  (0) 2022.06.21

댓글