μ‹œνλ¦¬ν‹°μ§€ν˜Έ 2024. 1. 28. 15:17

1. Servlet κ°œμš”

Servlet은 주둜 μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„μ—μ„œ λ™μž‘ν•˜λŠ” ν”„λ‘œκ·Έλž¨ κ΅¬ν˜„ μ‹œ μ‚¬μš©ν•œλ‹€. 

λ™μ‹œ μ ‘μ†μžκ°€ λŠ˜μ–΄λ‚˜λ©΄ 효율이 λ–¨μ–΄μ§€λŠ” CGI기술의 λŒ€μ•ˆμœΌλ‘œ λ“±μž₯ν–ˆλ‹€.

 

μ„œλΈ”λ¦Ώμ€ ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ— 따라 μ„œλ²„κ°€ μ‹€ν–‰ν•  수 μžˆλŠ” μœ μΌν•œ μžλ°” 파일 이라고 λ³Ό 수 μžˆλ‹€.

 

μ„œλΈ”λ¦Ώμ„ λ™μž‘μ‹œν‚€κΈ° μœ„ν•œ 쑰건은 μ„œλΈ”λ¦Ώ APIλ₯Ό 톡해 μ œκ³΅λ°›μ€ 수 있으며, μ„œλΈ”λ¦Ώμ„ κ΅¬ν˜„ν•  λ•Œ ν•΄λ‹Ή API인

 

javax.servelt.http.HttpSevlet 만 상속 λ°›μœΌλ©΄ λœλ‹€.

 

class HelloServlet extends HttpServlet {}

 

 

2. Servlet 생성 및 λ™μž‘ 원리

1. Servlet Container(ex. Apache Tomcat)

 

μ„œλΈ”λ¦Ώ μ»¨ν…Œμ΄λ„ˆλž€ Java 기반 μ›Ή ν”„λ‘œκ·Έλž¨μ—μ„œ μ‚¬μš©λ˜λŠ” Servlet 클래슀(ex. FirstServlet.java)λ₯Ό κ΄€λ¦¬ν•˜λŠ” κ³΅κ°„μœΌλ‘œ, μ›Ή μ»¨ν…Œμ΄λ„ˆ, Tomcat μ»¨ν…Œμ΄λ„ˆλΌκ³  ν‘œν˜„ν•˜κΈ°λ„ 함.

 

2. μ‚¬μš©μž μš”μ²­(Request)에 λ”°λ₯Έ μ„œλ²„μ˜ 응닡(Response) 흐름

 

Sending a Request - μš”μ²­ 전솑

 μ„œλ²„κ°€ μ‚¬μš©μž(Client)λ‘œλΆ€ν„° νŠΉμ • URL 경둜둜 μš”μ²­(Request)을 λ°›λŠ”λ‹€.

 

Instantiate a Servlet - μ„œλΈ”λ¦Ώ 객체 생성(μΈμŠ€ν„΄μŠ€ν™”)

μ„œλΈ”λ¦Ώ μ»¨ν…Œμ΄λ„ˆλŠ” web.xml νŒŒμΌμ΄λ‚˜ @WebServlet 으둜 λ§΅ν•‘λœ 정보λ₯Ό ν† λŒ€λ‘œ μš”μ²­ 받은 URL에 λ§΅ν•‘λœ μ„œλΈ”λ¦Ώ 클래슀λ₯Ό μΈμŠ€ν„΄μŠ€ν™” ν•œλ‹€.

 

Processing the business logic - μš”μ²­μ— λ”°λ₯Έ 처리 둜직 μˆ˜ν–‰

 μƒμ„±λœ 클래슀 λ‚΄ λ©”μ„œλ“œμ— μž‘μ„±λœ μ†ŒμŠ€ μ½”λ“œλ₯Ό μ‹€ν–‰

 

Response to the Client - μ‚¬μš©μžμ—κ²Œ κ²°κ³Ό 응닡

κ²°κ³Ό 데이터 or νŽ˜μ΄μ§€λ₯Ό μ‚¬μš©μžμ—κ²Œ 응닡(Response)

 

 

3. μš”μ²­μ— μ‚¬μš©λœ μ„œλΈ”λ¦Ώ 객체 μž¬μ‚¬μš© 방식

 μ‚¬μš©μžμ˜ μš”μ²­μ— μ˜ν•΄ μƒμ„±λœ μ„œλΈ”λ¦Ώ κ°μ²΄λŠ” μ„œλΈ”λ¦Ώ μ»¨ν…Œμ΄λ„ˆ 내뢀에 λ³΄κ΄€ν•˜κ³  

이후에 λ™μΌν•œ 경둜둜 μš”μ²­μ΄ 올 경우, λ³΄κ΄€ν•˜κ³  있던 μ„œλΈ”λ¦Ώμ„ μž¬μ‚¬μš©ν•œλ‹€.

λ§€ μš”μ²­  μ‹œλ§ˆλ‹€ μƒˆλ‘­κ²Œ μ„œλΈ”λ¦Ώ 객체λ₯Ό μƒμ„±ν•˜μ§€ μ•ŠμŒ!

 

4. μ œμ–΄μ˜ μ—­μ „ Inversion of Control, IoC

- Java SE 기반의 μ½˜μ†”(Console) ν”„λ‘œκ·Έλž¨

 Java SE 기반의 μ½˜μ†” ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•  λ•ŒλŠ” κ°œλ°œμžκ°€ 직접 μΈμŠ€ν„΄μŠ€λ₯Ό μž‘μ„± 및 κ΄€λ¦¬ν•˜λŠ” λ°©μ‹μœΌλ‘œ, μž‘μ„±ν•œ μ½”λ“œλŠ” main() λ‚΄λΆ€μ—μ„œ μˆ˜ν–‰λ˜μ—ˆλ‹€.

-> ν”„λ‘œκ·Έλž¨μ— λŒ€ν•œ μ œμ–΄κΆŒμ΄ κ°œλ°œμžν•œν…Œ μžˆλ‹€.

 

- Java EE 기반 μ»¨ν„°μ΄λ„ˆ λ°©μ‹μ˜ μ›Ή μ„œλ²„ν”„λ‘œκ·Έλž¨, Servlet/JSP

 main() κ°€ 사라지고 ν”„λ‘œκ·Έλž¨, 더 μ •ν™•ν•˜κ²ŒλŠ” μ„œλ²„λ₯Ό μ‹€ν–‰ν•˜λ©΄ μ„œλ²„μ˜ λ™μž‘μ— ν•„μš”ν•œ λͺ¨λ“  μΈμŠ€ν„΄μŠ€λ“€μ€ κ°œλ°œμžκ°€ μ•„λ‹Œ μ»¨ν…Œμ΄λ„ˆκ°€ 생성, κ΄€λ¦¬ν•˜λŠ” 방식

-> ν”„λ‘œκ·Έλž¨ 흐름, λ™μž‘μ— λŒ€ν•œ μ œμ–΄κΆŒμ΄ κ°œλ°œμžμ—μ„œ μ»¨ν…Œμ΄λ„ˆλ‘œ λ³€κ²½λœλ‹€.