[MVC] ์๋ธ๋ฆฟ, JSP, MVC
Categories: Spring
Tags: MVC, Spring, ๊ฐ๋ ์ ๋ฆฌ
๐ ๊ฐ์ธ์ ์ธ ๊ณต๊ฐ์ผ๋ก ๊ณต๋ถ๋ฅผ ๊ธฐ๋กํ๊ณ ๋ณต์ตํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ธ๋ก๊ทธ์
๋๋ค.
์ ํํ์ง ์์ ์ ๋ณด๊ฐ ์์ ์ ์์ผ๋ ์ฐธ๊ณ ๋ฐ๋๋๋ค :๐ธ
[ํ๋ฆฐ ๋ด์ฉ์ ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์๋ฉด ๋ณต๋ฐ์ผ์ค๊ฑฐ์์]
์๋ธ๋ฆฟ(Servlet)
- ์๋ธ๋ฆฟ์ ์๋ฐ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋๋ ๊ธฐ์ ์ค ํ๋ > ์ฌ์ ํ ์ฌ์ฉ
- ์๋ธ๋ฆฟ์ ์น ์๋ฒ์์ ์คํ๋๋ ์๋ฐ ํด๋์ค๋ก, HTTP ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ , ๋์ ์ธ ์น ํ์ด์ง๋ฅผ ์์ฑํ๋ ๊ธฐ์
- ์๋ธ๋ฆฟ์ ์๋ฐ ํ์ค API์ธ Servlet API๋ฅผ ์ ๊ณต
- ๋จ์
- ์๋ธ๋ฆฟ์ ๊ธฐ๋ฐ์ด ์๋ฐ ํด๋์ค๋ผ์ ์๋ฐ์ฝ๋์ HTML์ฝ๋๋ฅผ ๊ฐ์ด ์ฐ๋๋ฐ HTML ์ฝ๋์ ์์ฑ์ด ๋๋ฌด ๋ฒ๊ฑฐ๋กญ๊ณ ํ๋ฆ
- ์๋ฐ์ฝ๋ ๋ฒ ์ด์ค + HTML ์๋ฐ์คํ์ผ๋ก ์ฝ์ : html์ ๋ฌธ์์ด๋ก ์ฌ์ฉ, ๋ณต์ก๋ ์ฆ๊ฐ
JSP(Java Server Pages)
- JSP์์ ์์ฑํ ๋ฌธ์๊ฐ ์๋ธ๋ฆฟ์ผ๋ก ์คํ๋จ
- HTML ๋ฒ ์ด์ค ์์ ์๋ฐ๋ฅผ ์ถ๊ฐํ์ฌ ์ฌ์ฉํ์ฌ ์น ํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๋ ๊ธฐ์
- JSP๋ ์๋ฐ ์ฝ๋๋ฅผ ์ผ๋ฐ ํ ์คํธ์ ํจ๊ป ์์ฑํ๋ฉฐ, ์๋ธ๋ฆฟ์ผ๋ก ๋ณํ๋์ด ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์คํ๋จ
- JSP๋ ์๋ฐ ํ์ค API์ธ JSP API๋ฅผ ์ ๊ณต
- HTML ์ฝ๋ ๋ฒ ์ด์ค + ์๋ฐ์ฝ๋ ์ฝ์
Spring
- 2004๋ - ์คํ๋ง(Spring) ํ๋ ์์ํฌ๊ฐ ๋ฑ์ฅ
- ์๋ฐ ๊ธฐ๋ฐ์ ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ํ ์คํ์์ค ํ๋ ์์ํฌ
- spring ์ด์ ์ ์น๊ฐ๋ฐ์ ์ถฅ๊ณ ์ธ์ธํ์ง๋ง ์คํ๋ง ๋์ค๋ฉด์ ์ด์ ๋ด์ด ๋์๋ค๋ ๋ป์์ Spring
- ์คํ๋ง์ ๋ํ๊ธฐ์ โ DI(Dependency Injection)์ AOP(Aspect-Oriented Programming : ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ) ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์๋ค์ด ๋์ฑ ํธ๋ฆฌํ๊ฒ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ์ ์๋๋ก ๋์์ค
MVC Architecture
- ์๋ฐ์นํ๋ก๊ทธ๋๋ฐ์์ ์ฌ์ฉ๋๋ ๋ํ์ ์ธ ์ํคํ ์ฒ ํจํด ์ค ํ๋.
- ๊ฐ๊ฐ์ ์ญํ ์ ๋ฐ๋ผ ๋ชจ๋ํํ์ฌ ๊ฐ๋ฐํ๋ ๋ฐฉ์์ผ๋ก, ์ ์ง๋ณด์์ฑ, ํ์ฅ์ฑ, ์ฌ์ฌ์ฉ์ฑ์ ๋์ผ ์ ์์
- Model : ์ค์ ๊ฐ๋ฐ์๊ฐ ์์ฑํ๋ ๋ถ๋ถ , java
- ๋ฐ์ดํฐ์ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ
- ์ฌ์ฉ์๊ฐ ์์ฒญํ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ, ์์ , ์ญ์ ํ๋ ์ญํ ์ ํจ
- ๋ณดํต DAO(Data Access Object) ํจํด์ ์ฌ์ฉํ์ฌ ๊ตฌํ
- View: jsp, ์์ฆ์ ์ ์ด์จ ํ์ ์ผ๋ก ๋ณด๋ด๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์ ๋ทฐ๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์. - ๋ฐ์ดํฐ๋ฅผ ์๊ฐ์ ์ผ๋ก ์ถ๋ ฅํด์ฃผ๋ ๋ถ๋ถ
- ํด๋ผ์ด์ธํธ ์ธก์์ ์ฌ์ฉ์๊ฐ ์์ฒญํ ๊ฒฐ๊ณผ๋ฅผ ํ์
- HTML, JSP ๋ฑ์ ์ฌ์ฉํ์ฌ ๊ตฌํ
- Controller: ์๋ธ๋ฆฟ - Model๊ณผ View๋ฅผ ์ฐ๊ฒฐํ์ฌ ์ฌ์ฉ์์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ.
- ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ์์ Model์ ํธ์ถํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ View์ ์ ๋ฌํ์ฌ ์๋ต์ ์์ฑ
- ๋ณดํต Servlet์ ์ฌ์ฉํ์ฌ ๊ตฌํ.
- Model : ์ค์ ๊ฐ๋ฐ์๊ฐ ์์ฑํ๋ ๋ถ๋ถ , java
MVC ํจํด์ ์ฌ์ฉํ๋ฉด ์ฝ๋์ ๊ตฌ์กฐ๊ฐ ๋ช
ํํด์ ธ ์ ์ง๋ณด์๊ฐ ์ฉ์ดํด์ง๋ฉฐ, ์ฌ์ฌ์ฉ์ฑ๊ณผ ํ์ฅ์ฑ๋ ๋์์ง.
๋ํ ๊ฐ๋ฐ์ ๊ฐ ํ์
์ด ์ฉ์ดํด์ง๊ณ , ์ฝ๋์ ๊ฐ๋
์ฑ์ด ์ข์์ ธ ์์ฐ์ฑ์ ๋์ผ ์ ์์
์๋ธ๋ฆฟ(Servlet)
๊ฐ๋ฐํ ๋ ์๋ธ๋ฆฟ ๋ชฐ๋ผ๋ ๋๊ธดํ์ง๋ง ๋์์๋ฆฌ๋ ๋์ค์ ์๊ธด ํด์ผ ํจ.
๋น์ฅ์ ๊น๊ฒ ์์๋์ง๋ ์์๋๋จ.
์๋ธ๋ฆฟ์ ๋ชจ๋ฅธ๋ค๋ฉด, ์๋ธ๋ฆฟ์ปจํ ์ด๋๋ ๋ชจ๋ฅด๊ณ ๊ด๋ฆฌํด์ฃผ๋ ํฐ์บฃ์ ๋ชจ๋ฅธ๋ค๋ ๊ฒ์ด ๋จ์ผ๋ก
๋์๊ฐ๋ ๋์๊ณผ์ ์๋ฆฌ ์กฐ์ฐจ ๋ชจ๋ฅธ์ฑ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋๋ ๊ฒ์ด ๋จ.
ํฐ์บฃ์ ์๋ธ๋ฆฟ์ ๊ด๋ฆฌํ๊ณ ์์
- ์๋ธ๋ฆฟ์ด๋
- ๋์ ์น์ดํ๋ฆฌ์ผ์ด์ ์ ์ปดํฌ๋ํธ (์น ํ์ด์ง๋ฅผ ์๋ฐ ์ธ์ด๋ก๋ง ๊ตฌ์ฑ)
- .java ํ์ฅ์
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋์ ์ผ๋ก ์๋ํ๊ณ ์๋ต์ html์ ์ด์ฉ
- java thread๋ฅผ ์ด์ฉํ์ฌ ๋์
- MVCํจํด์์ Controller๋ก ์ด์ฉ
- JSP ํ์ผ๋ ์น ์๋ฒ ๋ด์์ Servlet์ผ๋ก ๋ณํ๋์ด ์คํ๋จ.
- ์๋ ๋ณํ๋๋ ์ฝ๋๋ฅผ ์ฌ์ฉํด๋ ๋์ง๋ง, ์ง์ Servlet์ ์์ฑํ๋ ๊ฒ ๋ํ ๊ฐ๋ฅ
-
์๋ธ๋ฆฟ ๋งตํ
- ์๋ฐ ํด๋์ค๋ก ์์ฒญ์ ๋ฐ์ ์ฒ๋ฆฌํ ์ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ - ์ง์ ๋ url์ ํตํด ๋งตํ ์ฒ๋ฆฌ๋ฅผ ์งํํด์ผ ํ๋ค. - ๋งตํํ url๋ก ์์ฒญ์ด ๋ค์ด์์ ๋, ํน์ ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ ์ปดํ์ผ์ ์งํํ๊ณ - ์์ฒญ์ ๋ํ ์๋ต์ ๋ณด๋ด์ฃผ๋ ๋ฐฉ์์ ์ฌ์ฉ - ๋ํ ์๋ฒ ๋ด๋ถ ๊ฒฝ๋ก๊ฐ ๋ ธ์ถ๋์ด ๋ณด์์ ์ํ์ด ์๊ธฐ๋ ๊ฒ์ ๋ฐฉ์งํด ์ฃผ๊ธฐ๋ ํจ
2.1 URL ๋งตํ ๋ฐฉ๋ฒ 2๊ฐ์ง
ํน์ URL ์์ฒญ์ด ํด๋น ์๋ธ๋ฆฟ์ผ๋ก ์ ๋ฌ๋๋๋ก ์ค์ ํ๋ ๊ณผ์
- annotation - ํด๋์ค ์ ์ธ๋ถ ๋ฐ๋ก ์์ ์์ฑ
- ์์
- /banana ๋ผ๋ ์์ฒญ์ ๋ณด๋ด๋ฉด ServletBasic ํด๋์ค์ ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ค.
- HttpServlet ํด๋์ค๋ฅผ ์์๋ฐ์ผ๋ฉด, ์์ฒญ๊ณผ ์๋ต์ ๊ด๋ จ๋ ์ฌ๋ฌ ๋ฉ์๋๊ฐ ์ ๊ณต
- ์์
1 2 3 4
@WebServlet("/hello") public class HelloWorldServlet extends HttpServlet { // doGet ๋ฉ์๋ ๊ตฌํ }
- ์์
-
web.xml ์ค์ ํ์ผ ์์ โ
- ์น ์๋ฒ์ ์ ๋ฐ์ ์ธ ์ค์ ์ ๋ด๋นํ๋ web.xml ํ์ผ์ ์ง์ ๋ฑ๋กํ๋ ๋ฐฉ์
- ์๋ธ๋ฆฟ ํด๋์ค๋ฅผ ๋จผ์ ๋ฑ๋กํ๊ณ , ํด๋น ์๋ธ๋ฆฟ์ด ์ด๋ค url์ ๋์ํ๊ฒ ํ ์ง๋ฅผ ๋งตํํ๋ ๋ฐฉ์.
์์
1 2 3 4 5 6 7 8
<servlet> <servlet-name>HelloWorldServlet</servlet-name> <servlet-class>HelloWorldServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloWorldServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
- annotation - ํด๋์ค ์ ์ธ๋ถ ๋ฐ๋ก ์์ ์์ฑ
์๋ธ๋ฆฟ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ
- ์๋ธ๋ฆฟ์ HttpServlet ํด๋์ค๋ฅผ ์์๋ฐ์ ๊ตฌํ
- ์ฃผ์ ๋ฉ์๋
- doGet(HttpServletRequest request, HttpServletResponse response): GET ์์ฒญ์ ์ฒ๋ฆฌ
- doPost(HttpServletRequest request, HttpServletResponse response): POST ์์ฒญ์ ์ฒ๋ฆฌ
-
์์
1 2 3 4 5 6 7 8 9 10 11
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorldServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<h1>Hello, World!</h1>"); } }
- ์ถ์๋ฉ์๋
- ์์๋ฐ์์ ์ฌ์ฉํจ.
- html์ ๋ฐํํ๋๊น ๋ฌธ์์ด๋ก
์๋ธ๋ฆฟ ์๋ช ์ฃผ๊ธฐ
- ๋ก๋์ ์ด๊ธฐํ: ์๋ธ๋ฆฟ์ด ์ฒ์ ํธ์ถ๋ ๋ init() ๋ฉ์๋๊ฐ ์คํ๋จ
- ์์ฒญ ์ฒ๋ฆฌ: ๊ฐ ์์ฒญ๋ง๋ค service() ๋ฉ์๋๊ฐ ํธ์ถ๋๊ณ , ์ด ๋ฉ์๋๋ ์์ฒญ ์ ํ์ ๋ฐ๋ผ doGet(), doPost() ๋ฑ์ ํธ์ถํจ
- ์ข ๋ฃ: ์๋ฒ๊ฐ ์ข ๋ฃ๋๊ฑฐ๋ ์๋ธ๋ฆฟ์ด ์ธ๋ก๋๋ ๋ destroy() ๋ฉ์๋๊ฐ ํธ์ถ
-
์์
1 2 3 4 5 6 7 8 9 10 11 12 13
public class LifecycleServlet extends HttpServlet { public void init() throws ServletException { // ์ด๊ธฐํ ์์ } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // ์์ฒญ ์ฒ๋ฆฌ } public void destroy() { // ์ข ๋ฃ ์์ } }
HTTP ์์ฒญ๋ฐฉ์
- GET: ๋ฐ์ดํฐ๋ฅผ URL์ ํฌํจํ์ฌ ์ ์ก.
- POST: ๋ฐ์ดํฐ๋ฅผ ์์ฒญ ๋ณธ๋ฌธ์ ํฌํจํ์ฌ ์ ์ก.
-
์์
1 2 3 4 5
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<h1>Response from Servlet</h1>"); }
JSP
- ๋์ ์น์ ํ๋ฆฌ์ผ์ด์
์ปดํฌ๋ํธ (HTML์ Java ์ฝ๋๋ฅผ ์ฝ์
ํ์ฌ ๋์ ์ธ ๋ฌธ์๋ฅผ ๋ง๋ฌ)
- ํ์ง๋ง ์ด ๋ด์ฉ์ ๊ทธ๋๋ก ๋ธ๋ผ์ฐ์ ์๊ฒ ์ ๋ฌํ๋ฉด, ๋ธ๋ผ์ฐ์ ๋ Java ์ธ์ด๋ฅผ ์์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ํ๋ฉด์ ํํํ ์ ์๊ณ , ๊ธฐ๋ฅ์ ๊ตฌํํด ๋ผ ์ ์์
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ JSP ํ์ผ์ ์น ์๋ฒ์์ Servlet์ผ๋ก ๋ณํํ ํ์ ์คํ๋๋ค.
- JSP ํ์ผ์ Servlet์ผ๋ก ๋ณํํ ๋, ์ด๋ค ๋ถ๋ถ์ด ํ ์คํธ/HTML์ธ์ง, Java ์ฝ๋์ธ์ง๋ฅผ ๊ตฌ๋ถํ๊ฒ ํ๊ธฐ ์ํด์ JSP ํ๊ทธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- MVC ํจํด์ View๋ก ์ด์ฉ๋จ.
- .jsp ํ์ฅ์
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋์ ์ผ๋ก ์์ฉ, ์๋ต์ HTML ์ด์ฉ
JSP ํ๊ทธ
-
Scriptlet
- JSP ํ์ด์ง์์ Java ์ธ์ด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ์์ ์ค ๊ฐ์ฅ ํํ๊ฒ ์ฌ์ฉํ๋ ํ๊ทธ
- Scriptlet์ ์์ฑํ ๋ด์ฉ์ Servlet ๋ณํ ์ ๋ฉ์๋ ๋ด์ ์กด์ฌ
- ๋ฉ์๋ ๋ด์์ ์ฌ์ฉํ ์ ์๋ ๋ฌธ๋ฒ์ ๊ฐ๋ฅ, ๋ฉ์๋ ์ธ๋ถ ๋ฌธ๋ฒ์ ์์ฑ ๋ถ๊ฐ๋ฅ
-
Expression
โ
โ <% ~~JAVA~ %>
- JSP ํ์ด์ง ๋ด์์ ์ฌ์ฉ๋๋ ๋ณ์์ ๊ฐ ๋๋ ๋ฉ์๋ ํธ์ถ ๊ฒฐ๊ณผ ๊ฐ์ ์ถ๋ ฅํ๊ธฐ ์ํด ์ฌ์ฉ.
- ๊ฒฐ๊ณผ ๊ฐ์ ๋ฐ์ดํฐ ํ์ ์ String์ด๋ฉฐ, ์ธ๋ฏธ์ฝ๋ก ์ ์์ฑํ์ง ์์
- Servlet์์ out.println(); ๋ฉ์๋๋ก ๋ณํ โ out.println()์ ๋ธ๋ผ์ฐ์ ์ ์ถ๋ ฅ์ ๋ด๋นํ๋ JspWriter๋ผ๋ ๊ฐ์ฒด์ ๋ฉ์๋
- JSP๋ ์คํํ ๋๋ ์๋ธ๋ฆฟ์ผ๋ก ๋ณ๊ฒฝ๋์ด์ผ ํจ.
-
Declaration
- JSP ํ์ด์ง ๋ด์์ ์ฌ์ฉ๋๋ ๋ณ์ ๋๋ ๋ฉ์๋๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉ.
- Declaration์ ์ ์ธ๋ ๋ด์ฉ์ Servlet ๋ณํ ์ ํด๋์ค ๋ธ๋ก์ ์์นํจ.
- ํด๋์ค ๋ธ๋ก์ ์ ์ธํ ์ ์๋ ๋ฌธ๋ฒ์ ๋ชจ๋ ๊ฐ๋ฅ.
- ํ์ผ๋ช ์ผ๋ก ๊ฐ์ฒด๊ฐ ์์ฑ๋๊ณ , ๊ฐ์ฒด๊ฐ ์ ์ง ๋๋ ๋์์ ์ฌ์ฉํ ๋ด์ฉ๋ค์ ์ ์ธ
-
Directive : JSP ํ์ด์ง์ ์ ์ฒด์ ์ธ ์์ฑ์ ์ง์ ํ ๋ ์ฌ์ฉ
โ
-
page
- jsp ํ์ด์ง์ ๋ํ ์ ๋ณด๋ฅผ ์ง์
- JSP๊ฐ ์์ฑํ๋ ๋ฌธ์์ ํ์ , ์ํฌํธ, ์๋ฌ ํ์ด์ง ๋ฑ ํ์ด์ง์์ ํ์๋ก ํ๋ ์ ๋ณด๋ฅผ ์ค์
- include
- JSP ํ์ด์ง์ ํน์ ์์ญ์ ๋ค๋ฅธ ๋ฌธ์๋ฅผ ํฌํจ์ํด
- taglib
- ์ธ๋ถ ํ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ ํด์ ์ฌ์ฉํ ๋ ์ ์ธ
-
-
Comments
- ์ฃผ์ ๊ธฐ๋ฅ์ ๋๋ค.
- HTML๊ณผ JSP ์ฃผ์์ด ๊ฐ๊ฐ ๋ณ๋๋ก ์ ์ฅ
- HTML ์ฃผ์์ ์น ๋ธ๋ผ์ฐ์ ์์ ํ์ด์ง ์์ค๋ณด๊ธฐ๋ฅผ ํ๋ฉด ์ฃผ์๋ ๊ฐ์ด ํ๊ธฐ๋์ง๋ง JSP ์ฃผ์์ ์น ๋ธ๋ผ์ฐ์ ์์ ์์ค ๋ณด๊ธฐ๋ฅผ ์งํํด๋ ๋๋ฌ๋์ง ์์
JSP ํ์ผ์ ์คํํ์ ๋ ์ฒ๋ฆฌ ์์
- JSP ํ์ผ์ ์คํํ๋ฉด ์น ์๋ฒ์์ ์ผ๋จ JSP ํ์ผ์ Java ์ฝ๋๋ก ๋ณํ
- ๋ณํ ๊ณผ์ ์์ ์์ฑํ JSP ํ๊ทธ์ ๋ฐ๋ผ ์ฝ๋๋ฅผ ๋ฐฐ์น
- HTML๊ณผ ํ ์คํธ ๋ฑ๋ ์ ๋ถ ์๋ฐ ์ฝ๋ํ
- ๊ทธ ํ ํ์ผ์ ์ปดํ์ผ ํ๊ณ HTML๋ก ์๋ต ์ํด
์ฟ ํค์ ์ธ์
์๋ ์ ์ธ์ ์ ๋ ๋ง์ด ์ฐ๊ณ ์์๋ JSON TOKEN์ ๋ ๋ง์ด ์ฌ์ฉ.
์ธ์ ์ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ณด์ ๋๋ฌธ, ์ธ์ ์ ๊ณต์ ํ ์ ์๋ค๋ ๋จ์ ์ด ์์
์ธ์ ์์ ์๋ฒ๋ฅผ ๋๋๋ ๊ฑธ๋ก ๋ณด์ ๊ฐ๋ฅ.
์ฟ ํค๋?
- ์ฟ ํค(Cookie)๋ ์น ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )์๊ฒ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์์ ํ ์คํธ ํ์ผ
- ํด๋ผ์ด์ธํธ ์ธก์์ ๋ก์ปฌ์ ์ ์ฅ๋๋ฉฐ, ํด๋ผ์ด์ธํธ๊ฐ ์น ์๋ฒ์ ์์ฒญ์ ๋ณด๋ผ ๋ ํด๋น ์ ๋ณด๋ฅผ ํจ๊ป ์ ์กํ์ฌ ์ํ๋ฅผ ์ ์งํ๊ฑฐ๋ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ
- ์ฟ ํค๋ ํด๋ผ์ด์ธํธ์ ์ํด ์์ฑ๋์ด ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋๋ฉฐ, ์น ์๋ฒ๋ก์ ์์ฒญ์ด ์์ ๋๋ง๋ค ํด๋น ์ฟ ํค๊ฐ ์น ์๋ฒ๋ก ์ ์ก๋จ
- ์๋ฒ๋ ์ ์ก๋ ์ฟ ํค๋ฅผ ์ฝ์ด ํด๋ผ์ด์ธํธ์ ์ ๋ณด๋ฅผ ํ์ธํ๊ณ , ํ์ํ ๊ฒฝ์ฐ ์๋ฒ ์ธก์์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฑฐ๋ ์๋ก์ด ์ฟ ํค๋ฅผ ์์ฑํ์ฌ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์ก๊ฐ๋ฅ
- ๋ค์ํ ์ฉ๋๋ก ์ฌ์ฉ ๊ฐ๋ฅ
- ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ ์ ์งํ๊ธฐ ์ํด ์ฌ์ฉ์์ ์ธ์ฆ ์ํ๋ฅผ ํ์ธ
- ์ฌ์ฉ์์ ์ ํธ ์ธ์ด, ํ ๋ง, ๊ธ๊ผด ๋ฑ์ ๊ฐ์ธํ๋ ์ค์ ์ ๊ธฐ๋ก์ ์ถ์ ํ๊ฑฐ๋
- ๊ด๊ณ ํ๊ฒํ ์ ์ํด ์ฌ์ฉ๊ฐ๋ฅ
- ์ฟ ํค๋ ๋ณด์๊ณผ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ์ธก๋ฉด์์ ์ฃผ์ํด์ผํจ.
-
์ค์ํ ๊ฐ์ธ ์ ๋ณด๋ฅผ ์ ์ฅํ์ง ์๋๋ก ์ฃผ์ํด์ผํ๋ฉฐ,
- ํ์ํ ๊ฒฝ์ฐ ์ํธํ๋ ์์ ํ ์ ์ก์ ์ํ HTTPS๋ฅผ ์ฌ์ฉํ๋ ๋ฑ ๋ณด์์ ๊ฐํํด์ผ ํฉ๋๋ค. ๋ํ, ์ฌ์ฉ์์ ๊ฐ์ธ ์ ๋ณด๋ฅผ ์์งํ๊ฑฐ๋ ์ถ์ ํ๋ ์ฟ ํค์ ๊ฒฝ์ฐ์๋ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ๊ด๋ จ ๋ฒ๋ฅ ๋ฐ ๊ท์ ์ ์ค์ํด์ผ ํจ
-
์ธ์ ์ด๋?
- ์ธ์ ๋ ์ฟ ํค์ ๋ง์ฐฌ๊ฐ์ง๋ก ์๋ฒ์์ ๊ด๊ณ๋ฅผ ์ ์งํ์ง ์ํ ์๋จ
- ๋จ, ์ฟ ํค์ ๋ฌ๋ฆฌ ํด๋ผ์ด์ธํธ์ ํน์ ์์น์ ์ ์ฅ๋๋ ๊ฒ์ด ์๋๋ผ, ์๋ฒ์์ ๊ฐ์ฒด ํํ๋ก ์กด์ฌํจ
- ์๋ฒ๋น ํ๋์ ์ธ์ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง ์ ์์(๋ธ๋ผ์ฐ์ ๋ณ๋ก ์๋ก ๋ค๋ฅธ ์ธ์ ์ ์ฌ์ฉ)
- ์ธ์ ๊ฐ์ฒด๋ ๋ธ๋ผ์ฐ์ ์ฐฝ์ ์ข ๋ฃํ๋ฉด ์๋ฉธํฉ๋๋ค.
- ๋ฐ๋ผ์ ์ธ์ ์ ์๋ฒ์์๋ง ์ ๊ทผ์ด ๊ฐ๋ฅํ์ฌ ์ฟ ํค๋ณด๋ค ๋ณด์์ด ์ข๊ณ , ์ ์ฅํ ์ ์๋ ๋ฐ์ดํฐ์ ํ๊ณ๊ฐ ์์ต๋๋ค.
- ์ธ์ ์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ๋ฐ์ํ๋ฉด ์๋ ์์ฑ๋์ด ๊ณ ์ ํ ID๊ฐ์ ํด๋ผ์ด์ธํธ์๊ฒ ๋๊ฒจ์ฃผ๋ฉฐ, ์ด๊ฒ์ ์ฟ ํค์ ์ ์ฅ๋จ
- JSP์์๋ session์ด๋ผ๋ ๋ด์ฅ ๊ฐ์ฒด๋ฅผ ์ง์ํ์ฌ ์ธ์ ์ ์์ฑ์ ์ค์ ๊ฐ
์ฟ ํค VS ์ธ์
- ์ฟ ํค ๋์ ์ธ์
์ ์ฌ์ฉํ๋ ๊ฐ์ฅ ํฐ ์ด์
- ์ธ์ ์ด ๋ณด์์ด ๋ ์ข์์
- ์น๋ธ๋ผ์ฐ์ ๊ฐ ์ฟ ํค๋ฅผ ์ง์ํ์ง ์๊ฑฐ๋ ๊ฐ์ ๋ก ์ฌ์ฉ์๊ฐ ์ฟ ํค๋ฅผ ์ฐจ๋จํ ๊ฒฝ์ฐ์๋ ์ฌ์ฉ ๊ฐ๋ฅ
- ์ฟ ํค์ ์ด๋ฆ์ด๋ ๋ฐ์ดํฐ๋ ๋คํธ์ํฌ๋ฅผ ํตํด ์ ๋ฌ ๋๊ธฐ ๋๋ฌธ์ HTTP ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ค๊ฐ์์ ๋๊ตฐ๊ฐ ์ฟ ํค์ ๊ฐ์ ์ฝ์ด์ฌ ์ ์์
- ์ธ์ ์ ์ค์ง ์๋ฒ์์๋ง ์ ์ฅ ๋จ โ ์ค์ํ ๋ฐ์ดํฐ ์ ์ฅํ๊ธฐ ์ข์
- ๋์ ์ธ์ ์ ์ฌ๋ฌ ์๋ฒ์ ๊ณต์ ํ ์ ์๋ ๋จ์ .
- ์ฟ ํค๋ ์ฌ๋ฌ ๋๋ฉ์ธ์์ ๊ณต์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ํฌํธ์ฌ์ดํธ๋ค์ ์ฟ ํค์ ๋ก๊ทธ์ธ ๋ฐฉ์์ ์ ์ฅํ๋ ๊ฒ์ ์ ํธํจ.
Application ๋ด์ฅ ๊ฐ์ฒด
- ํน์ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ํฌํจ๋ ๋ชจ๋ JSP ํ์ด์ง๋ ํ๋์ application ๊ธฐ๋ณธ ๊ฐ์ฒด๋ฅผ ๊ณต์
- application ๊ฐ์ฒด๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ ๊ฑธ์ณ์ ์ฌ์ฉ๋๋ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์
- ์๋ช
์ฃผ๊ธฐ
- request ๊ฐ์ฒด๋ ์์ฒญ ์์ญ๋ง๋ค ์์ฑ๋๊ณ ์๋ฉธ๋จ
- session ๊ฐ์ฒด๋ ๋ธ๋ผ์ฐ์ ๋ณ๋ก ์์ฑ๋๊ณ ์๋ฉธ
- application ๊ฐ์ฒด๋ ์๋ฒ๊ฐ ์คํ๋ ๋ ์์ฑ๋๊ณ , ์๋ฒ๊ฐ ๊บผ์ง ๋ ์๋ฉธ๋จ
์์ธ์ฒ๋ฆฌ๋ฐฉ๋ฒ
- ์ง์ ์์ธ ์ฒ๋ฆฌํ๊ธฐ
- JAVA์ try-catch๋ฌธ ์ฌ์ฉ
- ์๋ฌ๋ฅผ ์ฒ๋ฆฌํ ํ์ด์ง๋ฅผ ๋ฐ๋ก ์ง์ ํ๊ธฐ
- JSP๋ ์คํ ๋์ค ์์ธ๊ฐ ๋ฐ์ํ ๋ ํฐ์บฃ ๊ธฐ๋ณธ ์๋ฌํ๋ฉด ๋์ ๊ฐ๋ฐ์๊ฐ ์ง์ ํ JSPํ์ด์ง๋ฅผ ๋ณด์ฌ์ค ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํจ
- ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด ๋ณด์ฌ์ค JSPํ์ด์ง๋ ํ์ด์ง ์ง์์(directive)์ errorPage ์์ฑ์ ์ฌ์ฉํ์ฌ ์ง์
-
์์ธ๊ฐ ๋ฐ์ํ ๊ฒ์ผ๋ก ์์๋๋ ํ์ด์ง์ ์์ธ๊ฐ ๋ฐ์ํ์ ๋ ๋ณด์ฌ์ค ํ์ด์ง๋ฅผ ์ง์ .
1
<%@ page errorPage = "์๋ฌ๊ฐ ๋ฐ์ํ์ ๋ ๋ณด์ฌ์ค ํ์ด์ง.jsp" %>
-
์๋ฌ ๋ฐ์์ ์ ๋๋ ํ์ด์ง์๋ ํ์ด์ง ์ง์์ ํ๊ทธ๋ก isErrorPage ์์ฑ์ ์ฌ์ฉํ์ฌ true ๊ฐ์ ์ค์
1
<%@ page errorPage = "์๋ฌ๊ฐ ๋ฐ์ํ์ ๋ ๋ณด์ฌ์ค ํ์ด์ง.jsp" %>
- ์๋ต ์ํ ์ฝ๋๋ณ๋ก ์๋ฌํ์ด์ง ์ง์ ํ๊ธฐ
- JSP๋ ์๋ฌ ์ฝ๋๋ณ ๋๋ ์์ธ ํ์ ๋ณ๋ก ์ฌ์ฉํ ์๋ฌ ํ์ด์ง๋ฅผ web.xml ํ์ผ์ ์ง์ ๊ฐ๋ฅ
-
์ด๋ ๊ฒ ์ง์ ํ ์๋ฌํ์ด์ง๋ ์ผ๋ฐ JSP ํ์ผ๊ณผ ๋์ผํ๊ฒ ์์ฑํ๋ฉด ๋จ.
-
์๋ฌ ํ์ด์ง์ ์ฐ์ ์์
์๋ฌ ํ์ด์ง๋ฅผ ์ฌ๋ฌ ๋ฐฉ๋ฒ์ผ๋ก ์ง์ ํ ๊ฒฝ์ฐ ๋ค์์ ์ฐ์ ์์์ ๋ฐ๋ผ ์ฌ์ฉํ ์๋ฌ ํ์ด์ง๋ฅผ ์ ํํฉ๋๋ค.
- ํ์ด์ง ์ง์์ ํ๊ทธ์ errorPage์์ฑ์ ์ง์ ํ ํ์ด์ง.
- web.xml์ ์ง์ ํ ์๋ฌ ํ์ ์ ๋ฐ๋ฅธ ํ์ด์ง.
- web.xml์ ์ง์ ํ ์๋ต ์ํ ์ฝ๋์ ๋ฐ๋ฅธ ํ์ด์ง.
- ์ 3ํญ๋ชฉ์ ํด๋นํ์ง ์์ ๊ฒฝ์ฐ ํฐ์บฃ์ด ์ ๊ณตํ๋ ์๋ฌ ํ์ด์ง.
Leave a comment