๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Java·๏ปฟServlet·๏ปฟJSP

JSP ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ์ด ์ •๋ฆฌ - ํ…œํ”Œ๋ฆฟ ๋ฐ์ดํ„ฐ, JSP ์ „์šฉ ํƒœ๊ทธ, ๋‚ด์žฅ ๊ฐ์ฒด

by Leica 2020. 2. 11.
๋ฐ˜์‘ํ˜•

JSP ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ์ด ์ •๋ฆฌ - ํ…œํ”Œ๋ฆฟ ๋ฐ์ดํ„ฐ, JSP ์ „์šฉ ํƒœ๊ทธ, ๋‚ด์žฅ ๊ฐ์ฒด

JSP ๊ตฌ์„ฑ ์š”์†Œ๋Š” ํฌ๊ฒŒ ํ…œํ”Œ๋ฆฟ ๋ฐ์ดํ„ฐ์™€ JSP ์ „์šฉ ํƒœ๊ทธ, JSP ๋‚ด์žฅ ๊ฐ์ฒด ์„ธ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

 

ํ…œํ”Œ๋ฆฟ ๋ฐ์ดํ„ฐ ํด๋ผ์ด์–ธํŠธ๋กœ ์ถœ๋ ฅ๋˜๋Š” ์ฝ˜ํ…์ธ 
HTML, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ, ์Šคํƒ€์ผ ์‹œํŠธ, JSON, XML, ์ผ๋ฐ˜ ํ…์ŠคํŠธ ๋“ฑ์ด ์—ฌ๊ธฐ์— ํ•ด๋‹นํ•œ๋‹ค.
JSP ์ „์šฉ ํƒœ๊ทธ ์„œ๋ธ”๋ฆฟ ์ƒ์„ฑ ์‹œ ํŠน์ • ์ž๋ฐ” ์ฝ”๋“œ๋กœ ๋ฐ”๋€Œ๋Š” ํƒœ๊ทธ
Directives(<%@ %>), Scriptlet Elements(<% %>), Declarations(<%! %>), Expressions(<%= %>), JSP Action(<jsp:...>)
JSP ๋‚ด์žฅ ๊ฐ์ฒด
JSP ๊ธฐ์ˆ  ์‚ฌ์–‘์„œ์— ์ •์˜๋œ ํ•„์ˆ˜์ ์ธ 9๊ฐœ ๊ฐ์ฒด
request, response, pageContext, session, application, config, out, page, exception
JSP์—์„œ ๋ณ„๋„ ์„ ์–ธ ์—†์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅ

 

ํ…œํ”Œ๋ฆฟ ๋ฐ์ดํ„ฐ

ํ…œํ”Œ๋ฆฟ ๋ฐ์ดํ„ฐ์˜ ์˜ˆ

ํ…œํ”Œ๋ฆฟ ๋ฐ์ดํ„ฐ๋Š” ํด๋ผ์ด์–ธํŠธ๋กœ ์ถœ๋ ฅ๋˜๋Š” ์ฝ˜ํ…์ธ ์ด๋‹ค.

ํ…œํ”Œ๋ฆฟ ๋ฐ์ดํ„ฐ๋Š” ์„œ๋ธ”๋ฆฟ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ถœ๋ ฅ๋ฌธ(ํ†ฐ์บฃ์˜ ๊ฒฝ์šฐ out.println)์œผ๋กœ ๋ฐ”๋€๋‹ค.

 

jsp๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑ๋œ ์ž๋ฐ” ์„œ๋ธ”๋ฆฟ ํŒŒ์ผ์˜ ์†Œ์Šค๋ฅผ ์—ด์–ด๋ณด๋ฉด ํ…œํ”Œ๋ฆฟ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž๋ฐ” ์ถœ๋ ฅ๋ฌธ์œผ๋กœ ๋ณ€ํ™˜๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

JSP ์ „์šฉ ํƒœ๊ทธ

Directives(์ง€์‹œ์ž)

<%@ ์ง€์‹œ์ž ์†์„ฑ="๊ฐ’" ์†์„ฑ="๊ฐ’" ... %>

JSP ์ง€์‹œ์ž๋Š” ์ง€์‹œ์ž, ์†์„ฑ์— ๋”ฐ๋ผ ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

JSP ์ง€์‹œ์ž์—๋Š” page, taglib, include๊ฐ€ ์žˆ๋‹ค.

 

page

page ์ง€์‹œ์ž๋Š” JSP ํŽ˜์ด์ง€์™€ ๊ด€๋ จ๋œ ์†์„ฑ์„ ์ •์˜ํ• ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํƒœ๊ทธ์ด๋‹ค.

 

