Servlet ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ๊ธฐ๋ณธ ์๋ธ๋ฆฟ ์์ฑ ๋ฐ ๋ฐฐ์น
1. ์๋ธ๋ฆฟ ์์ฑ
์๋ฐ ์๋ธ๋ฆฟ ํด๋์ค๋ javax.servlet.Servlet ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํด์ผ ํ๋ค. Servlet์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ ์๋ธ๋ฆฟ์ ๋ํด ํธ์ถํ๋ ๋ฉ์๋ init(), service(), destroy(), getServiceConfig(), getServiceInfo()๋ฅผ ์ ์ํ ์ธํฐํ์ด์ค์ด๋ค.
public class FirstServlet implements Servlet {
ServletConfig config;
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("init() called");
this.config = config;
}
@Override
public void destroy() {
System.out.println("destroy() called");
}
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("service() called");
}
@Override
public ServletConfig getServletConfig() {
System.out.println("getServiceConfig() called");
return this.config;
}
@Override
public String getServletInfo() {
System.out.println("getServletInfo() called");
return "version=1.0;author=butterfield;copyright=butterfield 2020";
}
}
๋ฉ์๋ | ๊ตฌ๋ถ |
์ค๋ช |
init() | Lifecycle ๊ด๋ จ | ์๋ธ๋ฆฟ ์ปจํ
์ด๋๊ฐ ์๋ธ๋ฆฟ์ ์์ฑํ๊ณ ์ด๊ธฐํ ์์
์ ์ํํ๊ธฐ ์ํด ํธ์ถํ๋ ๋ฉ์๋ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ ์ ํด์ผํ ์ค๋น ์์ ์ ์์ฑํ๋ค. ์: DB ์ฐ๊ฒฐ, ์๊ฒฉ ์๋ฒ ์ฐ๊ฒฐ, ํ๋กํผํฐ ๋ก๋ฉ ๋ฑ |
service() | ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ๋๋ง๋ค ํธ์ถ๋๋ ๋ฉ์๋ ์ค์ง์ ์ธ ์๋น์ค ์์ ์ ์ํ |
|
destroy() | ์๋ธ๋ฆฟ ์ปจํ
์ด๋๊ฐ ์ข
๋ฃ๋๊ฑฐ๋ ์น ์ดํ๋ฆฌ์ผ์ด์
์ด ์ข
๋ฃ๋๊ฑฐ๋ ํด๋น ์๋ธ๋ฆฟ์ ๋นํ์ฑํ ์ํฌ๋ ํธ์ถ๋๋ ๋ฉ์๋ ์์ ํด์ , ๋ฐ์ดํฐ ์ ์ฅ ๋ฑ์ ๋ง๋ฌด๋ฆฌ ์์ ์ ์์ฑํ๋ค. |
|
getServiceConfig() | ๋ณด์กฐ ๋ฉ์๋ | ์๋ธ๋ฆฟ ์ค์ ์ ๋ณด๋ฅผ ๋ค๋ฃจ๋ ServletConfig ๊ฐ์ฒด ๋ฐํ ServletConfig๋ฅผ ํตํด ์๋ธ๋ฆฟ ์ด๋ฆ, ์๋ธ๋ฆฟ ์ด๊ธฐ ๋งค๊ฐ๋ณ์ ๊ฐ, ์๋ธ๋ฆฟ ํ๊ฒฝ ์ ๋ณด ๋ฑ์ ์ป์ ์ ์๋ค. |
getServiceInfo() | ์๋ธ๋ฆฟ ์์ฑ์, ๋ฒ์ , ์ ์๊ถ ๋ฑ์ ์ ๋ณด๋ฅผ ๋ด์ ๋ฌธ์์ด ๋ฐํ |
2. ์๋ธ๋ฆฟ ๋ฐฐ์น ์ ๋ณด ์์ฑ
Deployment descriptor ํ์ผ(web.xml)์ ์๋ธ๋ฆฟ ๋ฐฐ์น ์ ๋ณด๋ฅผ ์์ฑํ๋ค.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>web03</display-name>
<!-- ์๋ธ๋ฆฟ ์ ์ธ -->
<servlet>
<servlet-name>FirstServlet</servlet-name>
<servlet-class>atoz_develop.com.FirstServlet</servlet-class>
</servlet>
<!-- ์๋ธ๋ฆฟ์ URI๊ณผ ์ฐ๊ฒฐ -->
<servlet-mapping>
<servlet-name>FirstServlet</servlet-name>
<url-pattern>/FirstServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
web.xml์ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐ์น ์ ๋ณด๋ฅผ ๊ฐ๋๋ค. web.xml์ ์๋ธ๋ฆฟ ๋ฐฐ์น ์ ๋ณด๋ฅผ ์์ฑํ์ง ์์ผ๋ฉด ์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ ํด๋น ์๋ธ๋ฆฟ์ ์ฐพ์ ์ ์๋ค. ํด๋ผ์ด์ธํธ์์ ์คํ์ ์์ฒญํ๋ ค๋ฉด ๋ฐ๋์ ๋ฐฐ์น ์ ๋ณด๋ฅผ ์์ฑํด์ผ ํ๋ค.
์๋ธ๋ฆฟ ์ ์ธ
<!-- ์๋ธ๋ฆฟ ์ ์ธ -->
<servlet>
<servlet-name>FirstServlet</servlet-name>
<servlet-class>atoz_develop.com.FirstServlet</servlet-class>
</servlet>
<servlet>์ ์๋ธ๋ฆฟ name๊ณผ class๋ฅผ ์ง์ ํ๋ค.
์๋ธ๋ฆฟ name์ ํด๋์ค ์ด๋ฆ๊ณผ ๋์ผํ์ง ์์๋ ๋๋ฉฐ ๊ณต๋ฐฑ์ ํฌํจํ ์ ์๋ค.
์๋ธ๋ฆฟ class๋ ํจํค์ง ์ด๋ฆ์ ํฌํจํ QName(Fully qualified name)์ ์์ฑํ๋ค.
์๋ธ๋ฆฟ URL ๋งคํ
<!-- ์๋ธ๋ฆฟ์ URI๊ณผ ์ฐ๊ฒฐ -->
<servlet-mapping>
<servlet-name>FirstServlet</servlet-name>
<url-pattern>/FirstServlet</url-pattern>
</servlet-mapping>
ํด๋ผ์ด์ธํธ์์๋ URL๋ก ์๋ธ๋ฆฟ์ ์คํ์ ์์ฒญํ๋ค.
<servlet-mapping>์ ์๋ธ๋ฆฟ URL ๋งคํ ์ ๋ณด๋ฅผ ์์ฑํ๋ค.
<servlet-name>์ ์์์ ์ ์ํ ์๋ธ๋ฆฟ name์ ์ง์ ํ๋ค.
<url-pattern>์ URL์ ์ง์ ํ๋๋ฐ /FirstServlet๊ณผ ๊ฐ์ด ์์ฑํ๋ค๋ฉด '/'๋ context root, ์ฆ ์น ์ดํ๋ฆฌ์ผ์ด์ ๋ฃจํธ๋ฅผ ์๋ฏธํ๋ค.
์ดํด๋ฆฝ์ค Project Explorer์ ํ๋ก์ ํธ Deployment Descriptor ๋ ธ๋์ web.xml์ ์์ฑํ ๋ฐฐ์น ์ ๋ณด๊ฐ ๋ณด๊ธฐ ์ข๊ฒ ์๊ฐํ๋์ด ํ์๋๋ค.
์๋ธ๋ฆฟ ์คํ
์์ ๊ฐ์ด ์๋ธ๋ฆฟ๊ณผ ๋ฐฐ์น ์ ๋ณด๋ฅผ ์์ฑํ์ผ๋ฉด
์น ๋ธ๋ผ์ฐ์ ์ฃผ์์ฐฝ์ http://localhost:ํฌํธ๋ฒํธ/์ปจํ ์คํธ ๋ฃจํธ/FirstServlet ์ ์ ๋ ฅํ์ฌ ์๋ฒ์ ์์ฒญํ๋ค.
3. ์๋ธ๋ฆฟ ๊ตฌ๋ ์ ์ฐจ
1) ํด๋ผ์ด์ธํธ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ์๋ธ๋ฆฟ์ ์ฐพ๋๋ค.
2) ์๋ธ๋ฆฟ์ด ์์ผ๋ฉด ํด๋์ค๋ฅผ ๋ก๋ฉํ๊ณ ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ ์๋ธ๋ฆฟ ์ด๊ธฐํ ๋ฉ์๋์ธ init()์ ํธ์ถํ๋ค.
3) ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ฒ๋ฆฌํ๋ service() ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.
4) service() ๊ฒฐ๊ณผ๋ฅผ HTTP์ ๋ง์ถฐ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ตํ์ฌ ์์ฒญ ์ฒ๋ฆฌ๋ฅผ ์๋ฃํ๋ค.
5) ์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ ์ข ๋ฃ๋๊ฑฐ๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ด ์ข ๋ฃ๋๋ฉด ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ์ข ๋ฃ๋๊ธฐ ์ ์ ์๋ธ๋ฆฟ์ด ๋ง๋ฌด๋ฆฌ ์์ ์ ํ ์ ์๋๋ก ์์ฑ๋ ๋ชจ๋ ์๋ธ๋ฆฟ์ ๋ํด destroy() ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.
์๋ธ๋ฆฟ์ ์ต์ด๋ก ์์ฒญํ ํ ์น ๋ธ๋ผ์ฐ์ ์์ 3๋ฒ ์๋ก๊ณ ์นจ์ ํด๋ฆญํ๋ฉด ์์ ๊ฐ์ด service()๋ง ํธ์ถ๋๋ค. ์ด๋ฏธ FirstServlet ์ธ์คํด์ค๊ฐ ์กด์ฌํ๋ฏ๋ก init()์ ํธ์ถ๋์ง ์๋๊ฒ์ด๋ค.
์๋ธ๋ฆฟ ๊ฐ์ฒด๋ ๋จ ํ๋๋ง ์์ฑ๋๋ฉฐ ํ ๋ฒ ์์ฑ๋๋ฉด ์น ์ดํ๋ฆฌ์ผ์ด์ ์ด ์ข ๋ฃ๋ ๋๊น์ง ์ ์ง๋๋ฉฐ ์ฌ์ฉ๋๋ค.
ํฐ์บฃ์ ์ข ๋ฃํ๋ฉด destroy()๊ฐ ํธ์ถ๋๋ค.
๋๊ธ