๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐ŸŒ  ์ž๋ฐ” ์„œ๋ฒ„ ํŽ˜์ด์ง€ JSP

JSP - EL ํƒœ๊ทธ (Expression Language Tag)

by Meteora_ 2021. 3. 23.
728x90

1. EL ํƒœ๊ทธ (Expression Language Tag)

  - JSP์—์„œ ๊ฐ’์„ ํ‘œํ˜„ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์ด๋‹ค.

  - JSP์—์„œ์˜ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•์„ ๋ณด์™„ํ•˜๋Š” ์—ญํ™œ์„ ํ•œ๋‹ค.

 

2. ELํƒœ๊ทธ ๋ฌธ๋ฒ•

  - ${expr} 

  - expr์€ jsp์—์„œ ์‚ฌ์šฉ๋œ๋Š” ๋ณ€์ˆ˜๊ฐ€ ๋  ์ˆ˜ ์žˆ๊ณ  ์ˆ˜์‹์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. 

 

3. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์œ„์น˜

  - jstl๊ฐ™์€ ์ฝ”๋“œ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅ 

    <jsp:include page="/module/${skin.id}/header.jsp" flush="true" />

  - ํƒœ๊ทธ ์‚ฌ์ด์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ 

<b>${sessionScope.member.id}</b> ํ™˜์˜.

 

4. expr์—์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅ ํ•œ ๊ฒƒ๋“ค

  1) ์‚ฌ์šฉ๊ฐ€๋Šฅ ํ•œ ๋ฆฌ์ŠคํŠธ 

    A JSP์˜ ์Šค์ฝ”ํ”„(scope)์˜ ์†์„ฑ์„ ์‰ฝ๊ฒŒ ์ถœ๋ ฅ ํ• ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• ์ œ๊ณต

    B ์ง‘ํ•ฉ ๊ฐ์ฒด(Collection ๋“ฑ...)์— ์†ํ•ด์žˆ๋Š” ๊ฐ์ฒด ๋Œ€ํ•ด ์‰ฝ๊ฑฐ ์ถœ๋ ฅ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• ์ œ๊ณต

    C ์ˆ˜์น˜ ์—ฐ์‚ฐ, ๋น„๊ต ์—ฐ์‚ฐ์ž, ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž ์ œ๊ณต

    D ์ž๋ฐ” ํด๋ž˜์Šค ๋ฉ”์†Œ์Šค ํ˜ธ์ถœ ๊ธฐ๋Šฅ ์ œ๊ณต

    E ํ‘œํ˜„์–ธ์–ด๋งŒ์˜ ๊ธฐ๋ณธ ๊ฐ์ฒด ์ œ๊ณต

 

  1-A) JSP์˜ ์Šค์ฝ”ํ”„(scope)์˜ ์†์„ฑ์„ ์‰ฝ๊ฒŒ ์ถœ๋ ฅ ํ• ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• ์ œ๊ณต

    - requset Scope์—์„œ attribute๊ฐ’์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด 

      >java์ฝ”๋“œ์˜ ๊ฒฝ์šฐ

        request.getAttribute("name")

      >EL์˜ ๊ฒฝ์šฐ

        ${requestScope.name}

 

  1-B) ์ง‘ํ•ฉ ๊ฐ์ฒด(Collection ๋“ฑ...)์— ์†ํ•ด์žˆ๋Š” ๊ฐ์ฒด ๋Œ€ํ•ด ์‰ฝ๊ฑฐ ์ถœ๋ ฅ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• ์ œ๊ณต

     - ๋ฌธ๋ฒ• : ${<ํ‘œํ˜„1>.<ํ‘œํ˜„2>} ์—ฌ๊ธฐ์„œ ํ‘œํ˜„1์€ ๋ฆฌ์ŠคํŠธ์ผ๊ฒฝ์šฐ ํ‘œํ˜„2๋Š” ๋ฆฌ์ŠคํŠธ ๋ฒˆํ˜ธ๊ฐ€ ๋œ๋‹ค.

 

  1-C) ์ˆ˜์น˜ ์—ฐ์‚ฐ, ๊ด€๊ณ„์—ฐ์‚ฐ, ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž ์ œ๊ณต   

     (1) ์ˆ˜์น˜ ์—ฐ์‚ฐ

 + : ๋ง์…ˆ

 - : ๋บ„์…ˆ

 * : ๊ณฑ์…ˆ

 / ๋˜๋Š” div : ๋‚˜๋ˆ—์…ˆ

 % ๋˜๋Š” mod : ๋‚˜๋จธ์ง€

 ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฐ์ฒด์™€ ์ˆ˜์น˜ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๊ฐ์ฒด๋ฅผ ์ˆซ์ž ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ ํ›„ ์—ฐ์‚ฐ์ž๋ฅผ ์ˆ˜ํ–‰ : ${"10"+1} → ${10+1}

 ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๋Š” ๊ฐ์ฒด์™€ ์ˆ˜์น˜ ์—ฐ์‚ฐ์ž๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ : ${"์—ด"+1} → ์—๋Ÿฌ

 ์ˆ˜์น˜ ์—ฐ์‚ฐ์ž์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๊ฐ€ null์ด๋ฉด 0์œผ๋กœ ์ฒ˜๋ฆฌ : ${null + 1} → ${0+1}

 

 (2) ๋น„๊ต ์—ฐ์‚ฐ 

 == ๋˜๋Š” eq

 != ๋˜๋Š” ne

 < ๋˜๋Š” lt

 > ๋˜๋Š” gt

 <= ๋˜๋Š” le

 >= ๋˜๋Š” ge

 ๋ฌธ์ž์—ด ๋น„๊ต: ${str == '๊ฐ’'} str.compareTo("๊ฐ’") == 0 ๊ณผ ๋™์ผ

 

 (3) ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž

 && ๋˜๋Š” and

 || ๋˜๋Š” or

 ! ๋˜๋Š” not

 

  1-D) ์ž๋ฐ” ํด๋ž˜์Šค ๋ฉ”์†Œ์Šค ํ˜ธ์ถœ ๊ธฐ๋Šฅ ์ œ๊ณต

    - ํด๋ž˜์Šค์—์„œ getNameํ•จ์ˆ˜๋กœ ํ˜ธ์ถœ ํ•˜๋Š” ๊ฐ’์„ EL์œผ๋กœ ๊ฐ„ํ˜„ํ•˜๊ฒŒ ์‚ฌ์šฉํ• ์ˆ˜ ์ž†๋‹ค. 

    - ${student.name}

 

  1-E) ํ‘œํ˜„์–ธ์–ด๋งŒ์˜ ๊ธฐ๋ณธ ๊ฐ์ฒด ์ œ๊ณต

    - ๋‹ค์Œ ๊ธฐ๋ณธ ๊ฐ์ฒด๋Š” EL์—์„œ ๋ฐ”๋กœ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋“ค์ด๋‹ค.

 

 

