๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT/Spring

[์ธํ”„๋Ÿฐ - ์Šคํ”„๋ง MVC 1ํŽธ] ์„œ๋ธ”๋ฆฟ์ด๋ž€, ์„œ๋ธ”๋ฆฟ ํ™˜๊ฒฝ ๊ตฌ์„ฑ

by YeonBu 2024. 5. 14.
728x90

 

 

 

/* ์ด ๊ธ€์€ ๊น€์˜ํ•œ๋‹˜์˜ ๊ฐ•์˜๋ฅผ ๋ณด๊ณ  ์ •๋ฆฌํ•˜๋ ค๊ณ  ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

   ๊ฐœ์ธ์ ์ธ ๊ณต๋ถ€๋ฅผ ์œ„ํ•ด ์˜ฌ๋ฆฌ๋Š” ๊ธ€์ด๋ฏ€๋กœ ์ค‘๊ฐ„ ์ค‘๊ฐ„ ์ฝ”๋“œ๋Š” ์ƒ๋žต๋˜์—ˆ์Šต๋‹ˆ๋‹ค. */

 

 

 

์Šคํ”„๋ง MVC 1ํŽธ - ๋ฐฑ์—”๋“œ ์›น ๊ฐœ๋ฐœ ํ•ต์‹ฌ ๊ธฐ์ˆ  | ๊น€์˜ํ•œ - ์ธํ”„๋Ÿฐ

๊น€์˜ํ•œ | ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ํ•„์š”ํ•œ ๋ชจ๋“  ์›น ๊ธฐ์ˆ ์„ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์ดํ•ดํ•˜๊ณ , ์™„์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง MVC์˜ ํ•ต์‹ฌ ์›๋ฆฌ์™€ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ณ , ๋” ๊นŠ์ด์žˆ๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์Šต

www.inflearn.com

 

 

 

 

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

 

 

์ž๋ฐ”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŽ˜์ด์ง€๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ์„œ๋ฒ„์ธก ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ, HTTP ์š”์ฒญ๊ณผ ์‘๋‹ต ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์Šคํ”„๋ง์—์„œ ์ œ๊ณตํ•˜๋Š” ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. 

HTTP๋กœ ํ†ต์‹ ํ•  ๋•Œ ์œ„์ฒ˜๋Ÿผ ๋งŽ์€ ๊ณผ์ •๋“ค์ด ์กด์žฌํ•˜๋Š”๋ฐ, ์„œ๋ธ”๋ฆฟ์€ ๊ทธ ๊ณผ์ •์„ ๊ฐ„์†Œํ™” ์‹œ์ผœ์ฃผ๋ฉฐ ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜๋ฏธ์žˆ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.

 

 

HTTP ์š”์ฒญ์‹œ WAS๋Š” Request, Response ๊ฐ์ฒด๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์„œ ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋ฅผ ํ˜ธ์ถœํ•˜๊ณ ,

๊ฐœ๋ฐœ์ž๋Š” Request ๊ฐ์ฒด์—์„œ HTTP ์š”์ฒญ ์ •๋ณด๋ฅผ ๊บผ๋‚ด๊ณ , Response ๊ฐ์ฒด์— HTTP ์‘๋‹ต์ •๋ณด๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.

WAS๋Š” Response ๊ฐ์ฒด์— ๋‹ด๊ฒจ์žˆ๋Š” ๋‚ด์šฉ์œผ๋กœ HTTP ์‘๋‹ต ์ •๋ณด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

 

 

 

 

 

 

2. ์„œ๋ธ”๋ฆฟ ํ™˜๊ฒฝ ๊ตฌ์„ฑ

 

1) @ServletComponentScan ์ถ”๊ฐ€

@ServletComponentScan // ์„œ๋ธ”๋ฆฟ ์ž๋™ ๋“ฑ๋ก
@SpringBootApplication
public class ServletApplication {

   public static void main(String[] args) {
      SpringApplication.run(ServletApplication.class, args);
   }

}

 

- ์Šคํ”„๋ง๋ถ€ํŠธ๋Š” ์„œ๋ธ”๋ฆฟ์„ ์ง์ ‘ ๋“ฑ๋กํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก @ServletComponentScan์„ ์ง€์›ํ•œ๋‹ค.

 

 

2) ์„œ๋ธ”๋ฆฟ ๋“ฑ๋ก

@WebServlet(name = "helloServlet", urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("HelloServlet.service");
        System.out.println("request = " + request);
        System.out.println("response = " + response);

        String username = request.getParameter("username");
        System.out.println("username = " + username);

        response.setContentType("text/plain");
        response.setCharacterEncoding("utf-8");
        response.getWriter().write("hello " + username);
    }
}

 

- @WebServlet : ์„œ๋ธ”๋ฆฟ ์• ๋…ธํ…Œ์ด์…˜(name = ์„œ๋ธ”๋ฆฟ ์ด๋ฆ„, urlPatterns = URL ๋งคํ•‘)

- http://localhost:8080/hello?username=kim ์‹คํ–‰

- ๊ฒฐ๊ณผ : hello kim

 

- ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋กœ ํ™•์ธํ•˜๋ฉด Response Headers์— ๋‚ด๊ฐ€ ์ง€์ •ํ•œ Content-Type์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

* ์ฐธ๊ณ ๋กœ ๋กœ๊ทธ๋ฅผ ์กฐ๊ธˆ ๋” ์ž์„ธํžˆ ๋ณด๊ธฐ ์œ„ํ•ด์„œ๋Š” application.properties์—

  logging.level.org.apache.coyote.http11=trace

  ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ์„œ๋ฒ„๊ฐ€ ๋ฐ›์€ HTTP ์š”์ฒญ ๋ฉ”์„ธ์ง€๋ฅผ ์ถœ๋ ฅํ•ด์ค€๋‹ค.

  (์šด์˜์„œ๋ฒ„์— ๋ชจ๋“  ์š”์ฒญ ์ •๋ณด๋ฅผ ๋‹ค ๋‚จ๊ธฐ๋ฉด ์„ฑ๋Šฅ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ๋งŒ ์ ์šฉ)

 

๋ฐ˜์‘ํ˜•