Servlet

Servlet์ ์ ์ด๋ก์ ์์์ ๋น์ฆ๋์ค ๋ก์ง ์คํ ๋ถ๋ถ์ ์ ์ธํ ๋ชจ๋ ๋ถ๋ถ์ ๋ค ์๋ํ ํด์ค๋ค.
๋์ ์น์ดํ๋ฆฌ์ผ์ด์ ์ปดํฌ๋ํธ
ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋์ ์ผ๋ก ์๋ํ๊ณ , ์๋ต์ html์ ์ด์ฉ.
java thread์ด์ฉํ์ฌ ๋์(๊ฐ์ฅ ํฐ ๊ฐ์ )
thread๋ฅผ ์ด์ฉํด ์๋ฒ์ ๋ถํ๊ฐ ์ ๋ค.
MVCํจํด์์ Controller๋ก ์ด์ฉ๋จ.
Servlet ๊ธฐ๋ณธ ๊ตฌํ
Servlet Class๋ HttpServlet ํด๋์ค๋ฅผ ์์๋ฐ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ Servlet ์ธํฐํ์ด์ค์ GenericServlet, HttpServlet์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค.

Servlet์ ์คํ ์์๋ ๊ฐ๋ฐ์๊ฐ ๊ด๋ฆฌํ๋ ๊ฒ ์๋ Servlet Container๊ฐ ๊ด๋ฆฌ๋ฅผ ํ๋ค. Servlet์ ์ํด ์ฌ์ฉ์๊ฐ ์ ์ํ Servlet ๊ฐ์ฒด๊ฐ ์์ฑ๋๊ณ ํธ์ถ๋๊ณ ์ฌ๋ผ์ง๋ค.
์ด๋ ๊ฒ ๊ฐ๋ฐ์๊ฐ ์๋ ํ๋ก๊ทธ๋จ์ ์ํด ๊ฐ์ฒด๋ค์ด ๊ด๋ฆฌ๋๋ ๊ฒ์ IoC(Inversion of Control)๋ผ๊ณ ํ๋ค.
@WebServlet: ์๋ธ๋ฆฟ ์ด๋ ธํ ์ด์ name: ์๋ธ๋ฆฟ ์ด๋ฆ
urlPatterns: url ๋งคํ
HTTP ์์ฒญ์ ํตํด ๋งคํ๋ url์ด ํธ์ถ๋๋ฉด ์๋ธ๋ฆฟ ์ปจํ
์ด๋๋ ๋ค์ ๋ฉ์๋(protected void service(HttpServletRequest request, HttpServletResponse response))๋ฅผ ์คํํ๋ค.
์์ฒญ / ์๋ต ์ฒ๋ฆฌ
์์ฒญ ์ฒ๋ฆฌ ๊ฐ์ฒด ๋ฐ ์๋ต ์ฒ๋ฆฌ ๊ฐ์ฒด๋ฅผ Tomcat์์ ๋ฐ๋๋ค.
HttpServletRequest
ํด๋ผ์ด์ธํธ์ ์์ฒญ ์ฒ๋ฆฌ ๊ฐ์ฒด
HTTP ์์ฒญ ๋ฉ์์ง๋ฅผ ์ง์ ํ์ฑํด์ ์ฌ์ฉํด๋ ๋์ง๋ง, ๋งค์ฐ ๋ถํธํ ๊ฒ์ด๋ค. ์๋ธ๋ฆฟ์ ๊ฐ๋ฐ์๊ฐ HTTP ์์ฒญ ๋ฉ์์ง๋ฅผ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๊ฐ๋ฐ์ ๋์ ์ HTTP ์์ฒญ ๋ฉ์์ง๋ฅผ ํ์ฑํ์ฌ, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ HttpServletRequest ๊ฐ์ฒด์ ๋ด์์ ์ ๊ณตํด์ค๋ค.
HTTP ์์ฒญ ๋ฉ์ธ์ง
START LINE
HTTP ๋ฉ์๋
URL
์ฟผ๋ฆฌ ์คํธ๋ง
์คํค๋ง, ํ๋กํ ์ฝ
ํค๋
๋ฐ๋
form ํ๋ผ๋ฏธํฐ ํ์ ์กฐํ
message body ๋ฐ์ดํฐ ์ง์ ์กฐํ
์์ ์ ์ฅ์ ๊ธฐ๋ฅ
ํด๋น HTTP ์์ฒญ์ด ์์๋ถํฐ ๋๋ ๋๊น์ง ์ ์ง๋๋ ์์ ์ ์ฅ์ ๊ธฐ๋ฅ
์ ์ฅ :
request.setAttribute(name, value)์กฐํ:
request.getAttribute(name)
์ธ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ
request.getSession(create: true)
HttpServletRequest ๋ก ์กฐํํ ์ ์๋ ์ ๋ณด๋ค์ ์กฐํํด๋ณด๋ ์์ ์ด๋ค.
์์ฒญ ๋ฐ์ดํฐ
GET : ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ
url?username=hello&age=30
๋ฉ์ธ์ง ๋ฐ๋ ์์ด url์ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ์ ๋ฐ์ดํฐ๋ฅผ ํฌํจํด์ ์ ๋ฌ
๊ฒ์, ํํฐ, ํ์ด์ง๋ฑ์์ ๋ง์ด ์ฌ์ฉ
ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ด ํ๊ฐ์ธ๋ฐ, ๊ฐ์ด ์ฌ๋ฌ๊ฐ๊ฐ ๋์ด์ค๋ ๊ฒฝ์ฐ์๋
request.getParameterValues๋ฅผ ์ฌ์ฉํด์ ์ค๋ณต๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์์ผ๋ฉฐ,request.getParameter๋ ์ฌ๋ฌ๊ฐ์ ๊ฐ์ค ์ฒซ๋ฒ์งธ ๊ฐ์ ๋ฐํํ๋ค.์ฌ๊ธฐ์๋ ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋, HTTP ๋ฉ์ธ์ง ๋ฐ๋๋ฅผ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์, content-type์ด ์๋ค.
POST : HTML-form ๋ฐฉ์
content-type: application/x-www-form-urlencoded๋ฉ์ธ์ง ๋ฐ๋์ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ํ์์ผ๋ก ์ ๋ฌ(username=hello&age=30)
ํ์๊ฐ์ , ์ํ ์ฃผ๋ฌธ, HTML form ์ฌ์ฉ
form ์ ์ก์ผ๋ก ํ๊ฒ ๋๋ ๊ฒฝ์ฐ์ input์ ๋์ด์ค๋ ๋ฐ์ดํฐ๊ฐ ์ ๋ฌ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
request.getParameter()๋ GET๊ณผ POST ํ์ ๋๊ฐ ๋ค ์ง์ํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค. POST HTML form ํ์์ HTTP ๋ฉ์ธ์ง ๋ฐ๋์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ํฌํจํด์ ๋ณด๋ด๊ธฐ๋๋ฌธ์ ๋ฐ๋์ ํฌํจ๋ ๋ฐ์ดํฐ๊ฐ ์ด๋ค ํ์์ธ์งcontent-type์ ๋ฐ๋์ ์ง์ ํด์ ๋ณด๋ด์ผํ๋ค. Form ํ์์application/x-www-form-urlencodedํ์์ด๋ค.HTTP message body
HTTP API์์ ์ฃผ๋ก ์ฌ์ฉ
JSON, XML, TEXT(์ฃผ๋ก JSON ์ฌ์ฉ)
POST,PUT,PATCH
HttpServletResponse
ํด๋ผ์ด์ธํธ ์๋ต ์ฒ๋ฆฌ ๊ฐ์ฒด
HTTP ์๋ต์ฝ๋ ์ง์
ํค๋ ์์ฑ
๋ฐ๋ ์์ฑ
ํธ์ ๊ธฐ๋ฅ ์ ๊ณต
Content-Type, Cookie, Redirect

