Post

๐Ÿฅœ [Spring] Servlet-API ์™€ ์ƒ๋ช…์ฃผ๊ธฐ

Servlet-API

image-11 (Servlet-API)

GenericServlet ์€ Servlet ์ธํ„ฐํŽ˜์ด์Šค์™€ ServletConfig ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†๋ฐ›์€ ๊ฒƒ์ด๋ฉฐ

Servlet ์ธํ„ฐํŽ˜์ด์Šค์™€ ServletConfig ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์„œ๋กœ has a relation ๊ด€๊ณ„์ด๋‹ค

1
2
3
4
5
6
7
8
9
10
11
12
// Compiled from Servlet.java (version 1.8 : 52.0, no super bit)
public abstract interface Servlet {
  
	//ServletConfig์˜ setter์ด๋‹ค
  public abstract void init(ServletConfig arg0) throws javax.servlet.ServletException;
  
  public abstract ServletConfig getServletConfig();
  
  public abstract void service(ServletRequest arg0, javax.servlet.ServletResponse arg1) throws javax.servlet.ServletException, java.io.IOException;
  
  public abstract void destroy();
}
1
2
3
4
5
6
7
8
9
10
11
// Compiled from ServletConfig.java (version 1.8 : 52.0, no super bit)
public abstract interface ServletConfig {
  
  public abstract String getServletName();
  
  public abstract ServletContext getServletContext();
  
  public abstract String getInitParameter(String arg0);
  
  public abstract Enumeration getInitParameterNames();
}

GenericServlet

์œ„ ๋‘๊ฐœ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•œ ๊ฒƒ์ด GenericServlet ์ด๋ฉฐ

GenericServlet ์€ ๋‹จ๋… ๋ฉ”์†Œ๋“œ๋กœ log() ์™€ service() ๋ฅผ ๊ฐ€์ง„๋‹ค.

GenericServlet๋ฅผ ์ƒ์†๋ฐ›๊ณ  ๊ตฌํ˜„ํ•˜๋ฉด ๋‹ค์–‘ํ•œ ํ†ต์‹ (http, ftpโ€ฆ ๋“ฑ)์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

GenericServlet ์„ ์ƒ์†๋ฐ›๋Š” HttpServlet ์ด ์กด์žฌํ•œ๋‹ค.


service()

service() ๋Š” ์ธ์ž๊ฐ’์œผ๋กœ ServletRequet ์ธํ„ฐํŽ˜์ด์Šค์™€ ServletResponse ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ฐ›์œผ๋ฉฐ

service() ๋Š” ํ•ด๋‹น ํ•จ์ˆ˜ ๋‚ด์—์„œ ํด๋ผ์ด์–ธํŠธ์˜ ์„œ๋น„์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋กœ์ง์„ ์ž‘์„ฑํ•œ๋‹ค.


javax.servlet

์ง€๊ธˆ๊นŒ์ง€ ๋งํ•œ ํด๋ž˜์Šค๋“ค์€ javax.servlet package์— ๋ชจ๋‘ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.

javax.servlet ํ”„๋กœํ† ์ฝœ ๋…๋ฆฝ์ ์ธ package ์ด๋‹ค.


javax.servlet.http

์œ„ ํด๋ž˜์Šค๋Š” javax.servlet.http package์— ํฌํ•จ๋œ๋‹ค.

javax.servlet.http ๋Š” ํ”„๋กœํ† ์ฝœ ์ข…์†์ ์ธ package์ด๋‹ค.


HttpServlet

HttpServlet์„ ์ƒ์†๋ฐ›์•„ ์‚ฌ์šฉํ•˜๋ฉด http ํ†ต์‹ ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.

HttpSerlvet ์€ service(hreq, hres) , doGet(hreq, hres), doPost(hreq, hres), doPut(hreq, hres) , doDelete(hreq, hres) ํ•จ์ˆ˜ ๋“ฑ์„ ๊ฐ€์ง„๋‹ค.


HttpServletRequet & HttpServletResponse

์ธ์ž๊ฐ’์œผ๋กœ HttpServletRequet ์™€ HttpServletResponse ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ€์ง„๋‹ค.

์œ„ ์ธํ„ฐํŽ˜์ด์Šค ๋“ค์€ ๊ฐ๊ฐ ServletRequest ์™€ ServletResponse ๋ฅผ ์ƒ์†๋ฐ›๋Š”๋‹ค.

