๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’Ž/๋ถ€์ŠคํŠธ์ฝ”์Šค

[๋ถ€์ŠคํŠธ์ฝ”์Šค] ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ BE: JSP๋ž€? JSP ๋ผ์ดํ”„์‚ฌ์ดํด

by dar0m! 2020. 3. 20.

1) JSP

 

 

[LECTURE] 1) JSP๋ž€? : edwith

๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์˜ ASP(Active Server Pages)์™€ ๊ฐ™์€ ์Šคํฌ๋ฆฝํŠธ ํ˜•ํƒœ์˜ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•์ด ์ธ๊ธฐ๋ฅผ ์–ป๊ฒŒ ๋˜๋ฉด์„œ, ์ž๋ฐ” ์ง„์˜์—์„œ๋„ ๋Œ€ํ•ญํ•˜๊ธฐ ์œ„ํ•ด์„œ JSP๋ฅผ ๋ฐœํ‘œํ•˜... - ๋ถ€์ŠคํŠธ์ฝ”์Šค

www.edwith.org

ํ•™์Šต ๋ชฉํ‘œ

  1. jsp๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•œ๋‹ค. 
  2. jsp์˜ ๊ฐ„๋‹จํ•œ ์‚ฌ์šฉ๋ฒ•์„ ์•Œ์•„๋ณธ๋‹ค. 

ํ•ต์‹ฌ ๊ฐœ๋…

  • jsp (java server page)

JSP์˜ ์œ„์น˜๋Š” WebContent ์ž…๋‹ˆ๋‹ค. ์ด์ „์— ์‹ค์Šต์„ ์ง„ํ–‰ํ–ˆ๋˜ firstweb์˜ WebContent์•„๋ž˜์— jspํŒŒ์ผ์„ ๋งŒ๋“ค์–ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Html css, js ํŒŒ์ผ ๋ชจ๋‘ ์ด ์œ„์น˜์— ๋งŒ๋“ค์–ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•ด์„œ์‹คํ–‰์„ ์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ๊ณ  ๋ฐ”๋กœ WebContet๋””๋ ‰ํ† ๋ฆฌ ํ•˜์œ„์— ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ค˜๋„ ๋ฉ๋‹ˆ๋‹ค. 

์ด๋ฒˆ์—๋Š” ๋ฐ”๋กœ WebContetn์•„๋ž˜์— sum10.jsp๋ผ๋Š” ํŒŒ์ผ์„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

sum10.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>sum10</title>
</head>
<body>
 
<% 
    int total = 0;
    for(int i = 1; i <= 10; i++){
        total = total + i;
    }
%>
 
1๋ถ€ํ„ฐ 10๊นŒ์ง€์˜ ํ•ฉ : <%=total %>
 
</body>
</html>
cs

 

JSP ์Šคํฌ๋ฆฝํŠธ ๊ตฌ์„ฑ์š”์†Œ

<%@ page %> // ์ง€์‹œ์ž
<% %>       // scriptlet
<%= %>      // ํ‘œํ˜„์‹
<!% %>      // ์„ ์–ธ์‹
<%-- --%>   // ์ฃผ์„

๊ฐ™์€ ๊ธฐํ˜ธ๋“ค์ด ๋ณด์ด๋Š”๋ฐ ์ด๋Ÿฐ ๊ธฐํ˜ธ์—์— ๋”ฐ๋ผ์„œ JSP๊ฐ€ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ฐ”๋€” ๋•Œ ๊ฒฐ์ •ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. jsp๋Š” jsp ์ž์ฒด๊ฐ€ ๋™์ž‘ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๋ชจ๋“  jsp๋Š” ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ฐ”๋€Œ์–ด์„œ ๋™์ž‘ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋Ÿฐ ๊ธฐํ˜ธ๋“ค์€ JSP๊ฐ€ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ฐ”๋€” ๋•Œ ์–ด๋–ป๊ฒŒ ๋ฐ”๋€Œ์–ด์•ผ๋ ์ง€ ์•Œ๋ ค์ฃผ๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