์์์ ์ค์ ํ ๊ฐ์ด Response Header์ ์ค์ ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ฟ ํค, redirect ์ค์

์๋ต ๋ฐ์ดํฐ
๋จ์ ํ ์คํธ ์๋ต
HTML ์๋ต :
text/html์ง์ ํ์HTTP API - MessageBody JSON ์๋ต
application/json์ ์คํ์ utf-8 ํ์์ ์ฌ์ฉํ๋๋ก ์ ์๋์ด ์์ผ๋ฉฐ,charset=utf-8๊ณผ ๊ฐ์ ์ถ๊ฐ ๋ฐ๋ผ๋ฏธํฐ๋ ์ง์ํ์ง ์๋๋ค. ์ฆ,application/json;charset=utf-8์ ์๋ฏธ ์๋ ํ๋ผ๋ฏธํฐ๊ฐ ์ถ๊ฐ๋ ๊ฒ์ด๊ณ ,response.getWriter()๋ฅผ ์ฌ์ฉํ๋ฉด ์๋์ผ๋ก ์ถ๊ฐ ํ๋ผ๋ฏธํฐ๋ฅผ ์ถ๊ฐํ๋ค. ์ด ๋ฌธ์ ๋response.getOutputStream()์ผ๋ก ํด๊ฒฐํ ์ ์๋ค.
service()
GET, POST ๋ฐฉ์์ ๊ตฌ๋ถํ์ง ์๋๋ค. HTTP ์์ฒญ์์ GET๋ฐฉ์์ผ๋ก ์ค๋ฉด, doGet() ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ POST๋ฐฉ์์ผ๋ก ์์ฒญ์ด ์ค๋ฉด, doPost() ๋ฅผ ํธ์ถํ๋ค.
doGet()
GET ๋ฐฉ์ : URL ๊ฐ์ผ๋ก ์ ๋ณด๊ฐ ์ ์ก๋์ด ๋ณด์์ ์ฝํจ
๋ค์๊ณผ ๊ฐ์ด url ๊ฐ์ผ๋ก ์ ๋ณด๊ฐ ์ ์ก๋๋ ๋ฐฉ๋ฒ์ด๋ค.
html form ํ๊ทธ์ method ์์ฑ์ด get์ธ ๊ฒฝ์ฐ ํธ์ถ๋๋ค.
์น๋ธ๋ผ์ฐ์ ์ ์ฃผ์์ฐฝ์ ์ด์ฉํด servlet์ ์์ฒญํ ๊ฒฝ์ฐ์๋ ํธ์ถ๋๋ค.
doPost()
POST ๋ฐฉ์ : header๋ฅผ ์ด์ฉํด ์ ๋ณด๊ฐ ์ ์ก๋์ด ๋ณด์์ ๊ฐํ๋ค.
html form ํ๊ทธ์ method ์์ฑ์ด post์ธ ๊ฒฝ์ฐ ํธ์ถ๋๋ค.
Context Path
WAS(Web Application Server)์์ ์น์ดํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ๋ถํ๊ธฐ ์ํ path ์ ๋๋ค. ์ดํด๋ฆฝ์ค์์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ฉด, ์๋์ผ๋ก server.xml์ ์ถ๊ฐ ๋ฉ๋๋ค.
๋ก๊ทธ ์ถ๋ ฅ
application.properties
๊ฐ๋ฐ ์๋ฒ์์ ์ ์ค์ ์ ์ถ๊ฐํด HTTP ์์ฒญ๊ด๋ จํด์ ๋ก๊ทธ๋ฅผ ์ถ๋ ฅํ ์ ์๋ค.
์์ฒญ URL : http://localhost:8080/hello?username=%EB%8B%A4%ED%98%9C
Servlet ์๋ ์์
ํด๋ผ์ด์ธํธ์์ servlet ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์๋ฒ์์๋ servlet ์ปจํ ์ด๋๋ฅผ ๋ง๋ค๊ณ ์์ฒญ์ด ์์ ๋๋ง๋ค ์ค๋ ๋๊ฐ ์์ฑ๋๋ค.
์ค๋ ๋๋ฅผ ์ด์ฉํด request๋ฅผ ์ฒ๋ฆฌํด ์๋ฒ์ ๋ถํ๊ฐ ์ ๊ฒ ๊ฑธ๋ฆฐ๋ค.

