WAS(Web Application Server): ์น์๋ฒ์ ์ํด ์ ์๋์ด์ง ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ํด ์๋ธ๋ฆฟ์ ์คํ์ํค๋ ์ํํธ์จ์ด(์ปจํ
์ด๋/์๋ธ๋ฆฟ์ปจํ
์ด๋)
HttpServletํด๋์ค : ์๋ธ๋ฆฟ ํด๋์ค๊ฐ ์์๋ฐ์์ผ ํ๋ ํด๋์ค
์๋ธ๋ฆฟ ๋งคํ: ํน์ ์๋ธ๋ฆฟ์ ์์ฒญ, ๊ฐ๋จํ๊ฒ ๊ฒฝ๋ก๋ฅผ ํํํ๊ณ ์ ์ค์ ํ๋ ๊ฒ
์๋ธ๋ฆฟ url๋งคํ ์ค์ ๋ฐฉ์ : ์ด๋
ธํ
์ด์
๋ฐฉ์, xml ๋ฐฉ์, @WebServlet
Request.getServletContext(): ์๋ธ๋ฆฟ ํด๋์ค์์ ์๋ฒside์ ์ ๋ณด์ ์ฅ์ ์ํ application ๊ฐ์ฒด ๋ฉ์๋
Request.getSession(): HttpSession๊ฐ์ฒด
Cookie๋ ํด๋ผ์ด์ธํธ side์ ์ ๋ณด ์ ์ฅ
Response๊ฐ์ฒด: ์ ๋ณด๊ฐ ์ ์ฅ๋ ์ฟ ํค๋ฅผ ํด๋ผ์ด์ธํธ์ ์ ์ฅํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ฐ์ฒด
์๋ธ๋ฆฟ ํด๋์ค์ ๋ฉ์๋: service(),doGet(), doPost()
Dispatcher(RequsetDispatcher): MVC๋ชจ๋ธ์์ controller์ ๊ฒฐ๊ณผ๋ฅผ view jspํ์ด์ง๋ก ์ฐ๊ฒฐํด์ฃผ๋ ๊ฐ์ฒด
์๋ธ๋ฆฟ ํํฐ ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ๋ชฉ์ : ๊ณตํต์ ์ธ ๊ธฐ๋ฅ์ ํธ์ถ ์ /ํ์ ์คํ์ํค๊ณ ์ถ์ ๋
์๋ธ๋ฆฟ ํํฐ ํด๋์ค๋ฅผ ๋ฑ๋กํด๋๋ ๋ฐฉ๋ฒ: web.xml์ ๋ฑ๋กํ๊ฑฐ๋ ์ด๋
ธํ
์ด์
๋ฐฉ์์ผ๋ก ์ค์
์๋ธ๋ฆฟ ๊ฐ์ฒด๊ฐ ๋ง๋ค์ด์ง๋ ์์ ์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ์์ ๋
์๋ธ๋ฆฟ ๊ฐ์ฒด์ ๋ผ์ดํ ์ฌ์ดํด์ ์๋ธ๋ฆฟ ์ปจํ
์ด๋์ ์ํด์ ๊ด๋ฆฌ
์๋ธ๋ฆฟ(๊ฐ์ฒด): ํด๋ผ์ด์ธํธ์ ์์ฒญ ์ฒ๋ฆฌ๋ฅผ ํ๊ธฐ ์ํ ์๋ฒ์ worker
์คํ๋ง ํ๋ ์์ํฌ์ ์ฅ์ : ๋น ๋ฅธ ๊ตฌํ ์๊ฐ, ์ฌ์ด ๊ด๋ฆฌ, ๊ฐ๋ฐ์๋ค์ ์ญ๋ ํ์ผํ, ๊ฒ์ฆ๋ ์ํคํ
์ณ์ ์ฌ์ฌ์ฉ๊ณผ ์ผ๊ด์ฑ ์ ์ง
์คํ๋ง ํ๋ ์์ํฌ์ ํน์ง: ๊ฒฝ๋(POJO), IoC, ๊ด์ ์งํฅํ๋ก๊ทธ๋๋ฐ(AOP) ์ง์, ์ปจํ
์ด๋ ์ญํ
๊ฒฐํฉ๋: ํ๋์ ํด๋์ค๊ฐ ๋ค๋ฅธ ํด๋์ค์ ์ผ๋ง๋ ๋ง์ด ์ฐ๊ฒฐ๋์ด ์๋ ์ง
๋คํ์ฑ๊ณผ ๋์์ธ ํจํด(Factory)์ด์ฉํ์ฌ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถค
Maven๋ฉ์ด๋ธ: ์คํ๋ง ํ๋ก์ ํธ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ build ๊ด๋ฆฌํด
Pom.xml: ๊ด๋ฆฌํด์ ๋น๋์ ์ฌ๋ฌ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ํ์ผ
Bean: ์คํ๋ง ์ปจํ
์ด๋์ ๊ด๋ฆฌ๋์ด ์ง์ ์๋ฐ ๊ฐ์ฒด
์คํ๋ง ์ปจํ
์ด๋์ ๋ก๋ฉ ์์
1.์ปจํ
์ด๋ ์์ฑ 2. Bean์ด ๋ค์ด์๋ xml ์ค์ ํ์ผ ์ฝ์ 3.xmlํ์ผ์ ๋ฑ๋ก๋ bean๋ค์ lifecycle๊ณผ dpendency๊ฐ ๊ด๋ฆฌ
Singleํค: bean ๊ฐ์ฒด์ scope ๊ธฐ๋ณธ ์์ฑ๊ฐ
Ioc: Inversion of control, ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ ๊ฐ๋ฐ์๊ฐ ์๋ ํ๋ ์์ํฌ๊ฐ ์ฃผ๋
DI: Dependency Injection, ์ปจํ
์ด๋๊ฐ ์์กด๊ด๊ณ๋ฅผ Bean์ค์ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ์๋์ผ๋ก ์ฐ๊ฒฐ
DI ๊ตฌํ ๋ฐฉ๋ฒ : setter injection, constructor injection
<bean id=โtvโ class=โpoly.sam.TVโ> -> ์๋ฐ์ฝ๋ : SamsaugTv tv= new SamsaungTV();
์๋ธ๋ฆฟ ํด๋์ค
- HttpServlet ์ถ์ ํด๋์ค: ์๋ธ๋ฆฟ ํด๋์ค๊ฐ ๋ฌด์กฐ๊ฑด ์์๋ฐ์์ผ ํ๋ ํด๋์ค( javax๋ผ๋ ํจํค์ง ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์)
- HttpServlet ์ถ์ํด๋์ค๋ฅผํตํด์๋ธ๋ฆฟ์๊ฐ์ฒด๋ฅผ์ฐ์ด๋ผ์์๋FirstServlet์ด๋ผ๋ํด๋์ค์์ฑ
- ์ถ์ ํด๋์ค ์์ ๋ค์ด์๋ ์ค์ ๋ฉ์๋ : service ์ค๋ฒ๋ผ์ด๋ฉ ํ๊ธฐ
- cd /Users/kimjihyun/spring
- javac -cp /Applications/apache-tomcat-8.5.76/lib/servlet-api.jar FirstServlet.java
servlet ํด๋์คํ์ผ์์น
์ํ์นํฐ์บฃ- webapps - ROOT - WEB-INF - classes
WEB-INF ํด๋ : ํด๋ผ์ด์ธํธ๊ฐ ์ง์ ์ด์ธ์ค ํ ์ ์์(์ธ๋ถ์์ ์ ๊ทผ x)
ํด๋ผ์ด์ธํธ๊ฐ ์ ๊ทผ ๋์ด์ง์ง ์๋ ํ๊ฒฝ์ค์ ์ด๋ ๋ณดํธ๋์ด์ผ ํ ํ์ผ๋ค์ ๋ง์๋
์๋ธ๋ฆฟ ๋งคํ
- ํน์ servlet ์์ฒญ ํ๊ฑฐ๋ ์ ์ฒด ๊ฒฝ๋ก์ url์ ์์ฒญํ๋ฉด ๋ณต์กํ๊ณ ๋ณด์์๋ ์ทจ์ฝํ๊ธฐ ๋๋ฌธ์
๊ฐ๋จํ๊ฒ ๊ฒฝ๋ก๋ฅผ ํํํ๊ณ ์ ์ค์ ํ๋ ๊ฒ
- ํด๋ผ์ด์ธํธ์ request - naver,com/edit -> ์น์๋ฒ+WAS๊ฐ ์๋ฒ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ธ ์์ A3๋ก ๊ฐ-> <web.xml>์ด ์์ฒญ(url)์ ๋ํด๋งคํ๋ ์๋ธ๋ฆฟ ์ฝ๋๋ฅผ ์ฐพ์์ WAS๊ฐ ์คํ
- naver,com/edit ๊ณผ ๊ธ ์์ A3 ์ด ๋ ๊ฐ์ ์ฝ๋๋ฅผ ์ฐ๊ฒฐ ์์ผ์ฃผ๋ ํ๊ฒฝ์ค์ ์ ๋งคํ์ด๋ผ ํจ
- WEB-INF๋ ํด๋ผ์ด์ธํธ๊ฐ ์ง์ ์ ๊ทผ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ ๋งคํ์ด๋ผ๋ ์์ ์ ํตํด์ ์์ฒญ ์ฃผ์ ์ธํ
- WAS๋ ๋งคํ ๋์ด์๋ ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํด๋น ์๋ธ๋ฆฟ ์ฝ๋๋ฅผ ์ฐพ์์ ์คํ
servlet ์น ์
/์ถ๋ ฅapi
- serviceํด๋์ค: ๋ฉ์ธ ๋ฉ์๋,์์ ๋ฉ์๋, ์๋์ผ๋ก ํธ์ถ๋์ด์ง๋ ๋ฉ์๋ (servlet ํด๋์ค์ ๋ฉ์ธ์ ํด๋น)
Servlet ์์ฑ ๋ฐ ์์ -> ํด๋์ค ํ์ผ๋ก ์ปดํ์ผ -> ํด๋์ค ํ์ผ์ ์คํ ์์น๋ก ์ด๋(classes) -> ์น์๋ฒ ์ฌ์์ -> ๋ธ๋ผ์ฐ์ ๋ก requestํ์ฌ ํ์ธ
'TIL > ๐ฟ SPRING' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ฐ๋ฐ ํ๊ฒฝ์ ๋ถ๋ฆฌํด๋ณด์ : Springboot 3 (์ด์, ๊ฐ๋ฐ, ํ ์คํธ) (0) | 2024.05.08 |
---|---|
๋ฌธ์ํ๋ฅผ ์ํ Spring Boot Swagger (0) | 2024.05.03 |
JPA-DB ์ฐ๊ฒฐํ๊ธฐ (0) | 2023.03.17 |
์คํ๋ง ์์กด์ฑ ์ฃผ์ (0) | 2023.03.15 |