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

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

by dar0m! 2020. 2. 4.

java์˜ Servlet์ด ๋ฌด์—‡์ธ์ง€ ํ•ญ์ƒ ๊ถ๊ธˆํ–ˆ๋Š”๋ฐ ์ด๋ฒˆ์— ๋ถ€์ŠคํŠธ์ฝ”์Šค๋ฅผ ์ˆ˜๊ฐ•ํ•˜๋ฉด์„œ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ถ€์ŠคํŠธ์ฝ”์Šค์—์„œ ์–ป์€ ์ •๋ณด๋“ค์„ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์˜์ƒ์ด ๊ถ๊ธˆํ•œ ๋ถ„๋“ค์€ ์•„๋ž˜ ๊ฐ•์˜ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ฃผ์„ธ์š”.

๊ฐ•์˜๋งํฌ

 

[LECTURE] 1) Servlet ์ด๋ž€? : edwith

๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ •์ ์ธ ์ฝ˜ํ…์ธ ์™€ ๋™์ ์ธ ์ฝ˜ํ…์ธ ๋กœ ๋‚˜๋ˆ„์–ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์„ ์ˆ˜ํ–‰ํ•ด์„œ ํŽ˜์ด์ง€๋ฅผ ๋™์ ์œผ๋กœ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ์„œ๋ธ”๋ฆฟ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ด…๋‹ˆ๋‹ค. ํ•™์Šต ๋ชฉํ‘œ ... - ๋ถ€์ŠคํŠธ์ฝ”์Šค

www.edwith.org

 

๋ชฉ์ฐจ

  1. Servlet ์ด๋ž€?
  2. Servlet ๋ผ์ดํ”„ ์‚ฌ์ดํด
  3. Request, Response ๊ฐ์ฒด ์ดํ•ดํ•˜๊ธฐ

 

1. Servlet ์ด๋ž€?

๋จผ์ € ์„œ๋ธ”๋ฆฟ์— ๋Œ€ํ•˜์—ฌ ์•Œ์•„๋ณด๊ธฐ ์ „์— ์ž๋ฐ” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

์ž๋ฐ” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜

  • WAS์— ์„ค์น˜(deploy)๋˜์–ด ๋™์ž‘ํ•˜๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜.
  • ์ž๋ฐ” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Š” HTML, CSS, ์ด๋ฏธ์ง€, ์ž๋ฐ”๋กœ ์ž‘์„ฑ๋œ ํด๋ž˜์Šค(Servlet๋„ ํฌํ•จ๋จ, package, ์ธํ„ฐํŽ˜์ด์Šค ๋“ฑ), ๊ฐ์ข… ์„ค์ • ํŒŒ์ผ ๋“ฑ์ด ํฌํ•จ๋œ๋‹ค.

์ž๋ฐ” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํด๋” ๊ตฌ์กฐ

์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํ˜ผ์ž์„œ ๋™์ž‘ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ WAS์— ์˜ํ•ด์„œ ๋™์ž‘๋˜๋Š”๋ฐ ์ด ๋•Œ ์ •ํ•ด์ง„ ์•ฝ์†์„ ์ง€์ผœ์•ผํ•ฉ๋‹ˆ๋‹ค. ์•ฝ์† ์ค‘ ํ•˜๋‚˜๋Š” ํด๋” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋“œ์‹œ WEB_INF ๋ผ๋Š” ํด๋”์™€ web.xml ์ด๋ผ๋Š” ํŒŒ์ผ์ด ์กด์žฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. 

