Daily coding

JSP : EL 태그 본문

Front-end/JSP

JSP : EL 태그

sunnnkim 2020. 1. 23. 18:06

EL / Core / JSTL

 

: jsp 파일에서 java형식의 코드를 대용할 수 있는 태그

  jsp 기본 문법을 보완한다

---------
EL tag : front end에서 자바 코드를 사용하지 않기 위해 사용하는 스크립트 언어 
Core tag : 제어문을 담당함 (사용을 위해서는 링크 걸어야 하며 jar파일필요)
---------

 

JSTL :  Java server page Standard Tag Library 

- 표준 액션태그로 처리하기 힘든 부분을 담당

 


> EL 문법

$ { scope.expr}

 

- 기본적으로 지정한 scope 내에 반드시 setAttribute를 설정하여 사용할 수 있다.

- getAttribute 함수를 사용하지 않고도 데이터를 꺼내 사용할 수 있다.

- scope : page, request, session, Application, pageContext .. (기본객체로 접근함)

- 기본 객체를 제공한다

 

 

 

< 사용법 >

<%
	// 애플릿
	String str = "hello";
	request.setAttribute("_str", str);	// request scope에 저장이 됨
	String s = (String) request.getAttribute("_str");
	out.println("s = " + s);
    // 또는
%>
s = <%= s %>


<!-- el태그 사용하기 : setAttribute에서 작성한 문자열(이름)을 가져온다 -->
s = ${ _str }	


 * EL 연산자들

 

* +, - 연산 : ${ 2+3 }

--> 5

 

* 삼항연산자 : ${ 3>2? 100 : 200 }

--> 100 

 

 

* empty : Object 동적할당 여부 확인하기 ( true / false 반환 )

 

data = ${ empty data }

  --> 없음true, 있음 false
data = ${ not empty data }

  --> 있음(true) 없음(false)

 

* 출력하기 ( = ) : 각 변수의 값 출력
a: ${ a } 
b: ${ b }
c: ${ c }

a+b: ${ a+b } = 5

* eq, == : 같을 때, boolean 출력
eq: ${a eq b } 
 --> false 
eq: ${a == b } 
 == 와 eq는 결과 동일 

* ne, != : 같지 않을 때, boolean 출력 
ne : ${a ne b }
ne : ${a != b }

* gt : >,  boolean 출력
gt: ${ a gt b }
gt: ${ a > b }

* lt : < ,  boolean 출력
lt: ${ a lt b }
gt: ${ a < b }

* le : <= , boolean 출력
le: ${ a le b } 


* ge : >= boolean 출력
ge: ${ a ge b } 


* 나누기  div /
div: ${ a div b }


* 나머지 mod %   
mod: ${ a mod b } 

* ! : not, boolean 출력
c: ${ !c }

* && ( AND ) , || ( OR ) : boolean 출력
${ a==10 && !c }


> 객체 사용하기

 

- EL 에서는 다양한 타입의 객체나 parameter를 꺼내서 사용할 수 있다.

- Collection에 속해있는 list나 map 등을 쉽게 출력할 수 있는 방법을 제공함

- 자바 클래스의 속한 메소드를 호출할 수 있다.

- 객체는 setAttribute로 설정한 scope와 데이터 이름(key)으로 접근한다

- parameter로 넘겨준 변수들은 param. 으로 받는다

  ex> $ { param.id }  = out.println( request.getParameter("id") ) ;

 

 

*** EX > id(String) 과 name (String)과 num (int) 데이터를 가지고 있는 Member클래스의 객체 mem 불러오기

<% request.setAttribute( "mem", mem ); %>

$ { mem.id } ----> mem 클래스의 변수명으로 데이터에 접근한다.

 

* 배열 출력하기

<%
// 애플릿으로 배열 선언 및 대입
String array[] = { "hello", "world" };
request.setAttribute("array", array);
%>

// 접근

${ array[0] } 
${ array[1] }

* list<String> 출력하기

<%
	List<String> list = new ArrayList<>();
	list.add("world");
	list.add("el");
	
	request.setAttribute("list", list);
%>

<!-- list도 무조건 배열로 사용한다 -->

${ list[0] }		// 0번째 인덱스로 접근

* list<object> 출력하기

<%
	// 객체 리스트를 el로 출력해보기
	
	// 리스트 데이터 일단 만들기
	List<MemberDto> memlist = new ArrayList<>();
	MemberDto m = new MemberDto();
	m.setMsg("첫번째 메세지");
	memlist.add(m);
	m = new MemberDto();
	m.setMsg("두번째 메세지");
	memlist.add(m);
	
	request.setAttribute("memlist", memlist);
	
    // 데이터 담기 끝
%>


<!-- 1번째 인텍스의 msg의 getter접근 -->

${ memlist[1].msg }

*** 위의 코드에서 list.get( index ) 의 특정 변수를 입력하면 그 변수의 getter가 실행되는 방식

 

* map<String, Object> 출력하기

<%
	//데이터 담기
	HashMap<String, String> map = new HashMap<>();
	map.put("apple","사과");
	map.put("grape","포도");
	
	request.setAttribute("map", map);
		
	
%>


<!-- map에서 접근하기 : map변수이름.key이름 -->
${ map.apple }


<!-- 또는 배열형태로 받아오기, 인덱스에 key값 적으면 되는데 문자열로 적을 것-->
${ map["apple"] }

** Map은 key이름으로 바로 접근하거나 (map.apple)

   [] 안에 인덱스 대신 키값을 넣어 접근한다

'Front-end > JSP' 카테고리의 다른 글

JSP : 이미지 첨부 후 미리보기  (0) 2020.02.13