Daily coding
JSP : EL 태그 본문
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 |
---|