λ‘œμΌ“πŸΎ
article thumbnail
Published 2020. 12. 22. 22:31
[Spring] μ„œλΈ”λ¦Ώμ΄λž€? ...
λ°˜μ‘ν˜•


# μ„œλΈ”λ¦Ώ??!!

 

μ„œλΈ”λ¦Ώμ€ μ„œλ²„ μͺ½μ—μ„œ μ‹€ν–‰λ˜λ©° ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ„ λ™μ μœΌλ‘œ μ²˜λ¦¬ν•  수 μžˆκ²Œλ” λ„μ™€μ£ΌλŠ” μžλ°” ν΄λž˜μŠ€μž…λ‹ˆλ‹€.

μ„œλΈ”λ¦Ώμ€ μžλ°” ν΄λž˜μŠ€μ΄λ―€λ‘œ μžλ°”μ˜ 일반적인 νŠΉμ§•μ€ λͺ¨λ‘ 가지고 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ μžλ°”μ™€ 달리 μ„œλΈ”λ¦Ώμ€ ν†°μΊ£κ³Ό 같은 μ„œλΈ”λ¦Ώ μ»¨ν…Œμ΄λ„ˆμ—μ„œ μ‹€ν–‰λ˜μ•Ό ν•©λ‹ˆλ‹€.

 

μ„œλΈ”λ¦Ώ λ™μž‘ κ³Όμ •

 

ν΄λΌμ΄μ–ΈνŠΈκ°€ μ›Ή μ„œλ²„μ— μš”μ²­μ„ ν•˜λ©΄ μ›Ή μ„œλ²„λŠ” κ·Έ μš”μ²­μ„ ν†°μΊ£κ³Ό 같은 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„(WAS)에 μœ„μž„ν•©λ‹ˆλ‹€. 그러면 WAS λŠ” 각 μš”μ²­μ— ν•΄λ‹Ήν•˜λŠ” μ„œλΈ”λ¦Ώμ„ μ‹€ν–‰ν•©λ‹ˆλ‹€. κ·Έ ν›„ μ„œλΈ”λ¦Ώμ€ μš”μ²­μ— λŒ€ν•œ κΈ°λŠ₯을 μˆ˜ν–‰ν•œ ν›„ κ²°κ³Όλ₯Ό λ°˜ν™˜ν•˜μ—¬ ν΄λΌμ–ΈνŠΈμ—κ²Œ μ‘λ‹΅ν•˜κ²Œ λ©λ‹ˆλ‹€.

 

μ„œλΈ”λ¦Ώμ˜ νŠΉμ§•

  • μ„œλ²„μ—μ„œ μ‹€ν–‰λœλ‹€.
  • 정적인 μ›Ή ν”„λ‘œκ·Έλž¨μ„ λ™μ μœΌλ‘œ μ²˜λ¦¬ν• μˆ˜ 있게 ν•΄μ€€λ‹€.
  • μŠ€λ ˆλ“œ λ°©μ‹μœΌλ‘œ μ‹€ν–‰λœλ‹€.
  • μžλ°” 클래슀이기 λ•Œλ¬Έμ— μžλ°”μ˜ νŠΉμ§•μ„ κ°–λŠ”λ‹€.
  • μ„œλΈ”λ¦Ώ μ»¨ν…Œμ΄λ„ˆ(ν†°μΊ£)μ—μ„œ μ‹€ν–‰λœλ‹€.

 


# μ„œλΈ”λ¦Ώμ˜ 생λͺ…μ£ΌκΈ° λ©”μ„œλ“œ

 

μ„œλΈ”λ¦Ώ 생λͺ…μ£ΌκΈ° λ©”μ„œλ“œλž€ μ„œλΈ”λ¦Ώ μ‹€ν–‰ λ‹¨κ³„λ§ˆλ‹€ ν˜ΈμΆœλ˜μ–΄ κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ” 콜백 λ©”μ„œλ“œλ₯Ό λ§ν•©λ‹ˆλ‹€. μ„œλΈ”λ¦Ώμ˜ 생λͺ…μ£ΌκΈ°λ₯Ό μžμ„Ένžˆ μ•Œμ•„λ³΄κΈ° μœ„ν•΄ μ„œλΈ”λ¦Ώ 클래슀λ₯Ό λ§Œλ“€μ–΄ λ³΄μ—¬λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€.

 

package servletTest.servlet1;

import java.io.IOException;

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

public class FirstServlet extends HttpServlet{
	@Override
	public void init() throws ServletException{ //=> μ„œλΈ”λ¦Ώ 생성
		System.out.println("init λ©”μ„œλ“œ 호좜");
	}
	
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
		System.out.println("doGet λ©”μ„œλ“œ 호좜");//=> μš”μ²­ λ°›μŒ
	}
	
	@Override
	public void destroy() { //=> μ„œλΈ”λ¦Ώ μ’…λ£Œ
		System.out.println("destory λ©”μ„œλ“œ 호좜");
	}
}

 