์—ฌ๊ธฐ์„œ web.xml์„ '๋ฐฐํฌ ๊ธฐ์ˆ ์ž'๋ผ๊ณ  ํ•˜๋Š”๋ฐ ์ด ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ์ •๋ณด๋“ค์„ ๋‹ค ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํŒŒ์ผ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. servlet 3.0 ๋ฏธ๋งŒ์—์„œ๋Š” ํ•„์ˆ˜๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ๋˜๋Š” ๊ฒƒ์ด์—ˆ๊ณ , 3.0์ด์ƒ์—์„œ๋Š” ์–ด๋…ธํ…Œ์ด์…˜์ด ๋Œ€์‹ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ ๊ผญ ํฌํ•จํ•˜์ง€๋Š” ์•Š์•„๋„ ๋˜์ง€๋งŒ ๊ต‰์žฅํžˆ ์ค‘์š”ํ•œ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ ์Šคํ”„๋ง์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ๋•Œ์—๋Š” ์„œ๋ธ”๋ฆฟ์„ 3์ ๋Œ€๋กœ ๋งŒ๋“ค์—ˆ๋‹ค ํ•˜๋”๋ผ๋„ ๋‹ค๋ฅธ ์„ค์ • ๋ถ€๋ถ„์„ web.xml์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ web.xml์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

lib ํด๋” ์•„๋ž˜์—๋Š” jar ํŒŒ์ผ๋“ค์ด ์กด์žฌํ•˜๊ฒŒ ๋˜๊ณ , classes ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์— ํŒจํ‚ค์ง€, class ํŒŒ์ผ์ด ์žˆ์–ด์•ผ ํ•˜๋ฏ€๋กœ ์„œ๋ธ”๋ฆฟ์€ ๋ชจ๋‘ classes ํด๋” ์•„๋ž˜์— ๋“ค์–ด์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์„œ๋ธ”๋ฆฟ์ด๋ž€?

  • ์ž๋ฐ” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ตฌ์„ฑ์š”์†Œ ์ค‘์— ๋™์ ์ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์—ญํ• ์„ ํ•œ๋‹ค.
  • WAS์—์„œ ๋™์ž‘ํ•˜๋Š” Java ์˜ ํด๋ž˜์Šค๋‹ค
  • ์„œ๋ธ”๋ฆฟ์€ HttpServlet ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„์•ผ ํ•œ๋‹ค
    Q. HttpServlet์„ ์ƒ์†ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ• ๊นŒ?
       A. doGet(), doPost() ์™€ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋ฅผ HttpServlet์„ ์ƒ์†๋ฐ›์•„์„œ ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด ์ƒ์†ํ•˜์ง€ ์•Š์•˜์„ ๋•Œ๋Š” ์ง์ ‘ ๊ตฌํ˜„ํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์„œ๋ธ”๋ฆฟ๊ณผ JSP๋กœ๋ถ€ํ„ฐ ์ตœ์ƒ์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป์œผ๋ ค๋ฉด, ์›น ํŽ˜์ด์ง€๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ ์ด ๋‘ ๊ฐ€์ง€(JSP, ์„œ๋ธ”๋ฆฟ)๋ฅผ ์กฐํ™”๋กญ๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์˜ˆ) ์›น ํŽ˜์ด์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ํ™”๋ฉด(HTML)์€ JSP๋กœ ํ‘œํ˜„ํ•˜๊ณ , ๋ณต์žกํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์„œ๋ธ”๋ฆฟ์œผ๋กœ ๊ตฌํ˜„

 

๋ฒ„์ „์— ๋”ฐ๋ฅธ Servlet ์ž‘์„ฑ ๋ฐฉ๋ฒ•

1. Servlet 3.0 spec ์ด์ƒ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

  • web.xml ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ž๋ฐ” ์–ด๋…ธํ…Œ์ด์…˜(annotation)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์•ž์—์„œ ์‹ค์Šตํ–ˆ๋˜ first web์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

2. Servlet 3.0 spec๋ฏธ๋งŒ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

  • servlet์„ ๋“ฑ๋กํ•  ๋•Œ web.xml ํŒŒ์ผ์— ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.

 

2. Servlet ๋ผ์ดํ”„ ์‚ฌ์ดํด

HttpServlet์˜ 3๊ฐ€์ง€ ๋ฉ”์†Œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ

  • init()
  • service(request, response) - doGet(request, response)
  • destroy()

LifecycleServlet.java

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
27
28
29
30
31
32
33
34
35
36
37
38
package examples;
 
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
 