์ง€์‹œ์ž <%@ %>

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

ํŠนํžˆ ์ด ๋ถ€๋ถ„์€ ์ง€์‹œ์ž๋กœ page ์ง€์‹œ์ž๋ผ๊ณ  ํ•˜๋ฉฐ language, contentType ๋“ฑ ์›น ์ปจํ…Œ์ด๋„ˆ๊ฐ€ JSPํŽ˜์ด์ง€๋ฅผ ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค๋กœ ๋ณ€ํ™˜ํ•  ๋•Œ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๊ธฐ์ˆ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • jsp๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ์ž๋ฐ” ์™ธ์˜ ๋‹ค๋ฅธ ์–ธ์–ด๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณค ํ•˜๋‚˜  jsp์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์–ธ์–ด๋Š” ์ž๋ฐ” ์–ธ์–ด ๋ฟ์ด๋‹ค. 
  • ์„œ๋ธ”๋ฆฟ์ž‘์„ฑํ•  ๋•Œ ์ฒ˜๋Ÿผ setContentType ์œ„์น˜์— ์ด ๋‚ด์šฉ์ด ๋“ค์–ด๊ฐ„๋‹ค ์ถœ๋ ฅ๋˜๋Š” ๊ฒฐ๊ณผ๋Š” UTF-8๋ฌธ์ž์…‹์œผ๋กœ๋œ html๋ฌธ์„œ์ž„์„ ์•Œ๋ ค์คŒ.
  • jsp ํŒŒ์ผ ์ž์ฒด๊ฐ€ utf-8๋กœ ๋˜์–ด์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ ค์คŒ.

์ธ์ฝ”๋”ฉ ๋ถ€๋ถ„์ด ๋งž์ง€ ์•Š์œผ๋ฉด ํ•œ๊ธ€์ด ๊นจ์ ธ์„œ ๋‚˜์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 
์ด๋Ÿฐ ์ง€์‹œ๋ฌธ์„ ์ฝ๋Š” ๊ฒƒ์€ JSP๋ฅผ ์‹คํ–‰ํ•˜๋Š” WAS์ด๋ฉฐ, ์ง€์‹œ๋ฌธ ๋‹ค์Œ์—๋Š” ๋ณดํ†ต html์ฝ”๋“œ๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค.

์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์€ ๋ธ”๋กœ๊ทธ๐Ÿ‘‡

 

์ง€์‹œ์ž(directive) ๋ž€?

์ถœ์ฒ˜ : http://studyto.cafe24.com/teach/jsp/jsp_directive.html ์ง€์‹œ์ž(JSP Directive) - ์›น ์ปจํ…Œ์ด๋„ˆ๊ฐ€ JSPํŽ˜์ด์ง€๋ฅผ ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค๋กœ ๋ณ€ํ™˜ํ•  ๋•Œ ํ•„์š”ํ•œ ์ •๋ณด๊ธฐ์ˆ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. - jsp ์ปจํ…Œ์ด๋„ˆ์— ํ•ด๋‹น ํŽ˜..

thositeom.tistory.com

 

Scriptlet <% %>

<% 
    int total = 0;
    for(int i = 1; i <= 10; i++){
        total = total + i;
    }
%>

JSP๋ฅผ ์“ฐ๋Š” ์ด์œ ๋Š” html์•ˆ์— ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œ์ผœ์ฃผ๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์•ˆ์—๋Š” ์ž๋ฐ”์ฝ”๋“œ๊ฐ€ ๋“ค์–ด๊ฐ€๊ณ  Scriptlet ์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ์ž๋ฐ”์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

 

ํ‘œํ˜„์‹ <%=  %>

<%=total %>

๋ณ€์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋Š”<%= %>์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๋‹น ๊ธฐํ˜ธ๊ฐ€ out.print()์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์• ๋“ค์„ ํ‘œํ˜„์‹์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

 