์ด๋ Servlet ์ปจํ ์ด๋์์ 1. ์ค๋ ๋ ์์ฑ 2. servlet ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
HTTP ์์ฒญ์ด ๋ฐ์ํ์ ๋๋ฅผ ์๊ฐํด๋ณด์.
WAS๋ Request, Response ๊ฐ์ฒด๋ฅผ ์๋ก ๋ง๋ค์ด์ ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ฅผ ํธ์ถํ๋ค.
์ด๋, ๊ฐ๋ฐ์๋ Request ๊ฐ์ฒด์์ HTTP ์์ฒญ์ ๋ณด๋ฅผ ๊บผ๋ด ์ฌ์ฉํ๊ณ , Response ๊ฐ์ฒด์ HTTP ์๋ต ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์ ๋ ฅํ๋ค.
WAS๋ Response ๊ฐ์ฒด์ ๋ด๊ฒจ์๋ ๋ด์ฉ์ผ๋ก HTTP ์๋ต ์ ๋ณด๋ฅผ ์์ฑํ๋ค.
Servlet Container(WAS)
ํฐ์บฃ๊ณผ ๊ฐ์ด ์๋ธ๋ฆฟ์ ์ง์ํ๋ WAS๋ฅผ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ผ๊ณ ํ๋ค.
์๋ธ๋ฆฟ ๊ฐ์ฒด๋ฅผ ์์ฑ, ์ด๊ธฐํ, ํธ์ถ, ์ข ๋ฃํ๋ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌ(์ฑ๊ธํค)
๊ณ ๊ฐ์ ์์ฒญ์ด ์ฌ๋๋ง๋ค ๊ณ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋นํจ์จ
์ต์ด ๋ก๋ฉ ์์ ์ ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋๊ณ ์ฌํ์ฉ
๋ชจ๋ ๊ณ ๊ฐ ์์ฒญ์ ๋์ผํ ์๋ธ๋ฆฟ ๊ฐ์ฒด ์ธ์คํด์ค์ ์ ๊ทผ
์ด๋, ๊ณต์ ๋ณ์๋ ์ฃผ์ํด์ ์ฌ์ฉํด์ผํ๋ค.
์๋ธ๋ฆฟ ์ปจํ ์ด๋ ์ข ๋ฃ์ ํจ๊ป ์ข ๋ฃ
JSP๋ ์๋ธ๋ฆฟ์ผ๋ก ๋ณํ๋์ด ์ฌ์ฉ
๋์ ์์ฒญ์ ์ํ ๋ฉํฐ ์ฐ๋ ๋ ์ฒ๋ฆฌ ์ง์
๋์์์ฒญ - ๋ฉํฐ ์ฐ๋ ๋
์ฐ๋ ๋๋?
์ดํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ํ๋ํ๋ ์์ฐจ์ ์ผ๋ก ์คํ
์๋ฐ ๋ฉ์ธ ๋ฉ์๋๋ฅผ ์ฒ์ ์คํํ๋ฉด
main์ด๋ผ๋ ์ด๋ฆ์ ์ฐ๋ ๋๊ฐ ์คํ์ฐ๋ ๋๊ฐ ์๋ค๋ฉด ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์คํ ๋ถ๊ฐ๋ฅ
์ฐ๋ ๋๋ ํ๋ฐ์ ํ๋์ ์ฝ๋ ๋ผ์ธ๋ง ์ํ
๋์ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ฉด ์ฐ๋ ๋ ์ถ๊ฐ๋ก ์์ฑ
์์ฒญ์ด ์ฌ๋๋ง๋ค ์ฐ๋ ๋๋ฅผ ์์ฑํ๋ค๋ฉด?