@WebServlet("/LifecycleServlet")
public class LifecycleServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
 
    public LifecycleServlet() {
        System.out.println("LifecycleServlet ์ƒ์„ฑ!!");
    }
 
    public void init(ServletConfig config) throws ServletException {
        System.out.println("init test ํ˜ธ์ถœ!!");
    }
 
    
    public void destroy() {
        System.out.println("destroy ํ˜ธ์ถœ!!");
    }
 
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
       {
        System.out.println("service ํ˜ธ์ถœ!!");        
    }
    
}
cs

 

์ฝ”๋“œ๋ฅผ ์‹คํ–‰์„ ์‹œ์ผœ๋ณด๋ฉด ๋งจ ์ฒ˜์Œ์—๋Š” ์ด๋ ‡๊ฒŒ ๋‚˜์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•œ ๋ฒˆ ๋ˆ„๋ฅด๋ฉด(์‹œ์ž‘ ๋ฒ„ํŠผ) 

์„œ๋น„์Šค๋งŒ ํ•œ ๋ฒˆ ๋” ํ˜ธ์ถœ๋˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น URL๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„ํ•œํ…Œ ์š”์ฒญ์„ํ•˜๋ฉด ์„œ๋ฒ„๋Š” URL์„ ๋ฐ›์•„์„œ ํ•ด๋‹น URL ๋งคํ•‘ ์ •๋ณด๋ฅผ ์•Œ์•„๋ƒˆ์„ ๊ฑฐ๊ณ  ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์กด์žฌํ•˜๋Š”์ง€ ์ฒดํฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์—†์œผ๋ฉด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋ฅผ '์ƒ์„ฑ'์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ตœ์ดˆ๋กœ Servlet์„ ํ˜ธ์ถœํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์—†๋‹ค๊ณ  ํŒ๋‹จํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ–ˆ๊ณ , ์šฐ๋ฆฌ๋Š” ์ƒ์„ฑ์ž์— ๋„ฃ์–ด๋’€๋˜ ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ๋กœ๊ณ ์นจ์„ ํ•˜๋ฉด ์„œ๋น„์Šค๋งŒ ํ˜ธ์ถœ ๋˜๋Š” ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‹ค๋ฅธ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•ด๋„ ์„œ๋น„์Šค๋งŒ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด์„œ ์„œ๋ธ”๋ฆฟ์€ ์„œ๋ฒ„์— ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์ฒญ์ด ์—ฌ๋Ÿฌ ๋ฒˆ ๋“ค์–ด์˜ค๋ฉด ์‹ค์ œ ์ด ์š”์ฒญ๋œ ๊ฐ์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ํ™•์ธํ•ด์„œ ์žˆ๋‹ค๋ฉด ์„œ๋น„์Šค ๋ฉ”์„œ๋“œ๋งŒ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

์ถ”๊ฐ€์ ์œผ๋กœ..

๋‘ ๋ฒˆ์งธ ์š”์ฒญ์ด ๋“ค์–ด์™”์„ ๋•Œ ๋ถ€ํ„ฐ ์„œ๋น„์Šค ๋ฉ”์„œ๋“œ๋งŒ ๊ณ„์† ์‹คํ–‰์ด ๋˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๊ฒฐ๊ตญ ์‘๋‹ตํ•ด์•ผ๋˜๋Š” ๋ชจ๋“  ๋‚ด์šฉ์€ ์„œ๋น„์Šค์— ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿผ destroy๋Š” ์–ธ์ œ ํ˜ธ์ถœ๋ ๊นŒ์š”?

init ํ•จ์ˆ˜์— ์žˆ๋Š” ๋‚ด์šฉ์„ ์ˆ˜์ •ํ•˜๊ณ  ์ €์žฅํ•ด๋ดค์Šต๋‹ˆ๋‹ค.

 