page ์ง€์‹œ์ž์˜ ์˜ˆ

1
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
cs

 

์†์„ฑ ์„ค๋ช…
language ์Šคํฌ๋ฆฝํ‹€๋ฆฟ, ํ‘œํ˜„์‹, ์„ ์–ธ๋ถ€๋ฅผ ์ž‘์„ฑํ• ๋•Œ ์‚ฌ์šฉํ•  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ง€์ •ํ•œ๋‹ค.
์ฆ‰ JSP ํŽ˜์ด์ง€์— ์‚ฝ์—ก๋˜๋Š” ์ฝ”๋“œ์˜ ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด๋ฅผ ์ง€์ •ํ•œ๋‹ค.
JSP 2.2์—์„œ๋Š” 'java'๋งŒ ํ—ˆ์šฉ๋œ๋‹ค. (๋ชจ๋‘ ์†Œ๋ฌธ์ž๋กœ ์ž‘์„ฑ)
language ์†์„ฑ์„ ์ƒ๋žตํ•˜๋ฉด ๊ธฐ๋ณธ๊ฐ’์€ 'java'์ด๋‹ค.
contentType ์ถœ๋ ฅํ•  ๋ฐ์ดํ„ฐ์˜ MIME ํƒ€์ž…๊ณผ ๋ฌธ์ž ์ง‘ํ•ฉ์„ ์ง€์ •ํ•œ๋‹ค.
MIME ํƒ€์ž…์ด 'text/html'์ด๋ฉด ์ถœ๋ ฅํ•  ๋ฐ์ดํ„ฐ๊ฐ€ HTML์ด๋ผ๋Š” ์˜๋ฏธ์ด๋‹ค.
๋ฌธ์ž ์ง‘ํ•ฉ์ด 'charset=UTF-8'์ด๋ฉด ์ถœ๋ ฅํ•  ๋ฐ์ดํ„ฐ๋ฅผ UTF-8๋กœ ์ธ์ฝ”๋”ฉํ•œ๋‹ค.
๋ฌธ์ž ์ง‘ํ•ฉ์„ ์ƒ๋žตํ•˜๋ฉด ๊ธฐ๋ณธ๊ฐ’ 'ISO-8859-1'์„ ์‚ฌ์šฉํ•œ๋‹ค.
์ž๋ฐ”๋Š” ๋ฌธ์ž์—ด์„ ๋‹ค๋ฃฐ๋•Œ ์œ ๋‹ˆ์ฝ”๋“œ(UTF-16 BE)๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ• ๋•Œ ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ contentType ํ˜น์€ pageEncoding์— ์„ค์ •๋œ ๋ฌธ์ž ์ง‘ํ•ฉ์œผ๋กœ ์ธ์ฝ”๋”ฉํ•˜์—ฌ ์ถœ๋ ฅํ•œ๋‹ค.
pageEncoding ์ถœ๋ ฅํ•  ๋ฐ์ดํ„ฐ์˜ ๋ฌธ์ž ์ง‘ํ•ฉ์„ ์ง€์ •ํ•œ๋‹ค.
๊ธฐ๋ณธ๊ฐ’์€ 'ISO-8859-1'์ด๋‹ค.
contentType ์„ค์ •๊ฐ’๋ณด๋‹ค ์šฐ์„ ์‹œ๋œ๋‹ค.
์ด ์†์„ฑ์„ ์ƒ๋žตํ•˜๋ฉด contentType์— ์„ค์ •๋œ ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

page ์ง€์‹œ์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

 

contentType๊ณผ pageEncoding ์†์„ฑ์— ์ง€์ •๋œ ๊ฐ’์œผ๋กœ setContentType() ํ˜ธ์ถœ ์ฝ”๋“œ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

language ์†์„ฑ์€ JSP ์—”์ง„์— ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์—ญํ• ์ด๋ฉฐ ๋”ฐ๋กœ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜์ง„ ์•Š๋Š”๋‹ค.

 

taglib

taglib๋Š” ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ ์–ธํ• ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

taglib ์ง€์‹œ์ž์˜ ์˜ˆ : JSTL Core ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ ์–ธ

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

 

์†์„ฑ ์„ค๋ช…
uri ์‚ฌ์šฉํ•  ํƒœ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์‹๋ณ„์ž(URI)
prefix ํƒœ๊ทธ ์ ‘๋‘์‚ฌ

 

Scriptlet Elements(์Šคํฌ๋ฆฝํŠธ๋ฆฟ)

<% ์ž๋ฐ” ์ฝ”๋“œ %>

