- ํ๋ฃจ ์ ๋ฆฌ -
- Servlet ๋ณต์ต ๋ฐ ์ ๋ฆฌ
- ์ธ๋ฏธํ๋ก์ ํธ ์งํ์ํฉ ์ ๋ฆฌ
- ์ค๋ ๊ณต๋ถ ๋ด์ฉ -
Servlet
- / : ์ต์์ ๋๋ ํ ๋ฆฌ
- / contextroot ๋๋ ํ ๋ฆฌ (/)๊ฐ ์์ด์ผ ํ๋ ์ด์
- @WebServlet : ์๋ธ๋ฆฟ ํด๋์ค๋ฅผ ์๋ธ๋ฆฟ์ผ๋ก ๋ฑ๋กํ๊ณ URL ์ฃผ์๋ฅผ ๋งคํํ๊ธฐ ์ํ ์ด๋ ธํ ์ด์ (Annotation) ⇒ web.sml ํ์ผ์ servlet ์๋ฆฌ๋จผํธ ๋ฐ servlet-mapping ์๋ฆฌ๋จผํธ์ ๋์ผํ ๊ธฐ๋ฅ ์ ๊ณต
- ์ด๋ ธํ ์ด์ ์์ฑ์ ์ด์ฉํ์ฌ ์๋ธ๋ฆฟ ์ด๋ฆ ๋๋ URL ์ฃผ์์ ๋ํ ๋งคํ ์ฒ๋ฆฌ ๋ฑ์ ์ค์
- @WebServlet ์ด๋ ธํ ์ด์ ์์ฑ์ ์ด์ฉํ์ฌ ์๋ธ๋ฆฟ ์ด๋ฆ ๋๋ URL ์ฃผ์์ ๋ํ ๋งคํ ์ฒ๋ฆฌ๋ฑ์ ์ค์
- ⇒ name ์์ฑ : ์๋ธ๋ฆฟ ์ด๋ฆ์ ์์ฑ๊ฐ์ผ๋ก ์ค์ - name ์์ฑ์ ์๋ตํ๋ฉด ํด๋์ค๋ช ์ ์๋ธ๋ฆฟ
- ⇒ value ์์ฑ (ํ์) : ์๋ธ๋ฆฟ์ ๋ํ ์์ฒญ URL ์ฃผ์๋ฅผ ์์ฑ๊ฐ์ผ๋ก ์ค์ - ๋ค๋ฅธ ์์ฑ์ด ์๋ ๊ฒฝ์ฐ
- ⇒ ์ด๋ ธํ ์ด์ ์์ฑ์ , ๊ธฐํธ๋ก ๊ตฌ๋ถํ์ฌ ๋์ด ๊ฐ๋ฅ
- ์๋ธ๋ฆฟ์ ๋จ์ ์ด ์๋ค. ๋ธ๋ผ์ฐ์ ์ ์ถ๋ ฅํ ๋ฌธ์๋ฅผ ์ง์ ๋ง๋ค์ด์ค์ผ ํ๊ธฐ ๋๋ฌธ.
- webapp ํด๋๋ ์์ฒญ ๋ถ๊ฐ ์๋ฒ๋ง ์ ๊ทผ ๊ฐ๋ฅ (๋ณด์์ ์ํ๋ ์ ๋ณด๋ ํ์ผ๋ค์ด ๋ค์ด์์)
@WebServlet : ์๋ธ๋ฆฟ ํด๋์ค๋ฅผ ์๋ธ๋ฆฟ์ผ๋ก ๋ฑ๋กํ๊ณ URL ์ฃผ์๋ฅผ ๋งคํํ๊ธฐ ์ํ ์ด๋
ธํ
์ด์
(Annotation)
=> [web.xml] ํ์ผ์ servlet ์๋ฆฌ๋จผํธ ๋ฐ servlet-mapping ์๋ฆฌ๋จผํธ์ ๋์ผํ ๊ธฐ๋ฅ ์ ๊ณต
@WebServlet ์ด๋
ธํ
์ด์
์์ฑ์ ์ด์ฉํ์ฌ ์๋ธ๋ฆฟ ์ด๋ฆ ๋๋ URL ์ฃผ์์ ๋ํ ๋งคํ ์ฒ๋ฆฌ ๋ฑ์ ์ค์
=> name ์์ฑ : ์๋ธ๋ฆฟ ์ด๋ฆ์ ์์ฑ๊ฐ์ผ๋ก ์ค์ - name ์์ฑ์ ์๋ตํ๋ฉด ํด๋์ค๋ช
์ ์๋ธ๋ฆฟ ์ด๋ฆ์ผ๋ก ์๋ ์ค์
=> value ์์ฑ(ํ์) : ์๋ธ๋ฆฟ์ ๋ํ ์์ฒญ URL ์ฃผ์๋ฅผ ์์ฑ๊ฐ์ผ๋ก ์ค์ - ๋ค๋ฅธ ์์ฑ์ด ์๋ ๊ฒฝ์ฐ ์์ฑ๊ฐ๋ง ์ค์ ๊ฐ๋ฅ
=> ์ด๋
ธํ
์ด์
์์ฑ์ , ๊ธฐํธ๋ก ๊ตฌ๋ถํ์ฌ ๋์ด ๊ฐ๋ฅ
@WebServlet("/first.itwill")
// ์ด๋ฆ ์๋ต ๋ฐ URL ์ฃผ์ ๋งคํ ์ด๋ ๊ฒ ํ๋ฉด web.XML ํ์ผ์ mapping๊ณผ ๋์ผ
์๋ฒ์ ์ ์ฅ๋ ์ด๋ฏธ์ง ํ์ผ์ ์์คํ
๊ฒฝ๋ก๋ฅผ ๋ฐํ๋ฐ์ ์ ์ฅ
HttpServletRequest.getServletContext() : ServletContext ์ธ์คํด์ค๋ฅผ ๋ฐํํ๋ ๋ฉ์๋
ServletContext : ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ์ปจํ
์คํธ ์ ๋ณด๋ฅผ ์ ์ฅํ ์ธ์คํด์ค
์ปจํ
์คํธ(Context) : ์น์๋ฒ(WAS)์ ์ํด ์ฌ์ฉ๋ ์ ์๋ ์์ - HTML ๋ฌธ์, ์ด๋ฏธ์ง ํ์ผ ๋ฑ
ServletContext.getRealPath(String contextFilePath) : ์ปจํ
์คํธ ํ์ผ์ ์์คํ
๊ฒฝ๋ก๋ฅผ ๋ฐํํ๋ ๋ฉ์๋
String filePath=request.getServletContext().getRealPath("/WEB-INF/Koala.jpg");
// ํด๋น ๊ฒฝ๋ก์ ์ด๋ฏธ์ง(ํ์ผ)์ ์ ๊ทผํ์ฌ ๋ณ์์ ์ ์ฅ
์๋ธ๋ฆฟ ์์ฒญ ์ ์ ๋ฌ๋ ๊ฐ (์ฌ์ฉ์ ์
๋ ฅ ๊ฐ)์ ๋ฐํ๋ฐ์ ์ ์ฅ
HTTPServletRequest.getParameter(String name) : ์นํ๋ก๊ทธ๋จ ์์ฒญ ์ ์ ๋ฌ๋ ๊ฐ์ ์ป์ด์ ๋ฐํํ๋ ๋ฉ์๋ - ์ ๋ฌ๊ฐ์ ๋ฌด์กฐ๊ฑด ๋ฌธ์์ด(String ์ธ์คํด์ค)๋ก ๋ฐํ
=> GET : QueryString์ผ๋ก ์ ๋ฌ๋ ๊ฐ์ ์ด๋ฆ(์๋ณ์)์ ์ด์ฉํ์ฌ ์ ๋ฌ๊ฐ ๋ฐํ
=> POST : ์
๋ ฅํ๊ทธ์ name ์์ฑ๊ฐ์ ์ด์ฉํ์ฌ ์ ๋ฌ๊ฐ ๋ฐํ
์ด๋ฆ(name)์ ํด๋นํ๋ ์ ๋ฌ๊ฐ์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ null ๋ฐํ
=> GET ๋ฐฉ์์์๋ ์ด๋ฆ๋ง ์๊ณ Null String ๋ฐํ
String id = request.getParameter("id");
//ํด๋น id๋ฅผ ์์ฒญ ์ ์ ๋ฌ๋ ๊ฐ์ HTML์์ ๊ฐ์ ธ์จ๋ค.
<tr>
<th bgcolor="44ff44"><font size="2">์์ด๋</font></th>
<td bgcolor="white" width="300"><input type="text" size="10"
name="id" class="TXTFLD"></td>
</tr>
=> ์๋์์ ๊ฐ์ ธ์ด
<!-- context-param : ๋ชจ๋ ์ปจํ
์คํธ(์นํ๋ก๊ทธ๋จ)์๊ฒ ํ์ํ ๊ฐ์ ์ ๊ณตํ๊ธฐ ์ํ ๋ถ๋ชจ ์๋ฆฌ๋จผํธ -->
<context-param>
<!-- param-name : ๊ฐ์ ์ ๊ณตํ๊ธฐ ์ํ ์ด๋ฆ(์๋ณ์)๋ฅผ ์ค์ ํ๋ ์๋ฆฌ๋จผํธ -->
<param-name>babico</param-name>
<!-- param-name : ์ ๊ณตํ ๊ฐ์ ์ ๊ณต์ ์ค์ ํ๋ ์๋ฆฌ๋จผํธ -->
<param-value>๋น ์์ฝ</param-value>
</context-param>
์๋ธ๋ฆฟ(์นํ๋ก๊ทธ๋จ)์ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ์ํด WAS(Web Application Server)์ ๋ฑ๋ก๋ ์๋ธ๋ฆฟ
ํด๋์ค๋ฅผ ์ฝ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ณ ์๋ธ๋ฆฟ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ฌ service() ๋ฉ์๋๋ฅด ํธ์ถํด ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌ(์๋ต)
-> ์๋ธ๋ฆฟ ์ธ์คํด์ค๊ฐ ์ด๋ฏธ ์กด์ฌํ ๊ฒฝ์ฐ ์ธ์คํด์ค๋ฅผ ์์ฑํ์ง ์๊ณ ๊ธฐ์กด ์๋ธ๋ฆฟ ์ธ์คํด์ค๋ก service() ๋ฉ์๋ ํธ์ถ -> ์๋ธ๋ฆฟ ์ธ์คํด์ค๋ WAS๊ฐ ์ข
๋ฃ๋๋ฉด ์๋ฉธ.
-> WAS ํ๋ก๊ทธ๋จ์ ์ฃผ์ ๊ธฐ๋ฅ ์ค ํ๋๋ ์๋ธ๋ฆฟ ๊ด๋ จ ์ธ์คํด์ค๋ฅผ ๊ด๋ฆฌํ๋ ์ปจํ
์ด๋(Container) ๊ธฐ๋ฅ
Container? ์ธ์คํด์ค์ ์๋ช
์ฃผ๊ธฐ(LifeCycle)๋ฅผ ๊ด๋ฆฌ(create, use, extinction) ํ๋ ํ๋ก๊ทธ๋จ
์์ฑ์๋?
์์ฑ์(Constructor) : ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ธฐ ์ํ ํน๋ณํ ๋ฉ์๋
=> ์ด๊ธฐํ ์์
: ํ๋ ์ด๊ธฐ๊ฐ ์ ์ฅ
=> ํด๋ผ์ด์ธํธ ์์ฒญ ์ WAS ํ๋ก๊ทธ๋จ์ ์ํด ์๋ธ๋ฆฟ ํด๋์ค๋ฅผ ์ธ์คํด์ค๋ก ์์ฑํ
init()?
init() : WAS ํ๋ก๊ทธ๋จ์ด ์๋ธ๋ฆฟ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ ๊ฐ์ฅ ๋จผ์ ํ๋ฒ๋ง ํธ์ถํ๋ ๋ฉ์๋
=> ์์ฑ์ ๋์ init() ๋ฉ์๋๋ก ํ๋ ์ด๊ธฐํ ์์
์์ฑ์ ๋์ init() ๋ฉ์๋๋ก ์ด๊ธฐํ ์์
์ ํ๋ ์ด์ ๋ ServletConfig ์ธ์คํด์ค๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ ๊ณต๋ฐ์ ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ํ์ํ ๊ฐ์ ํ๋๊ฐ์ผ๋ก ์ ์ฅ ๊ฐ๋ฅ
ServletConfig : ์ปจํ
์คํธ ๊ด๋ จ ํ๊ฒฝ์ ๋ณด๋ฅผ ์ ์ฅํ ์ธ์คํด์ค
=> [web.xml] ํ์ผ์ ์ค์ ๋ ๊ฐ์ ์ ๊ณต๋ฐ์ ์ฌ์ฉ ๊ฐ๋ฅ - ์ ์ง๋ณด์์ ํจ์จ์ฑ ์ฆ๊ฐ
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("### LifeCycleServlet ํด๋์ค์ init() ๋ฉ์๋ ํธ์ถ ###");
// ServletCongig.getServletContext() : ServletContext ์ธ์คํด์ค๋ฅผ ๋ฐํํ๋ ๋ฉ์๋
// ServiceContext.getInitParameter(String name) : [web.xml] ํ์ผ์ context-param
// ์๋ฆฌ๋จผํธ๋ก ์ ๊ณต๋๋ ๊ฐ์ ์ป์ด์ ๋ฐํํ๋ ๋ฉ์๋
babico = config.getServletContext().getInitParameter("babico");
}
=>> init() ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ ํ ์ฌ์ ์
destroy()?
destroy() : WAS ํ๋ก๊ทธ๋จ์ด ์๋ธ๋ฆฟ ์ธ์คํด์ค๋ฅผ ์๋ฉธํ๊ธฐ ์ ์ ํ๋ฒ๋ง ํธ์ถํ๋ ๋ฉ์๋
=> WAS ํ๋ก๊ทธ๋จ ์ข
๋ฃ ์ ์๋ธ๋ฆฟ ์ธ์คํด์ค๋ WAS ํ๋ก๊ทธ๋จ์ ์ํด ์๋ฉธ
@Override
public void destroy() {
System.out.println("### LifeCycleServlet ํด๋์ค์ destroy() ๋ฉ์๋ ํธ์ถ ###");
}
- ์ธ๋ฏธ ํํ -
> ๊ฐ ํ์ด์ง ํฌ๋กค๋ง ํ ๋ชฉ์์ผ๊น์ง ๊ตฌ๊ธ ppt ๊ณต์ ๋๋ผ์ด๋ธ ์ด์ฉํด์ ํ๋ฉด ์ ์์ ๋ง๋ค๊ฒ ์ํค๊ธฐ
> ์์ค ๋ฐ์ ๊ฑฐ import ์์ผ๋ณด๊ธฐ
- ์คํฐ๋ ๋ด์ฉ ๋ฐ ๊ฒฐ๊ณผ -
=> configContext, ServletContext์ ์ฐจ์ด์ ๋ฐ๋ก ์๊ธฐ
=> ์น ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ ๋ํ servlet์ ์ญํ ๋ฐ๋ก ์๊ธฐ
'๋ ๊ฑฐ์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
2022.1.7์ ๊ธฐ๋ก (0) | 2022.01.07 |
---|---|
2022.1.6์ ๊ธฐ๋ก (0) | 2022.01.07 |
2021.1.4์ ๊ธฐ๋ก (0) | 2022.01.04 |
2022.1.3์ ๊ธฐ๋ก (0) | 2022.01.03 |
2022.1.2์ ๊ธฐ๋ก (25์ด์ ์ฒซ ์ผ์์ผ) (1) | 2022.01.02 |