๋‹จ์ง€ ์ˆ˜์ •ํ•˜๊ณ  ์ €์žฅ๋งŒ ํ•ด๋„ destroy๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜๋ผ๋„ ์ˆ˜์ •ํ•˜๊ณ  ์ €์žฅํ•˜๊ณ  ๋‚˜๋ฉด ์„œ๋ธ”๋ฆฟ์ด ์ˆ˜์ •๋๊ธฐ ๋•Œ๋ฌธ์— ์ง€๊ธˆ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€์žˆ๋Š” ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ destroy ๋ผ๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ์‹œ์ž‘์„ ํ•ด๋ณด๋ฉด ๋” ์ด์ƒ ๋ฉ”๋ชจ๋ฆฌ์— ์กด์žฌํ•˜์ง€ ์•Š์œผ๋‹ˆ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ , init()์„ ํ˜ธ์ถœํ•˜๊ณ  service()๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ •๋ฆฌ

Servlet ์ƒ๋ช…์ฃผ๊ธฐ

  • WAS๋Š” ์„œ๋ธ”๋ฆฟ ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด ํ•ด๋‹น ์„œ๋ธ”๋ฆฟ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  •  if (๋ฉ”๋ชจ๋ฆฌ์— ์—†์Œ) {
     - ํ•ด๋‹น ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆผ
     - init() ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰
    }
     - service()๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰
  • was๊ฐ€ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜, ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ƒˆ๋กญ๊ฒŒ ๊ฐฑ์‹ ๋  ๊ฒฝ์šฐ destroy() ๋ฉ”์†Œ๋“œ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

doGet ๊ณผ service ์ฐจ์ด์ ์€? 

service() ๋ฉ”์„œ๋“œ๋Š” httpServlet์— ์ด๋ฏธ ๊ตฌํ˜„์ด ๋˜์–ด์žˆ๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

WAS๋Š” ๋งค๋ฒˆ ์„œ๋น„์Šค๋งŒ ํ˜ธ์ถœํ•˜๋Š”๋ฐ ๋‚ด๊ฐ€ ์˜ค๋ฒ„๋ผ์ด๋“œํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋‚˜์˜ ๋ถ€๋ชจ์ธ HttpServlet ์˜ service()๊ฐ€ ํ˜ธ์ถœ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. HttpServlet ์˜ service()๋Š” ํ…œํ”Œ๋ฆฟ ๋ฉ”์„œ๋“œ ํŒจํ„ด์œผ๋กœ ๊ตฌํ˜„์ด ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์ด GET์ผ ๊ฒฝ์šฐ ์ž์‹ ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” doGet์„ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ์‹์œผ๋กœ service ๋ฉ”์„œ๋“œ๊ฐ€ ์ด๋ฏธ ๊ทธ๋ ‡๊ฒŒ ๋™์ž‘ํ•˜๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— doGet ๋ฉ”์„œ๋“œ๋งŒ ์˜ค๋ฒ„๋ผ์ด๋“œํ•ด๋„ ์‘๋‹ต๊ฒฐ๊ณผ๋ฅผ ์ž˜ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

service(request, response) ๋ฉ”์†Œ๋“œ

HttpServlet์˜ service๋ฉ”์†Œ๋“œ๋Š” ํ…œํ”Œ๋ฆฟ ๋ฉ”์†Œ๋“œ ํŒจํ„ด์œผ๋กœ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด GET์ผ ๊ฒฝ์šฐ์—๋Š” ์ž์‹ ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” doGet(request, response)๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœ
  • ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด Post์ผ ๊ฒฝ์šฐ์—๋Š” ์ž์‹ ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” doPost(request, response)๋ฅผ ํ˜ธ์ถœ

 

 

3. Request, Response ๊ฐ์ฒด ์ดํ•ดํ•˜๊ธฐ

๊ฐ์ฒด๋ž€ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ๋ชจ์•„์„œ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด HttpServletRequest ์™€ HttpServletResponse๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ์„œ๋ธ”๋ฆฟ์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

  • HttpServletRequest ๋Š” ์š”์ฒญํ•  ๋•Œ ๊ฐ€์ง€๊ณ  ๋“ค์–ด์˜จ ๋‹ค์–‘ํ•œ ์ •๋ณด๋“ค์„ ๋‹ด๊ณ ์žˆ๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.
  • HttpServletResponse ๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ์‘๋‹ต์ •๋ณด๋ฅผ ๋‹ด๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