์ฅ์
๋์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ค.
๋ฆฌ์์ค(CPU, ๋ฉ๋ชจ๋ฆฌ)๊ฐ ํ์ฉํ ๋๊น์ง ์ฒ๋ฆฌ ๊ฐ๋ฅ
ํ๋์ ์ฐ๋ ๋๊ฐ ์ง์ฐ๋์ด๋, ๋๋จธ์ง ์ฐ๋ ๋๋ ์ ์ ๋์
๋จ์
์ฐ๋ ๋๋ ์์ฑ ๋น์ฉ์ด ๋งค์ฐ ๋น์ธ๋ค.
๊ณ ๊ฐ์ ์์ฒญ์ด ๋ค์ด์ฌ ๋๋ง๋ค ์ฐ๋ ๋๋ฅผ ์์ฑํ๋ฉด, ์๋ต ์๋๊ฐ ๋ฆ์ด์ง๋ค.
์ฐ๋ ๋๋ ์ปจํ ์คํธ ์ค์์นญ ๋น์ฉ์ด ๋ฐ์
์ฐ๋ ๋ ์์ฑ์ ์ ํ์ด ์๋ค.
๊ณ ๊ฐ ์์ฒญ์ด ๋๋ฌด ๋ง์ด ์ค๊ฒ๋๋ฉด, CPU, ๋ฉ๋ชจ๋ฆฌ ์๊ณ์ ์ ๋์ด ์๋ฒ๊ฐ ์ฃฝ์ ์ ์๋ค.
์ฐ๋ ๋ ํ