๋”ฐ๋ผ์„œ http ํ†ต์‹ ์— ํŠนํ™”๋œ HttpServlet ์„ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.


ํ™œ์šฉ ์˜ˆ์ œ

1
2
3
4
5
	<form action="LFS">
		ID : <input type = "text" name="id"><br><br>
		PASS : <input type="password" name="password"><br><br>
		<input type="submit" value="LOGIN">
	</form>

image-12

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
39
40
41
42
43
44
45
46
package web.servlet.http;

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

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/*
 * ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋จผ์ € annotation์„ ๋งŒ๋‚˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ xml ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ถ•์•ฝํ•œ๊ฒƒ์ด๋‹ค.
 * <servlet>
 * 		<servlet-name>LoginFromServlet</servlet-name>
 * 		<servlet-class>web.servlet.http.LoginFromServlet</servlet-class>
 * <servlet>
 * 
 * <servlet-mapping>
 * 		<servlet-name>LoginFormServlet</servlet-name>
 * 		<url-pattern> /LFS </url-pattern>
 * 	</servlet-mapping>
 */
@WebServlet("/LFS") //anotation (xml ๋งตํ•‘์ •๋ณด๋ฅผ ์งง๊ฒŒ ์ค„์ด๋Š” ๊ฒƒ) 
public class LoginFromServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
      
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//1. form ๊ฐ’ ๋ฐ›๋Š”๋‹ค. 
		String id = request.getParameter("id");
		String password=request.getParameter("password");
		
		//2. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ํ˜ธ์ถœ... ํ–ˆ๋‹ค ์น˜๊ณ ....
		//Member member = MemberDAOImpl.getInstanse().login(id, password);
		//์œ„ ์ฝ”๋“œ๊ฐ€ ๋™์ž‘ํ–ˆ๋‹ค ์น˜๊ณ   
		
		//3. ๋ฐ˜ํ™˜๋œ ๊ฐ’์„ ๋‹ค์‹œ ํด๋ผ์ด์–ธํŠธ๋กœ ์‘๋‹ต.....
		PrintWriter out = response.getWriter(); //ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ด๋ฐ›๊ณ .response ๋ฅผ ํ†ตํ•ด์„œ
		out.println("<html><body>");
		out.println("<ul><li> ID : " + id + "</li>");
		out.println("<li> PASSWORD : " + password +"</li>");
		out.println("</ul></body></html>");
		
		out.close();
	}
}

2.5ver ์œผ๋กœ DD ํŒŒ์ผ์— ์ง์ ‘ xml ํŒŒ์ผ์— ์š”์ฒญ๊ฒฝ๋กœ๋ฅผ ๋„ฃ์–ด์ฃผ์—ˆ์ง€๋งŒ

4.0ver ๋Š” @annotation ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ด xml ํŒŒ์ผ์„ ํ•œ ์ค„๋กœ ๋Œ€์ฒด

Method ์š”์ฒญ ๋ฐฉ์‹

form ํƒœ๊ทธ์—์„œ method ์š”์ฒญ๋ฐฉ์‹์€ 2๊ฐ€์ง€ ์กด์žฌํ•œ๋‹ค.

GET

โ€œget itโ€ ์˜ ์ค€๋ง, ๋‹จ์ˆœํ•œ ํŽ˜์ด์ง€ ์˜ ์—ฐ๊ฒฐ์ด ์ฃผ ๋ชฉ์ (๋ฐ์ดํ„ฐ ์ „๋‹ฌ์ด ์ฃผ ๋ชฉ์ ์ด ์•„๋‹˜)

๋ฐ์ดํ„ฐ ์ „๋‹ฌ์‹œ ์šฉ๋Ÿ‰, ๊ธธ์ด์— ์ œ์•ฝ์ด ์žˆ์Œ (URL ์œผ๋กœ ๋ณด๋‚ด๊ธฐ ๋•Œ๋ฌธ)

๋งŒ์•ฝ์— ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์‹œ ์ฃผ์†Œ์ฐฝ์— String์œผ๋กœ ๋ถ™์—ฌ์„œ ๋‚ ๋ผ๊ฐ„๋‹ค

๋ณด์•ˆ์ƒ ์šฐ๋ ค์žˆ๋Š” ๋ฐ์ดํ„ฐ๋Š” get ๋ฐฉ์‹ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋œ๋‹ค

doGet()

POST

post office์˜ ์ค€๋ง, ์„œ๋ฒ„์ธก ํ”„๋กœ๊ทธ๋žจ์— ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์ด ์ฃผ ๋ชฉ์ 

๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ด ๊ทธ ๋ฐ์ดํ„ฐ์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๋ณด๋‚ด๋‹ฌ๋ผ๋Š” ์˜๋ฏธ

๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ ์ด๊ฑฐ๋‚˜ ๋ณด์•ˆ์ƒ ๋…ธ์ถœ๋˜๋ฉด ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ ๋ฐ˜๋“œ์‹œ post ๋ฐฉ์‹ ์‚ฌ์šฉ

๋ฐ์ดํ„ฐ ์šฉ๋Ÿ‰, ๊ธธ์ด์— ์ œ์•ฝ์ด ์—†๋‹ค

doPost()


image-13


GET ๋ฐฉ์‹์€ ๋ณด๊ธฐ์™€ ๊ฐ™์ด request.body ๊ฐ€ ๋น„์–ด์žˆ๊ธฐ ๋–„๋ฌธ์— Server ์—์„œ ๋”ฐ๋กœ ์„ค์ •ํ•ด์•ผํ•จ


๋™์‹œ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•

๋งŒ์•ฝ GET ๊ณผ POST ์š”์ฒญ์„ ๊ฐ™์ด ํ•ด์•ผ ํ•œ๋‹ค๋ฉด

๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๋Š” Servlet ์ด ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ๋‹ค

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
39
40
41
42
43
44
45
46
47
48
49
50
package web.servlet.http;

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

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("/LFS") //anotation (xml ๋งตํ•‘์ •๋ณด๋ฅผ ์งง๊ฒŒ ์ค„์ด๋Š” ๊ฒƒ) 
public class LoginFromServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doProcess(request, response);
	}
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doProcess(request, response);
	}
	
	protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//๋กœ์ง์€ ์—ฌ๊ธฐ์„œ ์ž‘์„ฑ....
		
		//ํ•œ๊ธ€์ฒ˜๋ฆฌ....PrintWriter ๋ฆฌํ„ด ๋ฐ›๊ธฐ ์ „์— ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค. , ์–‘๋ฐฉํ–ฅ ๋‹ค ํ•ด์ค˜์•ผ ํ•œ๋‹ค. 
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		
		
		//1. form ๊ฐ’ ๋ฐ›๋Š”๋‹ค. 
		String id = request.getParameter("id");
		String password=request.getParameter("password");
				
		//2. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ํ˜ธ์ถœ... ํ–ˆ๋‹ค ์น˜๊ณ ....
		//Member member = MemberDAOImpl.getInstanse().login(id, password);
		//์œ„ ์ฝ”๋“œ๊ฐ€ ๋™์ž‘ํ–ˆ๋‹ค ์น˜๊ณ   
				
		//3. ๋ฐ˜ํ™˜๋œ ๊ฐ’์„ ๋‹ค์‹œ ํด๋ผ์ด์–ธํŠธ๋กœ ์‘๋‹ต.....
		PrintWriter out = response.getWriter(); //ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ด๋ฐ›๊ณ .response ๋ฅผ ํ†ตํ•ด์„œ
		out.println("<html><body>");
		out.println("<ul><li> ID : " + id + "</li>");
		out.println("<li> PASSWORD : " + password +"</li>");
		out.println("</ul></body></html>");
				
		out.close();
	}
}

doProcess() ๋ฅผ ์ •์˜

doGet() ๋ฉ”์†Œ๋“œ๊ฐ€ ๋ฐ˜์‘ํ•˜๋“  doPost() ๊ฐ€ ๋ฐ˜์‘ํ•˜๋“  doProcess() ๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ


Servlet Lifecycle

  1. Container๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ์ฒ˜์Œ์— ddํŒŒ์ผ(web.xml)์„ ์ฝ๋Š”๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์–ด๋–ค servlet๋ฅผ ์ƒ์„ฑํ• ๊ฒƒ์ธ๊ฐ€์— ๋Œ€ํ•œ ๋งตํ•‘ ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์ ธ ์žˆ์Œ
  2. container๊ฐ€ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•ด servlet๋ฅผ ์ƒ์„ฑ
  3. init() (์ธ์Šคํ„ด์Šค ์ดˆ๊ธฐํ™” ์ž‘์—…) ๋ฅผ container๊ฐ€ ํ˜ธ์ถœ (์—ฌ๊ธฐ๊นŒ์ง€ Ready on ์ƒํƒœ, ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ๋Œ€๊ธฐ)
  4. container์—์„œ ์˜ํ•ด์„œ req, res, thread ๊ฐ์ฒด ์ƒ์„ฑ

    thread ๊ฐ์ฒด๊ฐœ ์ƒ์„ฑ๋œ๋‹ค๋Š” ๊ฒƒ์€ service() ๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค๋Š” ์˜๋ฏธ์ด๊ณ ,

  5. deGet() , doPost() ํ˜ธ์ถœ

    ์ด ๋•Œ req, res๊ฐ์ฒด๊ฐ€ ์ธ์ž๊ฐ’์œผ๋กœ ๋™์ ์œผ๋กœ passing into ๋˜์–ด์ง„๋‹ค.

  6. doGet() , doPost() ๊ฐ€ ์ˆ˜ํ–‰์„ ๋‹ค ํ–ˆ๋‹ค๋Š” ๊ฒƒ์€ ์‘๋‹ต์„ client์—๊ฒŒ ์™„๋ฃŒํ–ˆ๋‹ค๋Š” ์˜๋ฏธ์ด๊ณ ,
  7. req, res, thread ๊ฐ์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ unbind(์ฃฝ๋Š”) ๋œ๋‹ค.

    (Ready on ์ƒํƒœ ์ดํ›„ ๋ถ€ํ„ฐ ์—ฌ๊ธฐ๊นŒ์ง€ clint์˜ ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ ๋งˆ๋‹ค ๋ฐ˜๋ณต๋œ๋‹ค.)

  8. destroy() ๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค๋Š” ๊ฒƒ์€ servlet ์ธ์Šคํ„ด์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ฃฝ๋Š”๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

๋ณดํ†ต ์ธ์Šคํ„ด์Šค ์ดˆ๊ธฐํ™” ์ž‘์—…์€ ์ƒ์„ฑ์ž์—์„œ ํ•˜์ง€๋งŒ init() ์—์„œ ํ•จ

Servlet์€ ์‚ฌ์šฉ์ž๊ฐ€ ์•„๋‹Œ Container์—์„œ ๋งŒ๋“ค์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์„ฑ์ž์˜ ์ธ์ž์— ํ•„๋“œ๊ฐ’์„ ๋„ฃ์„ ์ˆ˜ ์—†๋‹ค!!

๋”ฐ๋ผ์„œ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋งŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ณ  ํ•„๋“œ๊ฐ’ ์ฃผ์ž…์€ init() ์—์„œ ํ•œ๋‹ค.

  1. DD ๋ฅผ ์ฝ์–ด๋“ค์ž„
  2. Servlet ์ƒ์„ฑ container ๋ถ€ํ„ฐ ํ˜ธ์ถœ
  3. init() calling โ€ฆ ======= READY ON START
  4. req, res thread ๊ฐ์ฒด ์ƒ์„ฑ
  5. service() โ€”> doGet() , doPost() ์žฌํ˜ธ์ถœ
  6. doGet() , doPost() ์‘๋‹ต ์™„๋ฃŒ
  7. req, res, thread ๊ฐ์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ unbindโ€ฆ death ======= READY ON END
  8. destroy() ํ˜ธ์ถœ
  9. servlet death


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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package web.servlet.life;

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

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("/Life")
public class LifeCycleServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
    //ํ•„๋“œ
	private int count=0;
    
    public LifeCycleServlet() {
        System.out.println("1.servlet ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ...default๋กœ ....");
    }

    @Override
    public void init() throws ServletException {
        System.out.println("2.init calling...by Container");

    }
    
    @Override
    public void destroy() {
    	System.out.println("4. Servlet Instance Undind by container");
    }
    
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doProcess(request, response);
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doProcess(request, response);
	}
	
	protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
    System.out.println("3. service ...doGet(), doPost(), .,,,..");

		//ํ•œ๊ธ€ ์ฒ˜๋ฆฌ  
		request.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8");
        
    PrintWriter out = response.getWriter();
        
        //๋ธŒ๋ผ์šฐ์ €๋กœ ๋ฐ”๋กœ ์ถœ๋ ฅ 
    out.println("<body bgcolor='yellow'>");
    out.println("<h3>Life Cycle CallBack Method...</h3>");
    out.println("<h4><b>Count :: "+ ++count + "</b></h4>");
    out.println("</body>");
       
    out.close();
	}
}

