7.1 web.xml์ ์ผ๋ฐ ์คํค๋ง
web.xml ํ์ผ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ฑ ์ ๋ณด๋ฅผ ์ ์ฅํฉ๋๋ค. ํ์ ๋ถ๋ถ์ ์๋์ง๋ง ์น ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑํ๋ ๋ฐ ๋งค์ฐ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
์ด ํ์ผ์ WEB-INF ํด๋ ์ ์์ด์ผ ํฉ๋๋ค . Tomcat์ด ์์๋๋ฉด ๋ด์ฉ์ ์ฝ๊ณ ํฌํจ๋ ๊ตฌ์ฑ์ ์ฌ์ฉํฉ๋๋ค. ํ์ผ์ ์ค๋ฅ๊ฐ ์์ผ๋ฉด Tomcat๋ ์ค๋ฅ๋ฅผ ํ์ํฉ๋๋ค.
์ web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/welcome</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
"HelloWorld"
์๋ธ๋ฆฟ ์ด๋ฆ ๊ณผ ์๋ธ๋ฆฟ ํด๋์ค ์ ๋งคํ์ ์ฌ๊ธฐ์์ ๋
น์์ผ๋ก ์์ฑ๋ฉ๋๋ค"HelloServlet"
. ์๋ธ๋ฆฟ ์ด๋ฆ ๊ณผ URL ์ฒญํฌ ์ ๋งคํ์ ํ๋์์ผ๋ก ํ์๋ฉ๋๋ค"HelloWorld"
"http://localhost/welcome"
. ๋ฐ๋ผ์ ์ฌ๊ธฐ์๋ /welcome ๊ฒฝ๋ก์ ์ ๊ทผํ ๋ servlet ์ ํธ์ถํด์ผ ํ๋ค๊ณ ๋งํฉ๋๋ค HelloServlet.class
.
๋นจ๊ฐ์์ ์์ฒญ ์ ์ ๊ณตํด์ผ ํ๋ ํ์ผ์ ๋ํ๋
๋๋ค http://localhost/
. ์์ ํ์ ํ์ด์ง์
๋๋ค . ์ฌ์ฉ์๊ฐ ๋จ์ํ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฃจํธ์ ํด๋นํ๋ ์ด๋ฆ์ ๋ธ๋ผ์ฐ์ ์ ์
๋ ฅํ๋ฉด index.html
.
7.2 ์๋ธ๋ฆฟ, ์๋ธ๋ฆฟ ๋งคํ
ํ๋์ ์๋ธ๋ฆฟ์ ๋ค๋ฅธ URL์์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์ผ๋ฏ๋ก web-xml์์๋ ์๋ธ๋ฆฟ๊ณผ URL์ ๋ํ ๋งคํ์ด ๋ณ๋๋ก ์์ฑ๋ฉ๋๋ค. ๋จผ์ ์๋ธ๋ฆฟ์ ์ค๋ช ํ๊ณ ๊ฐ๊ฐ ๊ณ ์ ํ ๋ฌธ์์ด ์ด๋ฆ์ ์ง์ ํ ๋ค์ ๊ฐ ์๋ธ๋ฆฟ์ด ์ด๋ค URL์ ๋งคํ๋๋์ง ์ง์ ํฉ๋๋ค.
์ web.xml:
<web-app>
<servlet>
<servlet-name>remoting</servlet-name>
<servlet-class>com.codegym.RemotingServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>remoting</servlet-name>
<url-pattern>/remoting/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>restapi</servlet-name>
<servlet-class>com.codegym.RestApiServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>restapi</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
</web-app>
์ด ์์์๋ ๋ ๊ฐ์ ์๋ธ๋ฆฟ์ด ์ ์ธ๋๊ณ ๊ฐ๊ฐ ๋ค๋ฅธ URL ํ
ํ๋ฆฟ์ ๋งคํ๋ฉ๋๋ค. ์๋ธ๋ฆฟ์ RemotingServlet
๋ก ์ด๋ํ๋ ๋ชจ๋ ์์ฒญ์ ์ฒ๋ฆฌํฉ๋๋ค/remoting/*
. ์๋ธ๋ฆฟ์ RestApiServlet
๋ก ์ด๋ํ๋ ๋ชจ๋ ์์ฒญ์ ์ฒ๋ฆฌํฉ๋๋ค/api/*
. ์๋ธ๋ฆฟ์๋ ๋ก๋ ์ ์์ ๋งค๊ฐ๋ณ์์ธ ๋ก๋ ์์๋ ์์ต๋๋ค.
7.3 ์๋ธ๋ฆฟ ์ต์
web.xml์ ๋์์ผ๋ก ๋งค๊ฐ๋ณ์๋ ์ด๊ธฐํ ์ค์ ์๋ธ๋ฆฟ์ ์ ๋ฌ๋ ์ ์์ผ๋ฉฐ ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ฌ์ฉํ ์ ์์ต๋๋ค ServletConfig
. ์ ์ฒด ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๋ํ ๋งค๊ฐ๋ณ์๋ฅผ ์ค์ ํ ์๋ ์์ผ๋ฉฐ ServletContext
.
์ web.xml:
<web-app>
<context-param>
<description>Server production mode</description>
<param-name>productionMode</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>appPropertiesConfig</param-name>
<param-value>
classpath:local-app.properties
classpath:web-app.properties
</param-value>
</context-param>
<servlet>
<servlet-name>mainservlet</servlet-name>
<servlet-class>com.codegym.ApplicationServlet</servlet-class>
<init-param>
<param-name>application</param-name>
<param-value>com.codegym.App</param-value>
</init-param>
<init-param>
<param-name>widgetset</param-name>
<param-value>com.codegym.WidgetSet</param-value>
</init-param>
<init-param>
<param-name>ui</param-name>
<param-value>com.codegym.AppUI</param-value>
</init-param>
</servlet>
</web-app>
๋
น์์ผ๋ก ๊ฐ์กฐ ํ์๋ ์ฝ๋๋ ์ ๋ํ ๋งค๊ฐ๋ณ์๋ฅผ ์ค์ ํ ๊ณณ์
๋๋คServletContext
. ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
productionMode
๊ฑฐ์ง ๊ฐ์ผ๋กappPropertiesConfig
๋ ๋ฌธ์์ด์ ๋ฐฐ์ด:classpath:local-app.properties
classpath:web-app.properties
์๋ธ๋ฆฟ์ ๋งค๊ฐ๋ณ์๋ ํ๋์์ผ๋ก ํ์๋๋ฉฐApplicationServlet
๋ค์์ ํตํด ์ฌ์ฉํ ์ ์์ต๋๋ค ServletConfig
.
application
com.codegym.App ๊ฐ ์ฌ์ฉwidgetset
com.codegym.WidgetSet ๊ฐ ์ฌ์ฉui
com.codegym.AppUI ๊ฐ ์ฌ์ฉ
7.4 ํํฐ, ํํฐ ๋งคํ
์น ์ ํ๋ฆฌ์ผ์ด์
์๋ ํน๋ณํ utility servlets - filters
. ํตํ ๋ฆฌ๋๋ ์
, ์ธ์ฆ ํ์ธ ๋ฑ ๋ค์ํ ์๋น์ค ์์
์ ์ํํฉ๋๋ค.
์ web.xml:
<web-app>
<servlet>
<servlet-name>remoting</servlet-name>
<servlet-class>RemotingServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>remoting </servlet-name>
<url-pattern>/remoting/*</url-pattern>
</servlet-mapping>
<filter>
<filter-name>total_filter</filter-name>
<filter-class>com.javrush.TotalFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>total_filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
์์ฒญ์ด ์๋ธ๋ฆฟ์ ๋๋ฌํ๊ธฐ ์ ์ RemotingServlet
ํํฐ์ ์ํด ์ฒ๋ฆฌ๋ฉ๋๋ค TotalFiler
. ์ด ํํฐ๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์ผ๋ก ์ด๋ํ๋ ๋ชจ๋ ์์ฒญ์ ๊ฐ๋ก์ฑ๋๋ก ๊ตฌ์ฑ๋ฉ๋๋ค . ์ด๊ฒ์ ๋งคํ๋ URL ํ
ํ๋ฆฟ์ ์ํด ๋ช
ํํ๊ฒ ์์๋ฉ๋๋ค: /*
.
๋ค์ ๊ฐ์์์ ์๋ธ๋ฆฟ ๋ฐ ํํฐ์ ๋ํด ์์ธํ ์์๋ณผ ๊ฒ์ ๋๋ค.
GO TO FULL VERSION