Spring EL(Expression Language) ๊ณผ JSTL (Java Standard Tag Library)

2021. 11. 23. 16:32ใ†Spring

728x90

 

1. EL (Expression Language) 

: EL ํ‘œํ˜„์‹์€ {} ๋กœ ๋ฌถ๊ณ  $ ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. 

EL์€ ์ €์žฅ ๊ฐ์ฒด์˜ ์ถœ๋ ฅ์„ ๋‹จ์ˆœํ™” ํ•˜๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉ๋˜์–ด ์ €์žฅ ๊ฐ์ฒด๋ฅผ ์ถœ๋ ฅํ•  ๋•Œ <% %> ์ด๋Ÿฐ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. 

 

- EL ํŠน์ง• 

EL์€ ๊ธฐ๋ณธ์ ์œผ๋กœ 4๊ฐ€์ง€ Scope(page, request, session, application)์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ๊ฐ์ฒด์— ์ ‘๊ทผํ•˜์—ฌ ์ถœ๋ ฅ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. 

EL์—์„œ๋Š” ํ•ด๋‹น๊ฐ’์ด NULL์ด๊ฑฐ๋‚˜ ๊ณต๋ฐฑ์ผ ๊ฒฝ์šฐ์—๋Š” ์•„๋ฌด ๋‚ด์šฉ๋„ ํ‘œ์‹œํ•˜์ง€์•Š๊ณ  ์—๋Ÿฌ๋„ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. 

 

 

2. EL๊ณผ ์Šคํฌ๋ฆฌํŒ… ๋น„๊ต 

 

<%= request.getParameter("name") %> 

-> ${param.name} 

 

<%

  String value = (String) request.getAttribute("greet"); 

  out.println(value);

%>

-> ${greet} 

 

<%

   UserVO user = (UserVO) request.getAttribute("user");

   out.println(user);

%>

-> ${user}

 

<%

   UserVO user = (UserVO) request.getAttribute("user");

   out.println(user.getName());

%>

-> ${user.name}

 

<%

   UserVO user = (UserVO) session.getAttribute("user");

   out.println(user.getName());

%>

-> ${sessionScope.user.name}

 

2. JSTL(Java Standard Tag Library)

: JSTL์ด๋ž€ JSP ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. 

JSTL ์—ญ์‹œ JSP์—์„œ ์Šคํฌ๋ฆฝํŒ…<%%> ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋ฃจํ”„๋ฅผ ๋Œ๋ฆฌ๊ฑฐ๋‚˜ ์กฐ๊ฑด๋ฌธ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. 

JSTL์€ request, response, pageContext, application๊ณผ ๊ฐ™์€ JSP ๋‚ด์žฅ ๊ฐ์ฒด์— ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

-> JSTL์ด๋ž€ JSP์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ (๋ฐ˜๋ณต๊ณผ ์กฐ๊ฑด๋ฌธ, ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ํฌ๋งท, XML ์กฐ์ž‘, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•ก์„ธ์Šค)๋ฅผ ๊ตฌํ˜„ํ•ด ๋†“์€ Custom Tag Library ๋ชจ์Œ์ด๋‹ค. 

 

 

3. JSTL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ 

1๏ธโƒฃ ์ฝ”์–ด core 

"http://java.sun.com/jsp/jstl/core"

 ์ผ๋ฐ˜ ํ”„๋กœ๊ทธ๋žจ ์–ธ์–ด์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ณ€์ˆ˜ ์„ ์–ธ, ์กฐ๊ฑด/์ œ์–ด/๋ฐ˜๋ณต๋ฌธ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. 

 ์‚ฌ์šฉ ์˜ˆ :

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>   

 

2๏ธโƒฃ ํฌ๋งทํŒ… formatting 

"http://java.sun.com/jsp/jstl/fmt"

์ˆซ์ž, ๋‚ ์งœ, ์‹œ๊ฐ„์„ ํฌ๋งทํŒ… ํ•˜๋Š” ๊ธฐ๋Šฅ๊ณผ ๊ตญ์ œํ™”, ๋‹ค๊ตญ์–ด ์ง€์› ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. 

 

3๏ธโƒฃ ํ•จ์ˆ˜ function 

"http://java.sun.com/jsp/jstl/functions"

๋ฌธ์ž์—ด์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•œ๋‹ค. 

 

4๏ธโƒฃ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค database 

"http://java.sun.com/jsp/jstl/sql"

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ, ์ˆ˜์ •, ์‚ญ์ œ, ์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. (์ž˜ ์•ˆ์”€)

 

5๏ธโƒฃ xml ์ฒ˜๋ฆฌ  xml

"http://java.sun.com/jsp/jstl/xml"

xml ๋ฌธ์„œ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. 

 

 

4. JSTL Core ํƒœ๊ทธ 

Core ํƒœ๊ทธ๋Š” jstl ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ํƒœ๊ทธ์ด๋‹ค. 

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>   ๋กœ ์„ ์–ธํ•ด์•ผํ•œ๋‹ค. 

 

1๏ธโƒฃ ๋ณ€์ˆ˜ ์ง€์› 

set : jsp์—์„œ ์‚ฌ์šฉ๋  ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•œ๋‹ค. 

remove : ์„ค์ •ํ•œ ๋ณ€์ˆ˜๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค. 

 

2๏ธโƒฃ ํ๋ฆ„ ์ œ์–ด 

if : ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‚ด๋ถ€ ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. 

choose : ๋‹ค์ค‘ ์กฐ๊ฑด์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. 

forEach : ์ปฌ๋ ‰์…˜์ด๋‚˜ Map์˜ ๊ฐ ํ•ญ๋ชฉ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. 

forTokens : ๊ตฌ๋ถ„์ž๋กœ ๋ถ„๋ฆฌ๋œ ๊ฐ๊ฐ์˜ ํ† ํฐ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. 

 

3๏ธโƒฃ URL ์ฒ˜๋ฆฌ 

import : URL์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ์ž์›์˜ ๊ฒฐ๊ณผ๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค. 

redirect: ์ง€์ •ํ•œ ๊ฒฝ๋กœ๋ฅผ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ํ•œ๋‹ค. 

url : URL์„ ์žฌ์ž‘์„ฑํ•œ๋‹ค. 

 

4๏ธโƒฃ ๊ธฐํƒ€ ํƒœ๊ทธ 

catch : exception ์ฒ˜๋ฆฌ๋ฅผ ํ•œ๋‹ค. 

out: jspWriter์— ๋‚ด์šฉ์„ ์•Œ๋งž๊ฒŒ ์ฒ˜๋ฆฌํ•œ ํ›„ ์ถœ๋ ฅํ•œ๋‹ค. 

 

 

 

5. JSTL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ 

EL์€ ์ง€์›ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— JSTL๋งŒ ์„ค์น˜ํ•ด์ฃผ๋ฉด ๋œ๋‹ค .

 

https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl-api

 

pom.xml์— ์ถ”๊ฐ€ 

 

 

 

 

728x90