1.URL ํจํด
@WebServlet("/Hello")
public class HelloServlet extends HttpServlet{
}
์ฐ๋ฆฌ๋ ์์ ๊ฐ์ด ํ๋์ ํด๋์ค์ ๋ํด ํ๋ฒ์ ๋งตํ๋ง ํด์๋ค. ๋ฐ๋ผ์ HelloServlet์ ๊ฒฐ๊ณผ ์ฒ๋ฆฌ๋ฅผ ์์ฒญํ๋ ค๋ฉด ๋ฌด์กฐ๊ฑด "~~/Hello" ๋ผ๋ ์ ์ผ๋ฌด์ดํ ํต๋ก๋ง ์ด์ฉํด์ผ ํ๋ค.
@WebServlet(urlPatterns={"/hello", "/hello/*"}, ;loadOnStartup=1)
public class HelloServlet extends HttpServlet{
}
ํ์ง๋ง ์์ ๊ฐ์ด ํ๋์ ํด๋์ค์ ๋ํ์ฌ ์ฌ๋ฌ๊ฐ์ง ํต๋ก๋ก ๋งคํํ ์ ์๋ค.
urlParttern์ ํ๋์ ํด๋์ค์ ๊ฐ ์ ์๋ ์ฌ๋ฌ๊ฐ์ง ํต๋ก๋ฅผ ๋ฐฐ์ด๋ก์ ๋ํ๋ธ ํํ์ด๋ค.
์์ ์์ ์์ HelloServlet์ ์ด์ฉํ๋ ค๋ฉด /hello๋ฅผ ์ณ๋ ๋๊ณ , /hello/~~~ ๋ค๋ฅธ ๋ง์ ๋ ์ณ๋ ๋ค HelloServlet์ผ๋ก ์ด๋ํ๋ค.
*์ ๋ชจ๋ ๊ฒ์ ๋ปํ๋ค. ๋ฐ๋ผ์ /hello/*์ hello/do, hello/goood, ... ๋ฑ ์๋ฌด๊ฑฐ๋ ์๋ ๋๋ค๋ ์๋ฆฌ์ด๋ค.
loadOnStartup =1์ ํด๋น ์๋ธ๋ฆฟ์ ๊ฐ์ฒด๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด ์ด๊ธฐํ ํ๊ฒ ๋ค๋ ์๋ฆฌ๋ค.
์๋ ์๋ธ๋ฆฟ์ ๋ฆ์ ์ด๊ธฐํ๊ฐ ์์น์ด๋ค. ๋ฏธ๋ฆฌ ๊ฐ์ฒด๋ฅผ ์ ๋ง๋ค์ด๋๋ค๊ฐ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ๊ทธ ๋ ๋ง๋ ๋ค.
2. ์๋ธ๋ฆฟ์ ์๋๊ตฌ์กฐ (์ถ๊ฐ)
(1)mapping์ ์ข ๋ฅ
์ข ๋ฅ | URL pattern | ๋งค์นญ๋๋ ๋ธ๋ผ์ฐ์ URL ์์ | |
1. exact mapping | /login/hello.do | http://localhost/ch2/login/hello.do | |
2. path mapping | /login/* | http://localhost/ch2/login/ http://localhost/ch2/login/hello http://localhost/ch2/login/hello.do http://localhost/ch2/login/test/ http://localhost/ch2/login/brother |
|
3. extension mapping | *.do | http://localhost/ch2/hi.do http://localhost/ch2/login/hello.do |
|
4. default mapping | / | http://localhost/ch2/ http://localhost/ch2/login/hello http://localhost/ch2/login/hello.do http://localhost/ch2/login/test/ http://localhost/ch2/login/brother (๊ธฐ๋ณธ ์ฃผ์๋ง ์น๋ฉด ๋ค ๊ฑธ๋ฆผ) |
๋ฒํธ์ ๋ฐ๋ผ ์ฐ์ ์์๋ก ์ ์ฉ๋๋ค.
์ ์ผ ๋จผ์ ๋ธ๋ผ์ฐ์ ์ ์ ์ URL๊ณผ ์ ํํ๊ฒ ์ผ์นํ๋ URL pattern์ด ์๋์ง ์ฐพ๋๋ค. ์์ผ๋ฉด ๊ธ๋ก ๊ฐ๋ค.
์ ํํ ์ผ์นํ๋ URL ์ฃผ์๊ฐ ์๋ค๋ฉด,
๋ ๋ฒ์งธ ์ฐ์ ์์๋ ๋ธ๋ผ์ฐ์ URL์ ๋งจ๋ ์ธ๋ถ ์ฃผ์๋ฅผ ๋บ ๊ฒฝ๋ก ์ฃผ์๊ฐ ๋ชจ๋ ์ผ์นํ๋ URL pattern์ด ์กด์ฌํ๋์ง ์ฐพ๋๋ค.
URL ํจํด์ /login/* ๋ก ์ ์ผ๋ฉด ๋งจ ๋ ์ธ๋ถ์ฃผ์๊ฐ ๋ฌด์์ด๋ ์๊ด์์ด ๊ฒฝ๋ก์ฃผ์๊ฐ /login/์ผ๋ก ๋๋๋ ๋ ์์ด๋ฉด ์ ๋ถ ๋งคํ๋๋ค.
๊ทธ ๋ง์ ๋ ์๋ค๋ฉด ๋งจ ๋ ํ์ฅ์๊ฐ ๋ธ๋ผ์ฐ์ ์ ์ด ๊ฒ๊ณผ ์ผ์นํ๋ URL ํจํด์ด ์๋์ง ์ฐพ๋๋ค.
๋ค ์์ผ๋ฉด, ๊ธฐ๋ณธ์ฃผ์๋ง ์น๋ฉด ๋์ค๋ default page๋ก ์ด๋ํ๋ค.
(2)์๋ธ๋ฆฟ์ ์๋๊ตฌ์กฐ(์ถ๊ฐ)
์์์ ๋ฐฐ์ ๋ children ๋ช ๋ถ๋ฅผ ํตํด ์์ฒญ ์ฒ๋ฆฌํ ์๋ธ๋ฆฟ์ด ์กด์ฌํ๊ณ , ํด๋น ์๋ธ๋ฆฟ์ ๊ฐ์ฒด๊ฐ ์กด์ฌํ๋์ง ์ฌ๋ถ๋ฅผ ์ฒดํฌํ๊ธฐ ์ ์, ๋ธ๋ผ์ฐ์ ์์ฒญ์ด ์ด๋ค ์๋ธ๋ฆฟ์ผ๋ก ๋งคํ์ด ๋๋์ง ์ฐพ๋ ๊ณผ์ ์ด ์ถ๊ฐ ๋์๋ค.
a. ~~/hello ๋ผ๋ URL ๋ก ์์ฒญ์ด ๋ค์ด์๋ค๋ฉด, com.fastcampus.ch2.HelloServlet์ด๋ผ๋ ์๋ธ๋ฆฟ์ด๋ ๋งคํ์ด ๋๋ค.
๊ทธ๋ฌ๋ฉด ServletContext๊ฐ ํด๋น ์๋ธ๋ฆฟ์ด ์๋์ง ์ฒดํฌํ๊ณ , ํด๋น ์๋ธ๋ฆฟ์ด ๊ฐ์ฒด๋ฅผ ๊ฐ์ง๊ณ ์๋์ง ๋ณธ๋ค. ์์ผ๋ฉด ๊ทธ ๊ฐ์ฒด๋ก ์์ฒญ์ ๋๊ธด๋ค.
b. ~~/hello.jsp๋ผ๋ URL ์์ฒญ์ด ๋ค์ด์๋ค. ์ด ๊ฒฝ์ฐ ์๋ฒฝํ ์ผ์นํ๋ URL ํจํด์ด ์กด์ฌํ์ง ์๋๋ค. ๋ฐ๋ผ์ ๋๋ฒ์งธ ๊ฒฝ๋ก ์ฃผ์๊ฐ ์ผ์นํ๋ ๋ ์์ด ์๋์ง ์ฐพ์๋ดค๋๋ฐ ~~/* URL ํจํด์ ์๋ค. ๋ฐ๋ผ์ ๊ฒฝ๋ก์ฃผ์ ์ผ์นํ๋ URL ํจํด๋ ์๋ค. ๊ทธ๋ฌ๋ฉด ์ธ๋ฒ์งธ๋ก ํ์ฅ์๊ฐ ์ผ์นํ๋ ๋ ์์ ์ฐพ๋๋ค *.jsp๋ผ๊ณ ์๋ค! ๋ฐ๋ผ์ jsp๋ ์๋ธ๋ฆฟ๊ณผ ๋งคํ์ด ๋๋ค.
c. ๋ง์ฝ์ ~~/hello.do ๋ผ๋ URL ์์ฒญ์ด ๋ค์ด์๋ค๋ฉด, ํด๋น ์์ฒญ์ ์์ ์ผ์นํ๋ URL ํจํด, ๊ฒฝ๋ก์ฃผ์๊ฐ ๊ฐ๊ฑฐ๋ ํ์ฅ์๊ฐ ์ผ์นํ๋ URL ํจํด๋ ์๋ค ๋ฐ๋ผ์ ๋งจ ๋ง์ง๋ง default page๋ก ๊ฐ๋ค. default page๋ฅผ ๋ณด์ฌ์ฃผ๋ servelt์ DefaultServlet์ด๋ผ ํ๋ค.
์ํ์น์์๋ DefaultServlet ๋์ DispatcherServlet์ ์ฐ๋๋ก ์ค์ ํด๋จ๋ค.
** ๋ฒ์ธ **
Spring ํ๊ฒฝ์์๋ ์๋ธ๋ฆฟ์ด๋ JSP๋ฅผ ์ฐ์ง ์๋๋ค. (JSP๋ view๋ก ์ฐ๊ธด ํ์ง๋ง ๋ฑ๋ก์ ํ์ง ์๋๋ค.)
๋ฐ๋ผ์ servletMapping์ด๋ children๋ ์ฐ์ง ์๋๋ค.
๋ฐ๋ผ์ ๋ธ๋ผ์ฐ์ ์์ ์ด๋ค URL๋ก ์์ฒญ์ ๋ณด๋ด๋ ๋ฌด์กฐ๊ฑด default๋ก ๊ฐ๊ฒ ๋๊ณ , DispatcherServlet์ผ๋ก ๊ฐ๊ฒ ๋๋ค.
๊ทธ๋ฌ๋ฉด ์ด๋ป๊ฒ URL๋ค์ ๊ตฌ๋ถํ์ฌ ๋ฌด์จ ์์ฒญ์ธ์ง ํ์ ํ ๊น?
Spring์์๋ DispatcherServlet ๋ด๋ถ์ ์์ ๊ฐ์ Mapping์ ๋ค ๊ฐ์ง๊ณ ์๋ค.
๋ฐ๋ผ์ ๋ด๋ถ์์ ์ฒ๋ฆฌํ๋ค.
3. EL (Expression Language)
(1) EL ์ ์ฐ๋ ์ด์
JSP์ ์๋ฐ ์ฝ๋๋ฅผ ์ธ ๋ ํธ๋ฆฌํ๊ฒ ์ธ๋ ค๊ณ .
(2) EL์ ์ฐ๋ ค๋ฉด request ๊ฐ์ฒด ๋ด์ ์ ์ฅ์์ ์ด์ฉํ ๊ฐ๋ค์ ์ ์ฅํด๋ฌ์ผ ํ๋ค.
EL์ ์ง์ญ๋ณ์๋ฅผ ๊ทธ๋๋ก ์ฐ์ง ๋ชปํ๋ค ๋ฐ๋ผ์
request.setAttribute("key",value)๋ก ๊ฐ์ ์ ์ฅํด์ผํ๋ค.
๊ทธ๋ฌ๋ฉด request ๊ฐ์ฒด ๋ด๋ถ์ map ํ์์ผ๋ก ์๋ ์ ์ฅ์์ ์ด๋ฆ-๊ฐ ํํ๋ก ์ ์ฅ๋๋ค.
๊ทธ๋ฌ๋ฉด EL ์ธ ์ ์๋ค.
EL ์ Null ์ ์ถ๋ ฅํ์ง ์๋๋ค. ๊ณต๋ฐฑ์ผ๋ก ๋ณด์ฌ์ค๋ค.
๋ฌธ์์ด + ์ซ์๋ java์์๋ "1"+ 1 = 11์ด ๋๋๋ฐ , EL์์๋ ๋ฌธ์์ด์ ์ซ์๋ก ๋ฐ๊ฟ์
"1"+1 = 2๊ฐ ๋์ด.
EL์ ๋ฌธ์์ด ํํ์ ์ซ์๋ฅผ ์ซ์๋ก ๋ฐ๊ฟ์ค๋ค.
๊ณ์ฐ ์์๋ ๋น ๋ฌธ์(" ")๋ Null์ 0์ผ๋ก ๋ฐ๊พผ๋ค.
empty ๋ฐฐ์ด, ์ปฌ๋ ์
-> empty null ํน์ empty ๋น ์ปฌ๋์ , ๋น ๋ฐฐ์ด = ture
์์ด ๋น์์ผ๋ฉด true๋ฅผ ๋ฐํ