๋‘ ๊ฐ์ฒด๋ฅผ ์š”์ฒญ ์ •๋ณด์— ์žˆ๋Š” path๋กœ ๋งคํ•‘๋œ ์„œ๋ธ”๋ฆฟ์—๊ฒŒ ์ „๋‹ฌ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ์ „๋‹ฌํ•œ ๊ฐ์ฒด๋Š” service(), doGet(), doPost() ์™€ ๊ฐ™์€ ๋ฉ”์„œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ๋˜์–ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

HttpServletRequest

  • ํ—ค๋”, ํŒŒ๋ผ๋ฏธํ„ฐ, ์ฟ ํ‚ค, URI, URL ๋“ฑ ์š”์ฒญํ•  ๋•Œ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ •๋ณด๋“ค์„ ๋ชจ๋‘ ๋ฉ”์„œ๋“œ๋กœ ๋‹ด๋Š”๋‹ค.
    ํ—ค๋”๋‚ด์šฉ ์ฐธ๊ณ  ๋งํฌ
  • Body์˜ Stream์„ ์ฝ์–ด ๋“ค์ด๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

HttpServletResponse

  • WAS๋Š” ์–ด๋–ค ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ๋ณด๋ƒˆ๋Š”์ง€ ์•Œ๊ณ  ์žˆ๊ณ , ํ•ด๋‹น ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ต์„ ๋ณด๋‚ด๊ธฐ ์œ„ํ•œ HttpServletResponse๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์„œ๋ธ”๋ฆฟ์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.
  • ์„œ๋ธ”๋ฆฟ์€ ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•˜์—ฌ content type, ์‘๋‹ต ์ฝ”๋“œ, ์‘๋‹ต ๋ฉ”์‹œ์ง€ ๋“ฑ์„ ์ „์†กํ•œ๋‹ค.

 

 

์ถ”๊ฐ€๋กœ URI, URN, URL ์ด๋ž€?

์ฐธ๊ณ  ๋งํฌ

URI, URL, URN

URI ๋Š” ์ž์› ์‹๋ณ„์ž, URN์€ ์ž์› ์ด๋ฆ„, URL์€ ์ž์› ์œ„์น˜
  • URI์—๋Š” URL,URN์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. URL์€ URI์ด์ง€๋งŒ, URI๋Š” URL์ด ์•„๋‹ˆ๋‹ค.
  • URL์€ ์ธํ„ฐ๋„ท ์ƒ์˜ ์ž์› ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋ƒ„
  • URI๋Š” ์ธํ„ฐ๋„ท ์ƒ์˜ ์ž์›์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ๋ฌธ์ž์—ด์˜ ๊ตฌ์„ฑ

์˜ˆ)

  • http://test.com/test.pdf?docid=111 ์ด๋ผ๋Š” ์ฃผ์†Œ๋Š” URI์ด์ง€๋งŒ URL์€ ์•„๋‹ˆ๋‹ค.
  • http://test.com/test.pdf ๊นŒ์ง€๋งŒ URL์ž„(์ฃผ์†Œ์˜ ์œ„์น˜)
  • docid=111์ด๋ผ๋Š” ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์˜ ๊ฐ’์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง€๊ฒŒ๋จ, ๋”ฐ๋ผ์„œ ์‹๋ณ„์ž ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ์Œ
  • http://test.com/test.pdf?docid=111 ,http://test.com/test.pdf?docid=112๋Š” ๊ฐ™์€ URL์„ ๊ฐ€์ง€๊ณ  ๋‹ค๋ฅธ URI๋ฅผ ๊ฐ€์ง
  • blog.com/page.html ์€ URN
  • http://blog.com/pahe.html ์€ URL

 

 

 

์ด๋ ‡๊ฒŒ ๋ถ€์ŠคํŠธ์ฝ”์Šค ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ฝ”์Šค ์ค‘ Servlet์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

 

๋Œ“๊ธ€