JSP์˜ ๊ฐ€์žฅ ํ•ต์‹ฌ

JSP๋Š” ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ฐ”๋€” ๊ฑฐ๋‹ค.

JSP๊ฐ€ html ํ•˜๊ณ  ๋น„์Šทํ•˜๊ฒŒ ์ƒ๊ฒผ๋‹ค๊ณ  ํ•ด์„œ html์ฒ˜๋Ÿผ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ•ญ์ƒ 'JSP๋Š” ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ฐ”๋€” ๊ฑฐ๊ณ  ๋ฐ”๋€ ์„œ๋ธ”๋ฆฟ์ด ์‹คํ–‰๋œ๋‹ค'๋ผ๊ณ  ์ƒ๊ฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ฐ”๋€ ํ›„์—๋Š” ์„œ๋ธ”๋ฆฟ์˜ ๋ผ์ดํ”„์‚ฌ์ดํด๊ณผ ๋˜‘๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์‹คํ–‰์ด ๋ฉ๋‹ˆ๋‹ค.

 

2) JSP ๋ผ์ดํ”„ ์‚ฌ์ดํด

 

[LECTURE] 2) JSP ๋ผ์ดํ”„์‹ธ์ดํด : edwith

๋“ค์–ด๊ฐ€๊ธฐ ์ „์— WAS๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ๋ถ€ํ„ฐ JSP์— ๋Œ€ํ•œ ์š”์ฒญ์„ ๋ฐ›๊ฒŒ ๋˜๋ฉด, JSP์ฝ”๋“œ๋ฅผ ์„œ๋ธ”๋ฆฟ ์†Œ์Šค์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ์ปดํŒŒ์ผ ํ•˜์—ฌ ์‹คํ–‰๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์„œ๋ธ”๋ฆฟ์œผ๋กœ ์ปดํŒŒ์ผ๋˜์–ด ์‹คํ–‰๋  ๋•Œ ... - ๋ถ€์ŠคํŠธ์ฝ”์Šค

www.edwith.org

ํ•™์Šต ๋ชฉํ‘œ

  1. jsp์˜ ๋ผ์ดํ”„ ์‚ฌ์ดํด์„ ์ดํ•ดํ•œ๋‹ค. 
  2. jsp๋ฅผ ์ด์šฉํ•ด์„œ init, destroy ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

ํ•ต์‹ฌ ๊ฐœ๋…

  • jsp๋ผ์ดํ”„ ์‚ฌ์ดํด

WAS๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ๋ถ€ํ„ฐ JSP์— ๋Œ€ํ•œ ์š”์ฒญ์„ ๋ฐ›๊ฒŒ ๋˜๋ฉด, JSP์ฝ”๋“œ๋ฅผ ์„œ๋ธ”๋ฆฟ ์†Œ์Šค์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ์ปดํŒŒ์ผ ํ•˜์—ฌ ์‹คํ–‰๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์„œ๋ธ”๋ฆฟ์œผ๋กœ ์ปดํŒŒ์ผ๋˜์–ด ์‹คํ–‰๋  ๋•Œ ์ƒํ™ฉ์— ๋”ฐ๋ผ์„œ ์–ด๋–ค ๋ฉ”์†Œ๋“œ๋“ค์ด ์‹คํ–‰๋˜๋Š”์ง€ ์ž˜ ์•Œ์•„์•ผ, JSP๋ฅผ ์•Œ๋งž๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

JSP์ฝ”๋“œ๊ฐ€ ๋ณ€ํ™˜๋  ๋•Œ.

