Post

๐Ÿฅœ [Spring] Web Architecture & Servlet

Web Architecture

image-01

  1. Client ์—์„œ ์„œ๋ฒ„์— ์„œ๋น„์Šค๋ฅผ ์š”์ฒญ
  2. Server ์—์„œ ๋ชจ๋“  ์š”์ฒญ์„ ๋ฐ›๋Š”๋ฐ SD DD ๋ฅผ ํŒ๋ณ„
  3. DD ์ผ ๊ฒฝ์šฐ httpd ๋ฅผ ๊ฑฐ์ณ ์š”์ฒญ์„ Container(WAS) ๋กœ ๋„˜๊น€
  4. SD ์ผ ๊ฒฝ์šฐ Server ๋‚ด ์ฐพ๋Š” ํŒŒ์ผ์„ ์ฐพ์•„ ์‘๋‹ต

SD (Static Document)

์›น ํ™”๋ฉด ex) (html, css, js) ์ •์ ์ธ ํ™”๋ฉด

DD (Dynamic Document)

JAVA ์†Œ์Šค์ฝ”๋“œ ๋™์ž‘ํ•จ์ˆ˜ (Servlet, JSP) ๋“ฑ ์„œ๋น„์Šค ์ž‘์„ฑ


๋™๊ธฐ ์š”์ฒญ vs ๋น„๋™๊ธฐ ์š”์ฒญ

ServletRequest, ServletResponse ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์€ ์„œ๋ฒ„์—์„œ ์ƒ์„ฑ๋œ ์„œ๋ธ”๋ฆฟ ์•ˆ์˜ ์“ฐ๋ ˆ๋“œ ๋‹จ์œ„๋กœ ์ˆ˜ํ–‰๋œ๋‹ค

์š”์ฒญ์— ๋Œ€ํ•œ ์„œ๋น„์Šค๋ฅผ ๋‹ค ์ˆ˜ํ–‰ํ–ˆ๋‹ค๋ฉดโ€ฆservice() { }โ€ฆ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์“ฐ๋ ˆ๋“œ ๋‹จ์œ„๋กœ unbind ๋˜๋ฉด์„œ

๊ทธ ์•ˆ์— ๋กœ์ปฌ๋กœ ์กด์žฌํ•˜๋Š” ServeltRequest, ServletResponse ๋„ ๋ฉ”๋ชจ๋ฆฌ์—์„œ Death๋œ๋‹ค

๋™๊ธฐ ์š”์ฒญ์€ page, ๋น„๋™๊ธฐ ์š”์ฒญ์€ data ๋ฅผ ์‘๋‹ตํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ๋น„๋™๊ธฐ ์š”์ฒญ์€ Server ์™€ Client ์˜ ๋ถ„๋ฆฌ๋ฅผ ์˜๋ฏธํ•จ

๋™๊ธฐ ์š”์ฒญ

image-02

๋น„๋™๊ธฐ ์š”์ฒญ

image-03


Servlet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package web.servlet.generic;

import java.io.IOException;

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

/*
 MyGenericServlet ํด๋ž˜์Šค๋Š” java ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ํด๋ž˜์Šค
 java ํด๋ž˜์Šค๋Š” --JVM(ํ”Œ๋žซํผ)
 Servlet ํด๋ž˜์Šค๋Š”  -- Container(WAS, Engine)
 */

public class MyGenericServlet extends GenericServlet{ //GenericServlet์„ ์ƒ์†๋ฐ›์•„ Servlet์ด ๋จ

	@Override
	public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
		
	}
}

image-09 (๊ธฐ๋ณธํ˜•์‹)

Client์™€ Server๋กœ ๋‚˜๋‰˜๋ฉฐ

client ๊ฐ€ ํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์š”์ฒญ์€ Server ๋กœ ์š”์ฒญ์ด ์ง„ํ–‰

์š”์ฒญ์„ ํ•˜๋ฉด 2๊ฐ€์ง€๊ฐ€ ์ „์†ก๋˜๋Š”๋ฐ networkstream์„ ํ†ตํ•ด client ์—์„œ ์ž…๋ ฅํ•œ ๊ฐ’์„ ์ „์†ก

Web-Server(Demon-Server)๋Š” ๋ชจ๋“  ์š”์ฒญ์„ ๋ฐ›๋Š” ๋ฆฌ์…‰์…˜ ๊ฐ™์€ ์—ญํ• ์„ ํ•œ๋‹ค.


๊ทธ ํ›„ ์š”์ฒญ์ด static(SD)ํ•œ ์š”์ฒญ์ธ์ง€ dynamic(DD) ํ•œ ์š”์ฒญ์ธ์ง€ ํ™•์ธ ํ•œ ํ›„

