WEB_SERVLET
๐ WEB
๐ SERVLET
SERVLET ์ด๋ ๋ฌด์์ธ๊ฐ?
์๋ฐ ์๋ธ๋ฆฟ ( JAVA Servlet ) ์ ์๋ฐ๋ฅผ ์ฌ์ฉํ์ฌ ์น ํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๋ ์๋ฒ์ธก ํ๋ก๊ทธ๋จ ํน์ ๊ทธ ์ฌ์์ ๋งํ๋ค.
์๋ฐ ์๋ธ๋ฆฟ์ ์น ์๋ฒ์ ์ฑ๋ฅ์ ํฅ์ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์๋ฐ ํด๋์ค์ ์ผ์ข
์ด๋ค.
์๋ธ๋ฆฟ์ ์๋ฐ๋ก ๊ตฌํ๋ CGI ์ด๋ค.
CGI๋ ํน๋ณํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋๊ตฌ๊ฐ ์๋๊ณ ๋ณ๋๋ก ์ ์๋ ์น์๋ฒ์ ํ๋ก๊ทธ๋จ๊ฐ์ ๊ตํ๋ฐฉ์์ด๋ค.
์๋ฐ ์๋ธ๋ฆฟ์ JSP์ ๋น์ทํ ์ ์ด ์์ง๋ง ์๋ฐ ์๋ธ๋ฆฟ์ ์๋ฐ ์ฝ๋์์ HTML์ ํฌํจํ๊ณ ์๊ณ , JSP๋ HTML์์ ์๋ฐ ์ฝ๋๋ฅผ ํฌํจํ๊ณ ์๋ค.
SERVLET ์ ํน์ง
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ํด ๋์ ์ผ๋ก ์๋ํ๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ปดํฌ๋ํธ
- html์ ์ฌ์ฉํ์ฌ ์์ฒญ์ ์๋ตํ๋ค.
- java thread๋ฅผ ์ด์ฉํ์ฌ ๋์ํ๋ค.
- MVC ํจํด์์ Controller๋ก ์ด์ฉ๋๋ค.
- HTTP ํ๋กํ ์ฝ ์๋น์ค๋ฅผ ์ง์ํ๋ javax.servlet.http.HttpServlet ํด๋์ค๋ฅผ ์์๋ฐ๋๋ค.
- UDP๋ณด๋ค ์ฒ๋ฆฌ ์๋๊ฐ ๋๋ฆฌ๋ค.
- HTML ๋ฒ๊ฒฝ ์ Servlet์ ์ฌ์ปดํ์ผํด์ผํ๋ ๋จ์ ์ด ์๋ค.
SERVLET ์ ๋์๊ณผ์
- ์ฌ์ฉ์ ( Client )๊ฐ URL์ ์ ๋ ฅํ๋ฉด HTTP Request๊ฐ Servlet Container๋ก ์ ์กํฉ๋๋ค.
- ์์ฒญ์ ์ ์ก๋ฐ์ Servlet Container๋ HttpServletRequest, HttpServletResponse ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
- web.xml์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉ์๊ฐ ์์ฒญํ URL์ด ์ด๋ ์๋ธ๋ฆฟ์ ๋ํ ์์ฒญ์ธ์ง ์ฐพ๋๋ค.
- ํด๋น ์๋ธ๋ฆฟ์์ service ๋ฉ์๋๋ฅผ ํธ์ถํ ํ ํด๋ผ์ด์ธํธ์ GET, POST ์ฌ๋ถ์ ๋ฐ๋ผ doGet() ๋๋ doPost()๋ฅผ ํธ์ถํ๋ค.
- doGet() or doPost() ๋ฉ์๋๋ ๋์ ํ์ด์ง๋ฅผ ์์ฑํ ํ HttpServletResponse๊ฐ์ฒด์ ์๋ต์ ๋ณด๋ธ๋ค.
- ์๋ต์ด ๋๋๋ฉด HttpServletRequest, HttpServletResponse ๋ ๊ฐ์ฒด๋ฅผ ์๋ฉธ์ํจ๋ค.
SERVLET API
SERVLET ์ ์ฃผ์ ํด๋์ค์ ๋ฉ์๋
-
HttpServlet
์๋ธ๋ฆฟ์ ๋ง๋ค๊ธฐ ์ํด ๋ฐ๋์ ์์ํด์ผ ํ ํ์ ํด๋์ค -
HttpServletRequest
ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ๊ฑฐ๋ ํด๋ผ์ด์ธํธ์ ์ ๋ณด์ ๋ํ ์์ฒญ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ ํด๋์ค -
HttpServletResponse
ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ์ ๋ณด๋ฅผ ์ฒ๋ฆฌํ๊ณ ๋ค์ ์๋ตํ๊ธฐ ์ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ํด๋์ค -
HttpSession
ํด๋ผ์ด์ธํธ๊ฐ ์ธ์ ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์ธ์ ๊ธฐ๋ฅ ์ ์ง๋ฅผ ์ํด์ ์ ๊ณต๋๋ ํด๋์ค
HttpServlet์์ ์ ๊ณต๋๋ ์ฃผ์ ๋ฉ์๋
๋ฉ์๋ | ์ค๋ช |
void init() | ์๋ธ๋ฆฟ์ ๊ฐ์ฒด๊ฐ ์์ฑ ๋ ๋ ํธ์ถ๋๋ ๋ฉ์๋ |
void destroy() | ์๋ธ๋ฆฟ์ ๊ฐ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์์ ์ฌ๋ผ์ง ๋ ํธ์ถ๋๋ ๋ฉ์๋ |
void service(request, response) | ์๋ธ๋ฆฟ์ ์์ฒญ์ด ์์ ๋ ํธ์ถ๋๋ ๋ฉ์๋ |
void doGet(request, response) | html์์ form์ ๋ฉ์๋๊ฐ get์ผ ๋ ํธ์ถ๋๋ ๋ฉ์๋ |
void doPost(request, response) | html์์ form์ ๋ฉ์๋๊ฐ post์ผ ๋ ํธ์ถ๋๋ ๋ฉ์๋ |
HttpServletRequest์์ ์ ๊ณต๋๋ ์ฃผ์ ๋ฉ์๋
๋ฉ์๋ | ์ค๋ช |
String getParameter(name) | name ๊ฐ์ ํ ๋น๋ ๊ฐ์ ๋ฐํํ๋ฉฐ ๊ฐ์ด ์์ผ๋ฉด null์ ๋ฐํ |
String[] getParameters(name) | name์ ๋ชจ๋ ๊ฐ์ String ๋ฐฐ์ด๋ก ๋ฐํ |
Enumeration getParameterNames() | ์์ฒญ์ ์ฌ์ฉ๋ ๋ชจ๋ ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ java.util.Enumeration ํ์ ์ผ๋ก ๋ฐํ |
void setCharacterEncoding(env) โป ๋ณดํต env = "utf-8" ์ด๋ค. |
post๋ฐฉ์์ผ๋ก ์์ฒญ๋ ๋ฌธ์์ด์ character encoding์ ์ค์ |
HttpServletResponse์์ ์ ๊ณต๋๋ ์ฃผ์ ๋ฉ์๋
๋ฉ์๋ | ์ค๋ช |
void setHeader(name, value) | ์๋ต์ ํฌํจ๋ Header๋ฅผ ์ค์ ํ๋ค. |
void setContentType(type) | ์ถ๋ ฅ๋๋ ํ์ด์ง์ contentType์ ์ค์ |
String getCharacterEncoding() | ์๋ต ํ์ด์ง์ ๋ฌธ์ ์ธ์ฝ๋ฉ Type์ ๋ฐํ |
void sendRedirect() | ์ง์ ๋ URL๋ก ์์ฒญ์ ์ฌ์ ์ก |
HttpSession์์ ์ ๊ณต๋๋ ์ฃผ์ ๋ฉ์๋
๋ฉ์๋ | ์ค๋ช |
String getId() | ํด๋น ์ธ์ ์ ์ธ์ ID๋ฅผ ๋ฐํ |
long getCreationTime() | ์ธ์ ์ ์์ฑ๋ ์๊ฐ์ ๋ฐํ |
long getLastAccessedTime() | ํด๋ผ์ด์ธํธ ์์ฒญ์ด ๋ง์ง๋ง์ผ๋ก ์๋๋ ์๊ฐ์ ๋ฐํ |
void setMaxInactiveInterval(time) | ์ธ์
์ ์ ์งํ ์๊ฐ์ ์ด๋จ์๋ก ์ค์ โป ์ฌ์ง์ ์ฌ๋ผ์ด๋์ฒ๋ผ ๋ณด์ด๊ฒ ํ ๋ ์ฌ์ฉ |
boolean isNew() | ํด๋ผ์ด์ธํธ ์ธ์ ID๋ฅผ ํ ๋นํ์ง ์์ ๊ฒฝ์ฐ true ๊ฐ์ ๋ฐํ |
void invalidate() | ํด๋น ์ธ์ ์ ๋ชจ๋ ์ข ๋ฃ |
SERVLET Life-Cycle
Servlet class๋ javaSE์์์ class์๋ ๋ค๋ฅด๊ฒ main method๊ฐ ์๋ค. ์ฆ ๊ฐ์ฒด์ ์์ฑ๋ถํฐ ์ฌ์ฉ์ ์ฃผ์ฒด๊ฐ ์ฌ์ฉ์๊ฐ ์๋ Servlet Container์๊ฒ ์๋ค.
Client๊ฐ ์์ฒญ(request) ํ๊ฒ ๋๋ฉด Servlet Container๋ Servlet ๊ฐ์ฒด๋ฅผ ์์ฑ (ํ๋ฒ๋ง)ํ๊ณ , ์ด๊ธฐํ (ํ๋ฒ๋ง) ํ๋ฉฐ ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ ( ์์ฒญ์๋ง๋ค ๋ฐ๋ณต )๋ฅผ ํ๊ฒ ๋๋ค. ๋ํ Servlet ๊ฐ์ฒด๊ฐ ํ์์๊ฒ ๋๋ฉด ์ ๊ฑฐํ๋ ์ผ๊น์ง Container๊ฐ ๋ด๋นํ๋ค.
SERVLET Life-Cycle์ ์ฃผ์ ๋ฉ์๋
-
init()
์๋ธ๋ฆฟ์ด ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ ๋ ๋ ํ ๋ฒ ํธ์ถ
์ฝ๋ ์์ ์ผ๋ก ๋ค์ ๋ก๋ ๋๋ฉด ๋ค์ ํธ์ถ -
doGet()
GET๋ฐฉ์์ผ๋ก data ์ ์ก ์ ํธ์ถ -
doPost()
POST๋ฐฉ์์ผ๋ก data ์ ์ก ์ ํธ์ถ -
service()
๋ชจ๋ ์์ฒญ์ service()๋ฅผ ํตํด์ doXXX() ๋ฉ์๋๋ก ์ด๋ -
destroy()
์๋ธ๋ฆฟ์ด ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ๋๋ฉด ํธ์ถ
์ฝ๋๊ฐ ์์ ๋๋ฉด ํธ์ถ
SERVLET Parameter
GET
-
ํน์ง
์ ์ก๋๋ ๋ฐ์ดํฐ๊ฐ URL๋ค์ Query String์ผ๋ก ์ ๋ฌ.
์ ๋ ฅ ๊ฐ์ด ์ ์ ๊ฒฝ์ฐ๋ ๋ฐ์ดํฐ๊ฐ ๋ ธ์ถ์ด ๋๋ ๋ฌธ์ ๊ฐ ์์ ๊ฒฝ์ฐ ์ฌ์ฉ -
์ฅ์
๊ฐ๋จํ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ ์ก
form tag ๋ฟ๋ง ์๋๋ผ ์ง์ URL์ ์ ๋ ฅํ์ฌ ์ ์ก ๊ฐ๋ฅ -
๋จ์
๋ฐ์ดํฐ ์์ ์ ํ์ด ์๋ค.
POST
-
ํน์ง
URL๊ณผ ๋ณ๋๋ก ์ ์ก
HTTP header ๋ค body์ ์ ๋ ฅ ์คํธ๋ฆผ ๋ฐ์ดํฐ๋ก ์ ๋ฌ -
์ฅ์
๋ฐ์ดํฐ์ ์ ํ์ด ์๋ค.
์ต์ํ์ ๋ณด์ ์ ์ง ํจ๊ณผ๋ฅผ ๋ณผ ์ ์๋ค. -
๋จ์
์ ๋ ๋ฐ์ดํฐ์ ์์ด ๊ฐ์ ๊ฒฝ์ฐ GET๋ฐฉ์ ๋ณด๋ค ๋๋ฆฌ๋ค.
URL ?
SERVLET ๋ง๋ฌด๋ฆฌ
์๋ฐ ์๋ธ๋ฆฟ์ ๋ํด ์์๋ณด์๋ค.
์์งํ ํ์ฌ์๋ ๊ฑฐ์ ์์ฐ์ธ๋ค์ง๋ง ์น ๊ฐ๋ฐ์ ์ญ์ฌ์ ์๊ธฐ ๋๋ฌธ์ ์ํฅ๋ค์ด ์์ ๊ฑฐ๋ผ๊ณ ์๊ฐํ๋ค.
๊ทธ๊ฑด ์ฌ์ค ๋ ๋ฐฐ์๋ด์ผ ์๊ฒ ์ง๋ง ใ
ใ
์ค์ต๋ ํด๋ณด์๋๋ฐ ํ์คํ ์น ๋ค์ด์ค๋๊น ์๋ค๊ฐ๋ค ํท๊ฐ๋ฆฌ๋๊ฒ ์ข ๋ง๋ค..
๊ทธ๋ฆฌ๊ณ ์๋ฐ๋ฅผ ์ ์ฐฉ์คํ ํด๋์ผ๋ผ๋์ง ์ ๊ฒ ๊ฐ๋ค.
ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ด ๋ค ์๋ฐ๊ธฐ ๋๋ฌธ์ ์๋ฐ๋ฅผ ์ ์๊ณ ์์ง ์์ผ๋ฉด ๋ฐฉ๋ฒ์ ์์๋ ํด๊ฒฐํ์ง ๋ชปํ๋ ์ํฉ์ด ๋ฐ์ํ ๊ฒ ๊ฐ๋ค.
๊ทธ๋ฆฌ๊ณ servlet์ java ์ฝ๋์์ HTML์ ์์ฑํ๊ธฐ ๋๋ฌธ์ ๊ต์ฅํ ๋ฒ๊ฑฐ๋ก์ด ์์
๋ค์ด ์กด์ฌํ๋ค.
๊ทธ๊ฒ๋ค์ ํด์ํด์ฃผ๊ณ ์ข ๋ ์ ์ฉํ ๋ฐฉ๋ฒ์ธ JSP ๋ฅผ ๋ ์์๋ณด๋๋ก ํ์.
๐ ์ฐธ์กฐ
https://mangkyu.tistory.com/14