sum10.jsp๊ฐ€ ์‹คํ–‰๋  ๋•Œ ๋ฒŒ์–ด์ง€๋Š” ์ผ

  • ์ดํด๋ฆฝ์Šค ์›Œํฌ์ŠคํŽ˜์ด์Šค ์•„๋ž˜์˜ .metadata ํด๋”์— sum10_jsp.java ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค.
  • ํ•ด๋‹น ํŒŒ์ผ์˜ _jspService() ๋ฉ”์†Œ๋“œ ์•ˆ์— ์‚ดํŽด ๋ณด๋ฉด jspํŒŒ์ผ์˜ ๋‚ด์šฉ์ด ๋ณ€ํ™˜๋˜์„œ ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • sum10_jsp.java๋Š” ์„œ๋ธ”๋ฆฟ ์†Œ์Šค๋กœ ์ž๋™์œผ๋กœ ์ปดํŒŒ์ผ ๋˜๋ฉด์„œ ์‹คํ–‰๋˜์„œ ๊ทธ ๊ฒฐ๊ณผ๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์— ๋ณด์—ฌ์ง„๋‹ค.
    sum10.jsp๊ฐ€ ์‹คํ–‰์ด ๋  ๋•Œ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ผ๋“ค์ด ๋ฒŒ์–ด์ง€๋Š”๋ฐ

์ตœ์ดˆ๋กœ ์‹คํ–‰๋  ๋•Œ ํ†ฐ์บฃ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ†ฐ์บฃ์ด JSP๋ฅผ ํŠน๋ณ„ํ•œ ํ˜•ํƒœ์˜ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ์†Œ์Šค๊ฐ€ ๋ณ€ํ™˜์ด ๋˜๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ๋ฐ”๋€Œ๋Š”์ง€ ํ•œ ๋ฒˆ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผํƒ์ƒ‰๊ธฐ์—์„œ workspace๋ฅผ ์ฐพ์•„๊ฐ€๋ด…๋‹ˆ๋‹ค. ๋ณดํ†ต ์‚ฌ์šฉ์ž ์•„๋ž˜์— ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

C:\Users\์‚ฌ์šฉ์ž\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps

์œ„์˜ ๊ฒฝ๋กœ ์œ„์น˜๋กœ ๊ฐ€๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์—ฌํƒœ๊นŒ์ง€ ๋งŒ๋“ค์—ˆ๋˜ ์‹ค์Šต๋“ค์ด ๋ณด์ด๊ณ  JSPํŒŒ์ผ์„ ๋งŒ๋“  ๊ณณ์œผ๋กœ ์ด๋™ํ•ด๋ณด๋ฉด sum10.jsp๊ฐ€ ๋ณด์ž…๋‹ˆ๋‹ค.

C:\Users\์‚ฌ์šฉ์ž\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\firstweb\org\apache\jsp

์ด jspํŒŒ์ผ์ด ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋ณ€ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ๊ทธ ๋ณ€ํ•œ ํŒŒ์ผ์€ temp0/work ์•„๋ž˜์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ํŒŒ์ผ์œ„์น˜๋Š” WAS์˜ ์•ฝ์†์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ํ•˜์œ„์— work/Catalina/localhost ๋กœ ๋“ค์–ด๊ฐ€๋ณด๋ฉด ๋˜ ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“ค์—ˆ์—ˆ๋˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์ด ๋‹ค ํ•˜๋‚˜์”ฉ ๋“ค์–ด์žˆ๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. firstweb์„ ์—ด์–ด์„œ org/apache/jsp ๋””๋ ‰ํ† ๋ฆฌ์— ๋“ค์–ด๊ฐ€๋ดค๋”๋‹ˆ ์šฐ๋ฆฌ๊ฐ€๋งŒ๋“ค์—ˆ๋˜ JSPํŒŒ์ผ์ด ์ด๋Ÿฐ์‹์œผ๋กœ ๋ฐ”๋€Œ์–ด์„œ ๋ณด์ด๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

WebContent/sum10_jsp.java