JSP์— ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์Šคํฌ๋ฆฝํŠธ๋ฆฟ ํƒœ๊ทธ <% %> ์•ˆ์— ์ž‘์„ฑํ•œ๋‹ค.

์Šคํฌ๋ฆฝํŠธ๋ฆฟ ํƒœ๊ทธ ์•ˆ์— ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ์„œ๋ธ”๋ฆฟ ํŒŒ์ผ์„ ๋งŒ๋“ค ๋•Œ ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌ๋œ๋‹ค.

 

JSP ์Šคํฌ๋ฆฝํŠธ๋ฆฟ ์ฝ”๋“œ์˜ ์˜ˆ

 

์ƒ์„ฑ๋œ JAVA ์ฝ”๋“œ

JSP์—์„œ ์ƒ์„ฑ๋œ ์ž๋ฐ” ์„œ๋ธ”๋ฆฟ ์†Œ์Šค์—์„œ _jspService() ์•ˆ์— ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌ๋œ๋‹ค.

 

Declarations(์„ ์–ธ๋ฌธ)

<%! %>

์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„(๋ณ€์ˆ˜, ๋ฉ”์†Œ๋“œ)๋ฅผ ์„ ์–ธํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

JSP ์„ ์–ธ๋ฌธ์˜ ์˜ˆ

 

JSP์—์„œ ์ž‘์„ฑ ์œ„์น˜๋Š” ์ƒ๊ด€ ์—†๋‹ค.

์„ ์–ธ๋ฌธ์€ _jspService() ๋ฉ”์†Œ๋“œ ์•ˆ์— ๋ณต์‚ฌ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ _jspService() ๋ฐ–์˜ ํด๋ž˜์Šค ๋ธ”๋ก ์•ˆ์— ๋ณต์‚ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์ž๋ฐ” ์„œ๋ธ”๋ฆฟ ์ฝ”๋“œ์˜ ์ถœ๋ ฅ๋ฌธ์œผ๋กœ ๋ณ€ํ™˜๋œ ์„ ์–ธ๋ฌธ์˜ ์˜ˆ

 

Expressions(ํ‘œํ˜„์‹)

<%= %>

๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ํ‘œํ˜„์‹ <%= %> ์•ˆ์—๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ž๋ฐ” ์ฝ”๋“œ๊ฐ€ ์™€์•ผํ•œ๋‹ค.

ํ‘œํ˜„์‹์€ ์ถœ๋ ฅ๋ฌธ์œผ๋กœ ๋งŒ๋“ค์–ด์ง€๋ฉฐ ์Šคํฌ๋ฆฝํŠธ๋ฆฟ๊ณผ ๊ฐ™์ด _jspService() ์•ˆ์— ์ˆœ์„œ๋Œ€๋กœ ๋ณต์‚ฌ๋œ๋‹ค.

 

JSP ํ‘œํ˜„์‹์˜ ์˜ˆ

 

์ž๋ฐ” ์„œ๋ธ”๋ฆฟ ์ฝ”๋“œ์˜ ์ถœ๋ ฅ๋ฌธ์œผ๋กœ ๋ณ€ํ™˜๋œ ํ‘œํ˜„์‹์˜ ์˜ˆ

์œ„์™€ ๊ฐ™์ด JSP ํ‘œํ˜„์‹ ์•ˆ์˜ ์ž๋ฐ” ์ฝ”๋“œ๊ฐ€ out.println() ์ถœ๋ ฅ๋ฌธ์˜ ์ธ์ž๊ฐ’์œผ๋กœ ๋ณต์‚ฌ๋œ๋‹ค.

๋”ฐ๋ผ์„œ JSP ํ‘œํ˜„์‹ ์•ˆ์—๋Š” out.println()์˜ ์•ˆ์ž๊ฐ’์œผ๋กœ ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ž๋ฐ” ์ฝ”๋“œ๊ฐ€ ์™€์•ผํ•œ๋‹ค.

 

JSP Action

JSP์—์„œ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ํƒœ๊ทธ๋“ค์˜ ์ง‘ํ•ฉ์„ 'JSP Action'์ด๋ผ ํ•œ๋‹ค.

๋‹ค์Œ์€ JSP 2.2์—์„œ ์ œ๊ณตํ•˜๋Š” Standard Action๋“ค์ด๋‹ค.

 