Thread Pool์ ์ฐ๋ ๋๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋๊ณ ๊ด๋ฆฌํ๋ค. ์ฐ๋ ๋ ํ์ ์์ฑ ๊ฐ๋ฅํ ์ฐ๋ ๋์ ์ต๋์น๋ฅผ ๊ด๋ฆฌํ๋ค.(ํฐ์บฃ์ 200๊ฐ๊ฐ default ๊ฐ)
์ด๋, ์ฐ๋ ๋๊ฐ ํ์ํ๋ฉด ์ด๋ฏธ ์ฐ๋ ๋ํ์ ์์ฑ๋์ด ์๋ ์ฐ๋ ๋๋ฅผ ๊บผ๋ด์ ์ฌ์ฉํ๊ณ ์ฌ์ฉ์ ์๋ฃํ๋ฉด, ์ฐ๋ ๋ ํ์ ํด๋น ์ฐ๋ ๋๋ฅผ ๋ฐ๋ฉํ๋ค. ๋ง์ฝ ์ฐ๋ ๋ ํ์ ์๋ ๋ชจ๋ ์ฐ๋ ๋๊ฐ ์ฌ์ฉ์ค์ด๋ผ๋ฉด, ์์ฒญ์ ๊ฑฐ์ ํ๊ฑฐ๋, ํน์ ์ซ์๋งํผ๋ง ๋๊ธฐํ๋๋ก ์ค์ ํ ์ ์๋ค.
์ด๋ ๊ฒ ์ฐ๋ ๋ ํ์ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฅ์ ์ด ์๋ค.
์ฐ๋ ๋๊ฐ ๋ฏธ๋ฆฌ ์์ฑ๋์ด ์์ด, ์ฐ๋ ๋๋ฅผ ์์ฑํ๊ณ ์ข ๋ฃํ๋ ๋น์ฉ(CPU)์ด ์ ์ฝ๋๊ณ , ์๋ต ์๊ฐ์ด ๋นจ๋ผ์ง๋ค.
์์ฑ ๊ฐ๋ฅํ ์ฐ๋ ๋์ ์ต๋์น๊ฐ ์์ผ๋ฏ๋ก ๋๋ฌด ๋ง์ ์์ฒญ์ด ๋ค์ด์๋ ๊ธฐ์กด ์์ฒญ์ ์์ ํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค.
์ฌ๊ธฐ์ ์ต๋ ์ฐ๋ ๋ ์(max thread) ์ค์ ์ด ๊ฐ์ฅ ์ฃผ์ ํ๋ ํฌ์ธํธ์ด๋ค.
์ด ๊ฐ์ ๋๋ฌด ๋ฎ๊ฒ ์ค์ ํ๊ฒ๋๋ฉด, ๋์ ์์ฒญ์ด ๋ง์ด ๋ค์ด์์๋ ์๋ฒ ๋ฆฌ์์ค๋ ์ฌ์ ๋กญ์ง๋ง, ํด๋ผ์ด์ธํธ๋ ๊ธ๋ฐฉ ์๋ต ์ง์ฐ์ด๋๋ ํ์์ด ๋ฐ์ํ ์ ์๋ค.
๋ฐ๋๋ก ์ต๋ ์ฐ๋ ๋ ์๋ฅผ ๋๋ฌด ๋๊ฒ ์ค์ ํ๋ฉด, ๋์ ์์ฒญ์ด ๋ง์ด ๋ค์ด์์๋, CPU, ๋ฉ๋ชจ๋ฆฌ ๋ฆฌ์์ค ์๊ณ์ ์ด๊ณผ๋ก ์๋ฒ๊ฐ ๋ค์ด๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ ์ ์๋ ์ด๋ป๊ฒ ์ฐพ์๊น? ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ๋ณต์ก๋, CPU, ๋ฉ๋ชจ๋ฆฌ, IO ๋ฆฌ์์ค ์ํฉ์ ๋ฐ๋ผ ๋ชจ๋ ๋ค๋ฅด๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ต๋ํ ์ค์ ์๋น์ค์ ์ ์ฌํ๊ฒ ์ฑ๋ฅ ํ ์คํธ๋ฅผ ์๋ํด๋ด์ผํ๋ค. (์ํ์น ab, ์ ์ด๋ฏธํฐ, nGrinder )
์ฆ, ํต์ฌ์ WAS๊ฐ ๋ฉํฐ์ฐ๋ ๋์ ๋ํ ๋ถ๋ถ์ ๋ชจ๋ ์ฒ๋ฆฌํด์ค๋ค๋ ๊ฒ์ด๋ค. ๋ฉํฐ ์ฐ๋ ๋ ๊ด๋ จ ์ฝ๋๋ฅผ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋ฉฐ, ๊ฐ๋ฐ์๋ ์ฑ๊ธ ์ฐ๋ ๋ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ฏ์ด ํธ๋ฆฌํ๊ฒ ์์ค ์ฝ๋๋ฅผ ๊ฐ๋ฐํ ์ ์๋ค. ํ์ง๋ง, ๋ฉํฐ ์ฐ๋ ๋ ํ๊ฒฝ์ด๋ฏ๋ก ์ฑ๊ธํค ๊ฐ์ฒด๋ ์ฃผ์ํด์ ์ฌ์ฉํด์ผํ๋ค.
Servlet life cycle(์๋ช
์ฃผ๊ธฐ)
Servlet์ ์ฌ์ฉ๋๊ฐ ๋์ ์ด์ ๋ ๋น ๋ฅธ ์๋ต ์๋ ๋๋ฌธ์ด๋ค. Servlet์ ์ต์ด ์์ฒญ ์ ๊ฐ์ฒด๊ฐ ๋ง๋ค์ด์ ธ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ฉ๋๊ณ , ์ดํ ์์ฒญ์๋ ๊ธฐ์กด์ ๊ฐ์ฒด๋ฅผ ์ฌํ์ฉํ๊ฒ ๋๋ฏ๋ก ๋์ ์๋๊ฐ ๋น ๋ฅด๋ค.