public void _jspInit() {
  }

  public void _jspDestroy() {
  }

  public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
      throws java.io.IOException, javax.servlet.ServletException {

    .....

    try {
      .....

      out.write("\n");
      out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n");
      out.write("<html>\n");
      out.write("<head>\n");
      out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n");
      out.write("<title>sum10</title>\n");
      out.write("</head>\n");
      out.write("<body>\n");
      out.write("\n");

	int total = 0;
	for(int i = 1; i <= 10; i++){
		total = total + i;
	}

      out.write("\n");
      out.write("\n");
      out.write("1๋ถ€ํ„ฐ 10๊นŒ์ง€์˜ ํ•ฉ : ");
      out.print(total );
      out.write("\n");
      out.write("\n");
      out.write("</body>\n");
      out.write("</html>");
    } catch (java.lang.Throwable t) {
      .....
      }
    } finally {
      _jspxFactory.releasePageContext(_jspx_page_context);
    }
  }
 

์‹ค์ œ๋กœ JSP์ฝ”๋“œ๊ฐ€ ์ž๋ฐ”๋กœ ๋ฐ”๋€ ๋ชจ์Šต์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

๋ˆˆ์—ฌ๊ฒจ๋ณผ ๋ถ€๋ถ„์€ public void _jspService()์ž…๋‹ˆ๋‹ค. 

์„œ๋ธ”๋ฆฟ ๋ฐฐ์šธ ๋•Œ์™€ ๊ฐ™์ด init, service, destory ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. WAS ์•ฝ์†์—๋”ฐ๋ผ ์ด๋ฆ„์ด ์กฐ๊ธˆ ๋‹ฌ๋ผ์ ธ์žˆ์„ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ๊ฐ™์€ ์ผ์„ ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋“ค์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ์ฝ”๋“œ๋“ค์€ ๊ธฐ๋ณธ์ ์œผ๋กœ Service๋ผ๋Š” ๋ฉ”์„œ๋“œ ์•ˆ์— ๊ทธ๋Œ€๋กœ ๋งŒ๋“ค์–ด์ง€๊ณ , JSP๊ฐ€ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋งŒ๋“ค ๋•Œ(์ž๋ฐ”์ฝ”๋“œ๋กœ ๋งŒ๋“ค ๋•Œ) ์•Œ์•„์„œ ๋งŒ๋“ค์–ด ๋†“๋Š” ๊ฐ์ฒด๋“ค๋„ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์•Œ์•„์„œ ๋งŒ๋“ค์–ด์ง€๋Š” ๊ฐ์ฒด๋“ค์„ ๊ฐ€๋ฅด์ผœ ๋‚ด์žฅ๊ฐ์ฒด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ์ฝ”๋“œ๋“ค์ด ๋ฌธ์ž์—ด๋กœ ๋“ค์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•ด๋ณด๋ฉด

  • out.write์— html์ฝ”๋“œ๋“ค์ด ์žˆ๊ณ 
  • scriptlet์•ˆ์— ์žˆ๋˜ ์ฝ”๋“œ๋“ค์ด ๋ฐ”๊นฅ์— ์žˆ๊ณ 
int total = 0;
for(int i = 1; i <= 10; i++){
    total = total + i;
}
  • <%= %> ์•ˆ์—์žˆ๋˜ ๋‚ด์šฉ์ด out.print(total); ๋กœ ๋˜์–ด์žˆ๋˜ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
out.print(total );

 

๋”ฐ๋ผ์„œ ์œ„์—์„œ ํ™•์ธํ•œ ๋ฐ”์™€ ๊ฐ™์ด ์ž‘์„ฑํ•œ JSP์ฝ”๋“œ๋Š” ์•ฝ๊ฐ„ ํŠน์ˆ˜ํ•œ ํ˜•ํƒœ์˜ ์„œ๋ธ”๋ฆฟ ์†Œ์Šค๋กœ ์ƒ์„ฑ์ด ๋ฉ๋‹ˆ๋‹ค.

 