์—ฐ์Šต ์˜ˆ์ œ (index.jsp) ->

<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="dto.MemberDto"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%-- 
		JSP : html, JavaScript, CSS, Java
		
		<%! ์„ ์–ธ๋ถ€%>
		<% ์ฝ”๋“œ๋ถ€ %>
		<%=๊ฐ’>
		" front end์—์„œ java๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•จ
		
		Expression Language
		ํ‘œํ˜„
		
		EL Tag -> value
		Core Tag -> ์ œ์–ด๋ฌธ, jar๋ฅผ ์ถ”๊ฐ€
					(JSTL -> Java Server page Standard Tag Language)
		
		Jsp Tag
		
		ํ˜•์‹
		$(๊ฐ’, ์—ฐ์‚ฐ์‹)
		
		
	 --%>
	 
	<%
		String str = "hello";
		request.setAttribute("_str", str);
		
	%>
	
	<%
		String s = (String)request.getAttribute("_str");
	%>
	
	<%
		out.println("s= " + s);
	%>
	
	<br><br>
	
	<h3>s = <%=s %></h3>
	
	<br><br>
	
	s=${_str}
	<br><br>
	
	<%='๊ฐ’' %>
	<br>
	
	${'๊ฐ’'}
	<br>
	${2+3}
	<br>
	${3>2?100:200}	
	<br><br>
	
	<%
		request.setAttribute("data", "์•ˆ๋…•ํ•˜์„ธ์š”");
	%>
	
	
	${data}
	<br><br>
	
	Object๊ฐ€ ํ• ๋‹น๋˜์–ด ์žˆ๋Š”์ง€?
	<%
	Object obj = new String("world");
	if(obj != null){
		
	}
		request.setAttribute("_obj", obj);
	%>
	<br>
	
	obj = ${not empty data} <!-- ๋น„์—ˆ๋ƒ? -->
	<br>
	<%--ํŒ๋ณ„์‹ (true/false), ์—ฐ์‚ฐ์‹(value) --%>
	1<9 : ${1<9}
	<br>
	1+3:${1+3}
	
	<%
		Integer a, b;
		a = 10;
		b = 3;
		
		boolean c = !true;
	%>
	
	<%
	request.setAttribute("a", a);
	request.setAttribute("b", b);
	request.setAttribute("c", c);
	%>
	
	a:${a }
	b:${b }
	c:${c }
	
	<%-- a+b:${a+b}
	<br>
	a<b:${a<b}
	<br>
	c:${!c}
	<br>
	${a==10&&!c}
	<br><br> --%>
	
	
	<%
	MemberDto dto = new MemberDto();
	dto.setMessage("Hello EL");
	%>
	
	message:<%=dto.getMessage() %>
	<br>
	<%-- message:${dto.getMessage()} --%> 
	
	<%
	request.setAttribute("_dto", dto);
	%>
	message:{_dto.message }
	
	<%
	String arr[]= {"hello","world"};
	
	request.setAttribute("_arr", arr);
	%>
	
	<%=arr[0]%>
	<br>
	${_arr[0]}
	<br><br>
	
	<%
		List<String> list = new ArrayList<>();
		list.add("world");
		list.add("hello");
		
		request.setAttribute("_list", list);
	%>
	
	<%=list.get(0) %>
	
	${_list[0]} <!-- ๋ฆฌ์ŠคํŠธ๋„ ๋ฐฐ์—ด๋กœ ์‚ฌ์šฉํ•œ๋‹ค. -->
 
</body>
</html>

์ถœ์ฒ˜: 

์ถœ์ฒ˜ : https://doitnow-man.tistory.com/90 [์ฆ๊ฑฐ์šด์ธ์ƒ (์‹คํŒจ ๋˜ํ•˜๋‚˜์˜ ์„ฑ๊ณต)]

๋Œ“๊ธ€