์๋ก ๊ณ ์นจํ๋ฉด doGet๋ง ๋ฐ๋ณตํด์ ํธ์ถ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ์ด๋ ์์ ์ ํธ์ถ์ด ๋๋์ง ์๊ณ ์์ด์ผํ๋ค.
Servlet ์ ์ฒ๋ฆฌ / ํ์ฒ๋ฆฌ

์ ์ฒ๋ฆฌ @PostConstruct
init์ ์ ํ๋ฒ ํธ์ถ๋๋ ๊ฒ
ํ์ฒ๋ฆฌ @PreDestroy
destroy ํ์ ํธ์ถ๋๋ค.
HTML Form tag
formํ๊ทธ๋ ์๋ฒ์ชฝ์ผ๋ก ์ ๋ณด๋ฅผ ์ ๋ฌํ ๋ ์ฌ์ฉํ๋ ํ๊ทธ์ด๋ค.[HTML - form ]ํ๊ทธ์ ๊ด๋ จํด์ ์ ๋ฆฌํด๋ ์๋ฃ์ด๋ค.
์์ฒญํ๋ ์ปดํฌ๋ํธ ์ด๋ฆ์๋ ์ด๋ํ ์์น๋ฅผ ๋ฃ์ด์ค๋ค. (ex) join.jsp, info.html, HWorldServlet Parameter
Servlet Parameter
form ํ๊ทธ์ submit ๋ฒํผ์ ํด๋ฆญํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก ์ ์กํ๋ฉด, ํด๋นํ์ผ(servlet)์์๋ HttpServletRequest ๊ฐ์ฒด๋ฅผ ์ด์ฉํด์ Parameter๊ฐ์ ์ป์ ์ ์๋ค.
๋ฐํ๊ฐ์ ๋ค String์ด๋ค.
getParameter(name) : name์ ํด๋นํ๋ value๊ฐ์ ๋ฆฌํด
getParameterValues(name) : value๊ฐ๋ค์ด ์ฌ๋ฌ๊ฐ์ธ ๊ฒฝ์ฐ(์ฒดํฌ๋ฐ์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ)์ ์ฌ์ฉ
getParameterNames() : name๋ค์ ๋ฐฐ์ด์ด ๋์ด์จ๋ค.
ServletConfig
ํน์ Servlet์ด ์์ฑ๋ ๋ ์ด๊ธฐ์ ํ์ํ ๋ฐ์ดํฐ๋ค์ ์ด๊ธฐํ ํ๋ผ๋ฏธํฐ์ด๋ค.
web.xml ์ ๊ธฐ์ ํ๊ณ Servletํ์ผ์์๋ ServletConfing ํด๋์ค๋ฅผ ์ด์ฉํด์ ์ ๊ทผ(์ฌ์ฉ)ํ๋ค.
+web.xml์ด ์๋ Servletํ์ผ์ ์ง์ ๊ธฐ์ ํ๋ ๋ฐฉ๋ฒ๋ ์๋ค.
web.xml์ด์ฉํ๊ธฐ
Servlet ํ์ผ์ ์ง์ ๊ธฐ์ ํ๊ธฐ
๋ฐ์ดํฐ ๊ณต์ : ServletContext
์ฌ๋ฌ Servlet์์ ํน์ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํด์ผํ ๊ฒฝ์ฐ context parameter๋ฅผ ์ด์ฉํด์ web.xml ์ ๊ธฐ์ ํ๊ณ , Servlet์์ ๊ณต์ ํ๋ฉด์ ์ฌ์ฉํ ์ ์๋ค.
์ด๋ <servlet>๋ณด๋ค ์์ชฝ์ ์์ด์ผํ๋ค.
์น์ดํ๋ฆฌ์ผ์ด์
๊ฐ์
์น์ดํ๋ฆฌ์ผ์ด์ ์ ์๋ช ์ฃผ๊ธฐ(LifeCycle)๋ฅผ ๊ฐ์ํ๋ ๋ฆฌ์ค๋(Listener)๊ฐ ์์ต๋๋ค. ๋ฐ๋ก ServletContextListener ์ ๋๋ค.
๋ฆฌ์ค๋์ ํด๋น ๋ฉ์๋๊ฐ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ์์๊ณผ ์ข ๋ฃ ์ ํธ์ถ ๋ฉ๋๋ค.(contextInitialized(), contextDestroyed())
(ํด๋์ค ์์ฑ + implements ServletContextListener)๋ฅผ ํด์ค์ผํ๋ค.
ํ๊ธ ์ฒ๋ฆฌ
Tomcat ์๋ฒ์ ๊ธฐ๋ณธ ๋ฌธ์ ์ฒ๋ฆฌ๋ฐฉ์์ IOS-8859-1 ๋ฐฉ์์ด๋ค. ๋ฐ๋ผ์ ๊ฐ๋ฐ์๊ฐ ๋ฐ๋ก ํ๊ธ ์ธ์ฝ๋ฉ์ ํ์ง์์ผ๋ฉด ํ๊ธ์ด ๊นจ์ ธ๋ณด์ธ๋ค.
Get๋ฐฉ์ - server.xml ์์
Post ๋ฐฉ์ - .setCharacterEncoding
.setCharacterEncodingLast updated
Was this helpful?