JSP์˜ ์‹คํ–‰์ˆœ์„œ

  1. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์›น์„œ๋ฒ„์— JSP์— ๋Œ€ํ•œ ์š”์ฒญ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.
  2. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์š”์ฒญํ•œ JSP๊ฐ€ ์ตœ์ดˆ๋กœ ์š”์ฒญํ–ˆ์„ ๊ฒฝ์šฐ๋งŒ JSP๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๊ฐ€ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. (java ํŒŒ์ผ ์ƒ์„ฑ)
  3. ์„œ๋ธ”๋ฆฟ ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•ด์„œ ์‹คํ–‰๊ฐ€๋Šฅํ•œ bytecode๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. (class ํŒŒ์ผ ์ƒ์„ฑ)
  4. ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค๋ฅผ ๋กœ๋”ฉํ•˜๊ณ  ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  5. ์„œ๋ธ”๋ฆฟ์ด ์‹คํ–‰๋˜์–ด ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‘๋‹ต ์ •๋ณด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

JSP๋กœ ์š”์ฒญ์ด ๋“ค์–ด์™”์„ ๋•Œ ์„œ๋ฒ„๋Š” JSP์— ํ•ด๋‹น๋˜๋Š” ์„œ๋ธ”๋ฆฟ์ด ์กด์žฌํ•˜๋Š”์ง€ ๋จผ์ € ์ฒดํฌํ•ด์„œ

  1. ์กด์žฌํ•œ๋‹ค๋ฉด ์„œ๋ธ”๋ฆฟ ์—”์ง„์ด ์š”์ฒญ์„ ๋ฐ›์•„์„œ ์„œ๋ธ”๋ฆฟ ๋ผ์ดํ”„ ์‚ฌ์ดํด๋Œ€๋กœ ์‹คํ–‰์„ ํ•˜๊ฒŒ ๋  ๊ฑฐ๊ณ 
  2. ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด JSP ์—”์ง„์ด ์š”์ฒญ์„ ๋ฐ›์•„์„œ ์•Œ๋งž๋Š” ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๋งŒ๋“ค๊ณ  ์ปดํŒŒ์ผํ•˜๊ณ  ์ด ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ผ๋“ค์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

 

JSP ๋ผ์ดํ”„์‚ฌ์ดํด ์‹ค์Šต

  • JSP ๋ผ์ดํ”„ ์‚ฌ์ดํด์„ ํ™•์ธํ•  lifecycle.jsp ์ž‘์„ฑ
    • ๋ธŒ๋ผ์šฐ์ €๋กœ ์ตœ์ดˆ ์š”์ฒญํ–ˆ์„ ๋•Œ
    • ๋ธŒ๋ผ์šฐ์ €๋กœ ๋‘๋ฒˆ์งธ ์š”์ฒญํ–ˆ์„ ๋•Œ
    • lifecycle.jsp๋ฅผ ์ˆ˜์ •ํ•œ ํ›„ ์š”์ฒญํ–ˆ์„ ๋•Œ

JSP์˜ ๋ผ์ดํ”„์‚ฌ์ดํด์„ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด์„œ firstweb/WebContent์— lifecycle.jspํŒŒ์ผ์„ ํ•˜๋‚˜ ๋” ์ƒ์„ฑํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

lifecycle.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
hello
<%
    System.out.println("_jspService()");
%>
 
<%!
public void jspInit() {
    System.out.println("jspInit()!");
}
 
public void jspDestroy() {
    System.out.println("jspDestroy()");
}
%>
 
</body>
</html>
cs

์‹คํ–‰๊ฒฐ๊ณผ

// ์ตœ์ดˆ ์‹คํ–‰
jspInit()!
_jspService()
// ์ƒˆ๋กœ๊ณ ์นจ
_jspService()
// ์ˆ˜์ • ํ›„ ์‹คํ–‰
jspDestroy()
jspInit()!
_jspService()