์ฆ‰ 1, 2๋ฒˆ์€ Ready on ์ƒํƒœ์ด๋ฏ€๋กœ ํ•œ๋ฒˆ๋งŒ ํ˜ธ์ถœ๋˜๊ณ , 3๋ฒˆ์€ ๊ณ„์†ํ•ด์„œ ํ˜ธ์ถœ

ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

init() ์ดˆ๊ธฐํ™”

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package web.servlet.config;

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

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//Annotation์ด ์—†๋‹ค. 2.5๋ฒ„์ „์€ xml ๊ธฐ๋ฐ˜์ด๊ธฐ ๋•Œ๋ฌธ  
public class GreetingServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private String greet; //greet ๋ณ€์ˆ˜์— ๋“ค์–ด๊ฐ€๋Š” ๊ฐ’์„ service() ํ•˜๊ธฐ ์ „์— ์ดˆ๊ธฐํ™” ํ•ด์•ผ ํ•œ๋‹ค.
    
  public GreetingServlet() {
  	System.out.println("1 GreetingServlet ๋””ํดํŠธ๋กœ ์ƒ์„ฑ....");
  }

  @Override
  public void init() throws ServletException {
  	System.out.println("2 GreetingServlet ํ•„๋“œ ์ดˆ๊ธฐํ™” ");
  	greet = getInitParameter("GREET"); //์ดˆ๊ธฐ์— ์„ค์ •ํ•œ name์œผ๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’ ๋ฐ›์•„์˜ด
  	System.out.println("Greet Message :: " + greet);
  }
    
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doProcess(request, response);
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doProcess(request, response);
	}
	
	protected void doProcess(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		//ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ์‹œ์ ์— ํ˜ธ์ถœ...form ๊ฐ’ ๋ฐ›์•„์˜จ๋‹ค.
		//ํ•œ๊ธ€์ฒ˜๋ฆฌ  
		request.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8");
        
     System.out.println("3 doProcess... ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์‹œ ์ž‘๋™ํ•จ   ");
     String name = request.getParameter("name");
        
     PrintWriter out=response.getWriter();
     out.println("<body><h3>" +name + ", " + greet + "</h3></body>");
     //greet๋Š” Ready on ์ƒํƒœ์—์„œ ๋ฐ›์•„์˜จ ๊ฐ’์ด๊ณ  ์ปจํ…Œ์ด๋„ˆ ์ฐจ์›์—์„œ ์„ค์ •ํ•œ ์ •๋ณด, servlet ํ•„๋“œ ์ดˆ๊ธฐํ™”
     //name์€ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์‹œ ๋ฐ›์•„์˜จ๊ฐ’์ด๊ณ , form๊ฐ’ ๋ฐ›์•„์„œ ์ถœ๋ ฅํ•œ 
        
     out.close();
	}
}

์œ„ ์ฝ”๋“œ๋Œ€๋กœ ์ž‘์„ฑํ•˜๋ฉด ์„œ๋ฒ„์˜ ์ตœ์ดˆ ์š”์ฒญํ•  ๋•Œ Ready on ์ƒํƒœ ๋ถ€ํ„ฐ ์ง„ํ–‰ ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ์ตœ์ดˆ ์ง„ํ–‰ํ•œ ์‚ฌ๋žŒ์€ delay๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฅผ Lazy Loading ์ด๋ผ๊ณ  ํ•œ๋‹ค.

Lazy Loading์„ Pre Loading์œผ๋กœ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?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>
    <description>ServletConfig๋ฅผ ์ด์šฉํ•œ Servlet ๊ฐ์ฒด ์ดˆ๊ธฐํ™”</description>
    <display-name>GreetingServlet</display-name>
    <servlet-name>GreetingServlet</servlet-name>
    <servlet-class>web.servlet.config.GreetingServlet</servlet-class>
    <init-param>
      <description></description>
      <param-name>GREET</param-name>
      <param-value>Welcome to the Jambery</param-value>
    </init-param>
    
    <load-on-startup>1</load-on-startup> ////////Pre Loading ์ˆ˜์ • ๋ถ€๋ถ„!!!!!!!!
  </servlet>
  <servlet-mapping>
    <servlet-name>GreetingServlet</servlet-name>
    <url-pattern>/GS</url-pattern>
  </servlet-mapping>
</web-app>

xml ์„ ์ˆ˜์ •

1
@WebServlet(urlPatterns = {"/Life"}, loadOnStartup = 1)

4.0^ver LifeCycle annotation ์ˆ˜์ •

This post is licensed under CC BY 4.0 by the author.