λ‹€μŒκ³Ό 같이 FirstSevletλ₯Ό λ§Œλ“€μ–΄μ€λ‹ˆλ‹€. HttpServlet 상속을 λ°˜λ“œμ‹œ λ°›μ•„μ•Ό ν•©λ‹ˆλ‹€. 이후 http://127.0.0.1:8090/ν”„λ‘œμ νŠΈμ΄λ¦„/νŒ¨ν‚€μ§€μ΄λ¦„.FirstServlet으둜 ν•΄λ‹Ή μ„œλΈ”λ¦Ώ μš”μ²­μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ 맀번 μ΄λ ‡κ²Œ μš”μ²­ν•˜κΈ°μ—λŠ” 많이 λ²ˆκ±°λ‘œμš°λ‹ˆκΉ web.xmlμ—μ„œ λ‹€μŒκ³Ό 같은 νƒœκ·Έλ₯Ό λ§Œλ“€μ–΄μ€λ‹ˆλ‹€.

(web.xml μ—μ„œ μˆ˜λ™μœΌλ‘œ 말고 μ• λ„ˆν…Œμ΄μ…˜μ„ μ΄μš©ν•˜μ—¬ μžλ™μœΌλ‘œ ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.)

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  <display-name>servletTest</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <servlet><!-- μ‹€μ œλ‘œ 맀핑에 λŒ€ν•΄ μ‹€ν–‰λ˜λŠ” μ„œλΈ”λ¦Ώ 클래슀λ₯Ό μ„€μ •ν•˜λŠ” νƒœκ·Έ-->
  	<servlet-name>firstServlet</servlet-name> <!-- λ°˜λ“œμ‹œ mapping의 μ„œλΈ”λ¦Ώ 이름과 같아야함-->
  	<servlet-class>servletTest.servlet1.FirstServlet</servlet-class> <!-- μ‹€μ œλ‘œ λ§€ν•‘λ˜λŠ” νŒ¨ν‚€μ§€ ν¬ν•¨λœ 클래슀 경둜 -->
  </servlet>
  
  <servlet-mapping><!-- 논리적인 μ„œλΈ”λ¦Ώ 섀정을 μœ„ν•œ νƒœκ·Έ-->
  	<servlet-name>firstServlet</servlet-name> <!-- -->
  	<url-pattern>/first</url-pattern> <!-- url둜 맡핑될 λ•Œ -->
  </servlet-mapping>
</web-app>

 

servlet νƒœκ·Έμ™€ servlet-mapping νƒœκ·Έλ₯Ό λ§Œλ“€μ–΄μ€λ‹ˆλ‹€. 그럼 http://localhost:8090/first 으둜 μš”μ²­μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€. λ§Œμ•½ μ œλŒ€λ‘œ κ΅¬ν˜„μ„ ν–ˆλ‹€λ©΄ λ‹€μŒκ³Ό 같은 μ½”λ“œκ°€ 좜λ ₯λ©λ‹ˆλ‹€.

 

 

그리고 λ§Œμ•½ μ„œλ²„λ₯Ό μ’…λ£Œν•˜μ§€ μ•Šμ€ μƒνƒœμ—μ„œ ν•œλ²ˆ 더 μš”μ²­μ„ ν•˜λ©΄ init λ©”μ„œλ“œλŠ” 호좜이 μ•ˆλ˜κ³  doGet λ©”μ„œλ“œλ§Œ 호좜이 λ©λ‹ˆλ‹€. 

 

doGet λ©”μ„œλ“œ 호좜이 2κ°œμ§€μš”~

 

이처럼 λ™μž‘ν•˜λŠ” 것은 μ„œλΈ”λ¦Ώμ΄ μŠ€λ ˆλ“œ λ°©μ‹μœΌλ‘œ λ™μž‘ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. λ”°λΌμ„œ μ„œλΈ”λ¦Ώμ€ λ©”λͺ¨λ¦¬μ— μ‘΄μž¬ν•˜λŠ” μ„œλΈ”λ¦Ώμ„ μž¬μ‚¬μš©ν•¨μœΌλ‘œμ¨ 훨씬 λΉ λ₯΄κ³  효율적으둜 λ™μž‘ν•  수 있게 λ©λ‹ˆλ‹€.

 

그리고 μ„œλ²„λ₯Ό μ’…λ£Œν•˜λ©΄ destroy λ©”μ„œλ“œ 호좜이 λ©λ‹ˆλ‹€.

 

 

 

μ½μ–΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

μ§ˆλ¬Έμ€ μ–Έμ œλ‚˜ ν™˜μ˜ν•©λ‹ˆλ‹€.

 

"λ‚œ λ°˜λ“œμ‹œ λ°±μ—”λ“œ 왕이 될거야"

λ°˜μ‘ν˜•
profile on loading

Loading...