์‹คํ–‰์„ ํ•ด๋ณด๋ฉด ์œ„์˜ ์‹คํ–‰๊ฒฐ๊ณผ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ๋˜๋Š”๋ฐ ์‹คํ–‰๊ณผ ์ƒˆ๋กœ๊ณ ์นจ ์‹œ Service๋ฉ”์†Œ๋“œ๊ฐ€ ๊ณ„์†ํ•ด์„œ ๋ณด์ด๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ jsp๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ฐ”๋€Œ์—ˆ์„๊นŒ ํ™•์ธํ•ด๋ดค์„ ๋•Œ ์„œ๋ธ”๋ฆฟ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‘๋‹ต์— ํฌํ•จ๋˜๋Š” ๊ฑด Service ๋ฐ–์— ์—†์–ด์„œ ์ผ๋ฐ˜์ ์ธ ์ฝ”๋“œ๋“ค์€ ๋ชจ๋‘ Service ๋ฉ”์†Œ๋“œ์— ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ตœ์ดˆ๋กœ ์‹คํ–‰ํ•˜๋“ , ๋‹ค์‹œ ์‹คํ–‰ํ•ด๋“  ๋งค๋ฒˆ ํ˜ธ์ถœ๋˜๋Š” ๊ฒŒ Service ๋ฐ–์— ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์„ ์–ธ์‹ <%! %>

๊ทธ๋Ÿฌ๋ฉด JSP์—์„œ๋Š” ํ•ญ์ƒ Service์— ๋ฐ–์— ๋ชป์“ธ๊นŒ์š”? ๋‹ต์€ ์•„๋‹ˆ์š”์ž…๋‹ˆ๋‹ค. <%! %>๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Service๋ฉ”์„œ๋“œ ๋ฐ”๊นฅ์ชฝ์— ํ•ด๋‹น ์ฝ”๋“œ๋“ค์ด ์ž‘์„ฑ๋˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์น˜ ์ „์—ญ๋ณ€์ˆ˜์ฒ˜๋Ÿผ์š”.

lifecycle.jsp๊ฐ€ java๋กœ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•ด๋ณด๋ฉด 

lifecycle_jsp.java

public void jspInit() {
	System.out.println("jspInit()!");
}

public void jspDestroy() {
	System.out.println("jspDestroy()");
	
}
....
public void _jspInit() {
  }

  public void _jspDestroy() {
  }

  public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
      throws java.io.IOException, javax.servlet.ServletException {
    ....
    try {
      ....
      out.write("\r\n");
      out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\r\n");
      out.write("<html>\r\n");
      out.write("<head>\r\n");
      out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\r\n");
      out.write("<title>Insert title here</title>\r\n");
      out.write("</head>\r\n");
      out.write("<body>\r\n");
      out.write("hello\r\n");

	System.out.println("_jspService()");

      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("\r\n");
      out.write("</body>\r\n");
      out.write("</html>");
    } catch (java.lang.Throwable t) {
       ....
        else throw new ServletException(t);
      }
    } finally {
      _jspxFactory.releasePageContext(_jspx_page_context);
    }
  }
}
}

์•„๊นŒ์™€ ๋‹ค๋ฅด๊ฒŒ ์„ ์–ธ๋ฌธ ์•ˆ์— ์ž‘์„ฑํ–ˆ๋˜ ๋ฉ”์†Œ๋“œ๋“ค์ด Service๋ฉ”์†Œ๋“œ ๋ฐ”๊นฅ์— ์ž‘์„ฑ๋จ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์„ ์–ธ์‹์„ ์ด์šฉํ•˜๋ฉด ํŠน์ •ํ•œ ๋ฉ”์„œ๋“œ ํ•„๋“œ๋‚˜ ๋ฉ”์„œ๋“œ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

JSP๊ฐ€ ๋ฌด์—‡์ธ์ง€์™€ JSP์˜ ๋ผ์ดํ”„์‚ฌ์ดํด๊นŒ์ง€ ์•Œ์•„๋ณด์•˜๋Š”๋ฐ์š” ๋‹ค์Œ ์‹œ๊ฐ„์—๋Š” JSP์˜ ๋ฌธ๋ฒ•๊ณผ ๋‚ด์žฅ๊ฐ์ฒด์— ๋Œ€ํ•ด์„œ ๊ธ€์„ ์ž‘์„ฑํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

 

๋Œ“๊ธ€