์•ก์…˜ ์„ค๋ช…
<jsp:useBean> ์ž๋ฐ” ์ธ์Šคํ„ด์Šค๋ฅผ ์ค€๋น„ํ•œ๋‹ค. ๋ณด๊ด€์†Œ์—์„œ ์ž๋ฐ” ์ธ์Šคํ„ด์Šค๋ฅผ ๊บผ๋‚ด๊ฑฐ๋‚˜ ์ž๋ฐ” ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด ๋ณด๊ด€์†Œ์— ์ €์žฅํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ž๋ฐ” ์ธ์Šคํ„ด์Šค๋ฅผ ์ž๋ฐ” ๋นˆ(Java Bean)์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
<jsp:setProperty> ์ž๋ฐ” ๋นˆ์˜ ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ์„ค์ •ํ•œ๋‹ค.
์ž๋ฐ” ๊ฐ์ฒด์˜ settet()๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
<jsp:getProperty> ์ž๋ฐ” ๋นˆ์˜ ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ๊บผ๋‚ธ๋‹ค.
์ž๋ฐ” ๊ฐ์ฒด์˜ getter()๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ฝ”๋‘๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
<jsp:include> ์ •์ (HTML, ํ…์ŠคํŠธ ํŒŒ์ผ ๋“ฑ) ๋˜๋Š” ๋™์ (์„œ๋ธ”๋ฆฟ/JSP) ์ž์›์„ includingํ•˜๋Š” ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
<jsp:forward> ํ˜„์žฌ ํŽ˜์ด์ง€์˜ ์‹คํ–‰์„ ๋ฉˆ์ถ”๊ณ  ๋‹ค๋ฅธ ์ •์ , ๋™์  ์ž์›์œผ๋กœ forwardingํ•˜๋Š” ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
<jsp:param> jsp:include, jsp:forard, jsp:params์˜ ์ž์‹ ํƒœ๊ทธ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
ServletRequest ๊ฐ์ฒด์— ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
<jsp:plugin> OBJECT ๋˜๋Š” EMBED HTML ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
<jsp:element> ์ž„์˜์˜ XML ํƒœ๊ทธ๋‚˜ HTML ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

 

JSP Implicit Objects(๋‚ด์žฅ ๊ฐ์ฒด)

request, response, pageContext, session, application, config, out, page, exception

JSP์—์„œ ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ• ๋•Œ ๋ณ„๋„์˜ ์„ ์–ธ ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฐ” ๊ฐ์ฒด์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด JSP์—์„œ ์„ ์–ธ ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” request ๊ฐ์ฒด๊ฐ€ ์ด์— ํ•ด๋‹นํ•œ๋‹ค.

 

JSP๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑ๋œ ์ž๋ฐ” ์„œ๋ธ”๋ฆฟ ์†Œ์Šค์˜ _jspService()๋ฅผ ๋ณด๋ฉด ํ•ด๋‹น ๊ฐ์ฒด๋“ค์˜ ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

_jspService()๋Š” javax.servlet.jsp.HttpJspPage ์ธํ„ฐํŽ˜์ด์Šค์— ์„ ์–ธ๋œ ๋ฉ”์†Œ๋“œ์ด๋‹ค.

JSP ๊ธฐ์ˆ  ์‚ฌ์–‘์„œ์—๋Š” JSP๋กœ ์„œ๋ธ”๋ฆฟ์„ ๋งŒ๋“ค ๋•Œ ๋ฐ˜๋“œ์‹œ ์ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋„๋ก ์ •์˜ํ•˜๊ณ  ์žˆ๋‹ค.

๋˜ํ•œ JSP ์ž‘์„ฑ ์‹œ ์„ ์–ธ ์—†์ด ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” 9๊ฐœ ๊ฐ์ฒด request, response, pageContext, session, application, config, out, page, exception ๋ฅผ ์ •์˜ํ•˜๊ณ  ์žˆ๋‹ค. (exception์€ JSP๊ฐ€ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ํŽ˜์ด์ง€๋กœ ์„ ์–ธ๋œ ๊ฒฝ์šฐ์—๋งŒ ์กด์žฌ)

 

์Šคํฌ๋ฆฝํŠธ๋ฆฟ <% %>๊ณผ ํ‘œํ˜„์‹ <%= %>์— ์ž‘์„ฑํ•œ ์ž๋ฐ” ์ฝ”๋“œ๋Š” _jspService๋กœ ๋ณต์‚ฌ๋  ๋•Œ JSP ๋‚ด์žฅ ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ•œ ๋ฌธ์žฅ ๋’ค์— ๋ณต์‚ฌ๋œ๋‹ค.

 

์ด๋Ÿฐ ์ด์œ ๋กœ ๋ณ„๋„ ์„ ์–ธ ์—†์ด JSP ๋‚ด์žฅ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€