๋งŒ์•ฝ DD ์ด๋ฉด ๋ฐ›์€ ์š”์ฒญ์ •๋ณด๋ฅผ container(Server, WAS) ๋กœ ๋„˜๊ธด๋‹ค.


์ด ๋•Œ ์š”์ฒญ์„ ๋„˜๊ธฐ๋Š” ์ˆœ๊ฐ„ container ๋Š” ์š”์ฒญ ์ •๋ณด๋ฅผ ServletRequest ๊ฐ์ฒด์— ๋‹ด๋Š”๋‹ค. (์ „์†ก ์ค€๋น„)

ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ unpack ํ•˜๋ฉด getter, pack ํ•˜๋ฉด setter ์ด๋‹ค.

๋˜ํ•œ container ๋Š” ๋™์‹œ์— response ๊ฐ์ฒด์™€ thread(Service method)๋ฅผ ๋งŒ๋“ ๋‹ค.

์ด ๋•Œ service ํ•จ์ˆ˜์˜ ์ธ์ž์— (request, response) ๊ฐ์ฒด๊ฐ€ ๋“ค์–ด๊ฐ€๊ณ  request ๊ฐ์ฒด๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ return๊ฐ’์„ response ์— ๋‹ด๋Š”๋‹ค.


์ด ๋ชจ๋“  ๊ฒƒ๋“ค์€ Servlet ์ด๋ผ๋Š” ํ•˜๋‚˜์˜ process ์—์„œ ์ง„ํ–‰๋˜๋ฉฐ ์ด๋•Œ์˜ Servlet ๋‚ด์—์„œ ๋™์ž‘ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋“ค์€ thread ๋ผ๊ณ  ์ดํ•ด ํ•˜๋ฉด ๋œ๋‹ค.


image-10

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 web.servlet.generic;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

/*
 MyGenericServlet ํด๋ž˜์Šค๋Š” java ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ํด๋ž˜์Šค
 java ํด๋ž˜์Šค๋Š” --JVM(ํ”Œ๋žซํผ)
 Servlet ํด๋ž˜์Šค๋Š”  -- Container(WAS, Engine)
 
 ::
 
 MyGenericServlet ms = new MyGenericServlet();
 ee๋ ˆ๋ฒจ์—์„œ๋Š” ๊ฐ์ฒด์ƒ์„ฑ์˜ ์ฃผ์ฒด๊ฐ€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹ˆ๋‹ค.
 ๋”ฐ๋ผ์„œ new๋กœ servlet๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค.
 ๊ฐ์ฒด ์ƒ์„ฑ์˜ ์ฃผ์ฒด๋Š” container์—๊ฒŒ ๋„˜์–ด๊ฐ„๋‹ค.
 
 container๊ฐ€ dd(web.xml) ํŒŒ์ผ์„ ๋ณด๊ณ  ๊ฐ์ฒด ์ƒ์„ฑ 
 */

public class MyGenericServlet extends GenericServlet{ //GenericServlet์„ ์ƒ์†๋ฐ›์•„ Servlet์ด ๋จ
	@Override
	public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
		//์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์‘๋‹ต์„ ํ•˜๊ธฐ์œ„ํ•œ ๊ฐ์ฒด...
		PrintWriter out = response.getWriter();
		
		out.println("<html><body><h2>");
		out.println("Hello Generic Servlet~!!");
		out.println("<h2></body></html>");
		out.close(); //ํด๋ผ์ด์–ธํŠธ์˜ ์‘๋‹ต์ด ๋๋‚ฌ๋‹ค.(thread, request, response ๊ฐ์ฒด๋Š” ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋‚ด๋ ค์˜จ๋‹ค)
	
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
 <servlet>
 <!--web.servlet.generic.MyGenericServlet MyGenericServlet = new web.servlet.generic.MyGenericServlet()  ์„œ๋ฒ„ ์™ธ๋ถ€ ๋งคํ•‘ -->
 	<servlet-name>MyGenericServlet</servlet-name>
 	<servlet-class>web.servlet.generic.MyGenericServlet</servlet-class> <!--์œ„ FQCN๋ฅผ ๋ณด๊ณ  ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•จ  -->
 </servlet>
 
 
 <!--ํด๋ผ์ด์–ธํŠธ ๋งคํ•‘  -->
 <servlet-mapping>
 	<servlet-name>MyGenericServlet</servlet-name>
 	<url-pattern>/My</url-pattern> <!--/My๋กœ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด MyGenericServlet์œผ๋กœ ๋ณด๋‚ธ๋‹ค  -->
 </servlet-mapping>
</web-app>
This post is licensed under CC BY 4.0 by the author.