๐กํํฐ, ์ธํฐ์ ํฐ, AOP์ ์ฐจ์ด?
ํํฐ
- ์คํ๋ง ์ปจํ ์คํธ ์ธ๋ถ์ ์กด์ฌํ์ฌ ์คํ๋ง๊ณผ ๋ฌด๊ดํ ์์์ ๋ํด ๋์ํจ.
- ๋ณดํต web.xml์ ๋ฑ๋กํ๊ณ , ์ธ์ฝ๋ฉ ๋ณํ ์ฒ๋ฆฌ, XSS ๋ฐฉ์ด ๋ฑ์ ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ๋ก ์ฌ์ฉ๋จ.
์ธํฐ์ ํฐ
- ์คํ๋ง ์ปจํ ์คํธ ๋ด๋ถ์ ์กด์ฌํ๋ฉฐ Dispatcher Servlet์ด ์ปจํธ๋กค๋ฌ๋ฅผ ํธ์ถํ๊ธฐ ์ , ํ๋ก ๋ผ์ด๋ฌ.
- ์คํ๋ง์ ๋ชจ๋ ๋น ๊ฐ์ฒด์ ์ ๊ทผํ ์ ์์. ์ฌ๋ฌ๊ฐ๋ฅผ ์ฌ์ฉํ ์ ์์(์์ ์ฃผ์).
- ๋ก๊ทธ์ธ ์ฒดํฌ, ๊ถํ์ฒดํฌ, ํ๋ก๊ทธ๋จ ์คํ์๊ฐ ๊ณ์ฐ์์ ๋ก๊ทธํ์ธ ๋ฑ์ ์ ๋ฌด์ฒ๋ฆฌ.
AOP
- ํํฐ์ ์ธํฐ์ ํฐ (ํํฐ์ ์ธํฐ์ ํฐ๋ Servlet ๋จ์์์ ์คํ) ์ ๋ค๋ฅด๊ฒ ๋ฉ์๋ ์์์ Proxy ํจํด์ ํํ๋ก ์คํ๋จ.
- OOP๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ๋์จ ๊ฐ๋ . (OOP์์ ๊ณตํต ์ฌํญ์ ๋ชจ๋ํ ํ๊ฒ์ด๋ผ๊ณ ์ดํดํ๋ค)
- ๋ก๊น , ํธ๋์ญ์ , ์๋ฌ์ฒ๋ฆฌ ๋ฑ ๋น์ฆ๋์ค๋จ์ ๋ฉ์๋์์ ์กฐ๊ธ ๋ ์ธ๋ฐํ๊ฒ ์กฐ์ ํ๊ณ ์ถ์ ๋ ์ฌ์ฉ.
- AOP๋ ์ฃผ์, ํ๋ผ๋ฏธํฐ, ์ด๋ ธํ ์ด์ ๋ฑ ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ๋์์ ์ง์ ํ ์ ์์. (Filter์ Interceptor๋ ์ฃผ์๋ก ๋์์ ๊ตฌ๋ถํด์ ๊ฑธ๋ฌ๋ด์ผํจ)์ด๋ฏธ์ง ์ถ์ฒ : https://goddaehee.tistory.com/154
WEB-INF๋ ์น์ผ๋ก ์ ๊ทผํ ์ ์๋ ๊ฒฝ๋ก์ด๋ค
→ ์ง์ ์คํํ ์ ์๋ค → ํด๋ผ์ด์ธํธ๊ฐ JSP์ ์ง์ ์ ๊ทผํ๋ ๊ฒ์ ๋ง์ ์ ์๋ค!
Spring MVC
- ์คํ๋ง์ DI๋ AOP๊ฐ์ ๊ธฐ๋ฅ ๋ฟ ์๋๋ผ, Servlet ๊ธฐ๋ฐ์ WEB ๊ฐ๋ฐ์ ์ํ MVC Framework๋ฅผ ์ ๊ณต
- DispatcherServlet (Front Controller)
- ๋ชจ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ ๋ฌ๋ฐ์
- Controller์๊ฒ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ ๋ฌํ๊ณ , Controller๊ฐ ๋ฆฌํด ํ ๊ฒฐ๊ณผ๊ฐ์ View์๊ฒ ์ ๋ฌํ์ฌ ์๋ง์ ์๋ต์ ์์ฑ
- ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ค ์์ฒญ์ ํ๋์ง๋ง ๋ฐ๊ณ , ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ถ์ํ๋ ๊ฒ์HandlerMapping์ด ํจ. ์ฐ๋ฆฌ๊ฐ ๋ง๋ค์ด์ผ ํ ๊ฒ์ controller๋ง ๋ง๋ค๋ฉด ๋จ
- Servlet์ด๋ฏ๋ก 1๊ฐ ์ด์์ DispatcherServlet ์ค์ ๊ฐ๋ฅ
- Spring Container๋ DispatcherServlet ์ค์ ํ์ผ์ ๋ด์ฉ์ ์ฝ๊ณ ApplicationContext ๊ฐ์ฒด๋ฅผ ์์ฑํด์ค๋ค.
- ๋ด๊ฐ ์ง์ ๋ง๋๋๊ฒ ์๋
- HandlerMapping
- ํด๋ผ์ด์ธํธ์ ์์ฒญ URL์ ์ด๋ค Controller๊ฐ ์ฒ๋ฆฌํ ์ง ๊ฒฐ์ .
- url๋ฆฌ์คํธ(=๋งคํ ์ ๋ณด)๋ฅผ ๊ฐ์ง๊ณ ์์
- url๊ณผ ์์ฒญ ์ ๋ณด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด๋ค ํธ๋ค๋ฌ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ง ๊ฒฐ์ ํ๋ ๊ฐ์ฒด์ด๋ฉฐ, DispatcherServlet์ ํ๋ ์ด์์ ํธ๋ค๋ฌ ๋งคํ์ ๊ฐ์ง ์ ์์
- ๋ด๊ฐ ์ง์ ๋ง๋๋๊ฒ ์๋
- Controller
- ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ ๋ค, Model(Service๋ Dao)์ ํธ์ถํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ DispatcherServlet์ ์๋ ค์ค๋ค.
- ๋ด๊ฐ ์ง์ ๋ง๋๋ ๊ฒ
- ModelAndView
- ์์ ์ ๋ฐ์ดํฐ ๋๊ฒจ์ค ๋ request.setAttribute()๋ก ๋๊ฒจ์คฌ๋๋ฐ, Spring์์ servlet์ ๋น ์ข ์์ ์ธ ํ๋ก๊ทธ๋จ์ ๋ง๋ฌ → ModelAndView๋ฅผ ํ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋๊ฒจ์ค๋ค
- Controller๊ฐ ์ฒ๋ฆฌํ ๋ฐ์ดํฐ ๋ฐ ํ๋ฉด์ ๋ํ ์ ๋ณด๋ฅผ ๋ณด์ ํ ๊ฐ์ฒด
- ViewResolver
- Controller๊ฐ ๋ฆฌํดํ ๋ทฐ ์ด๋ฆ์ ๊ธฐ๋ฐ์ผ๋ก ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค VIew๋ฅผ ๊ฒฐ์
- ๋ค์ .jsp์ ์์ ๊ฒฝ๋ก๋ฅผ ์์์ ๋ถ์ฌ์ค ( ํ ๋ฒ ์ค์ ์ ํด์ค์ผ ํจ )
- View
- DispatcherServlet์์ ๊ธฐ๋ณธ์ ์ผ๋ก forwardํํ๋ก ๋๊ฒจ์ค
- ์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ jsp
- Controller์ ์ฒ๋ฆฌ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค ์๋ตํ๋ฉด์ ์์ฑ
๋ฐ์ดํฐ๋ฅผ ๋๊ฒจ์ฃผ๋ ๋ฐฉ์ (ModelAndView, Model, Map)
@Controller
public class MainController{
//@GetMapping("/hello")
@RequestMapping(value="/hello", method = RequestMethod.GET)
public ModelAndView hello(){
ModelAndView mav = new ModelAndView();
mav.addObject("msg","์ฌ๊ธฐ์ Object๋ ๋ฃ์ ์ ์๋ค");
mav.setViewName("baisc/result");
return mav;
}
// ๋๋ Model ํ๋ผ๋ฏธํฐ ์ฌ์ฉ
//@GetMapping("/hello")
@RequestMapping(value="/hello", method = RequestMethod.GET)
public String hello(Model model){
model.addAttribute("msg","์ฌ๊ธฐ์ Object๋ ๋ฃ์ ์ ์๋ค");
return "basic/result";
}
// ๋๋ Map ํ๋ผ๋ฏธํฐ ์ฌ์ฉ
//@GetMapping("/hello")
@RequestMapping(value="/hello", method = RequestMethod.GET)
public String hello(Map<String,Object> map){
map.put("msg","์ฌ๊ธฐ์ Object๋ ๋ฃ์ ์ ์๋ค");
return "basic/result";
}
}
Spring MVC ์คํ์์
SpringMVC ๊ตฌํ
1. web.xml์ DispatcherServlet ๋ฑ๋ก ๋ฐ Spring ์ค์ ํ์ผ ๋ฑ๋ก.
Spring Container๋ ํด๋น ์ค์ ํ์ผ์ ๋ด์ฉ์ ์ฝ๊ณ ApplicationContext ๊ฐ์ฒด๋ฅผ ์์ฑ.
2. ์ค์ ํ์ผ์ Handler Mapping ์ค์
3. Controller ๊ตฌํ ๋ฐ Context ์ค์ ํ์ผ(servlet-context.xml)์ ๋ฑ๋ก.
4. Controller์ JSP์ ์ฐ๊ฒฐ์ ์ํด View Resolver ์ค์
5. JSP ์ฝ๋ ์์ฑ
Spring Web Application ๋์์๋ฆฌ
1. web.xml์ ์ฝ์ด๋ค์
2. web.xml์์ ์๋ contextLoaderListener(๋ด ํ๋ก์ ํธ๊ฐ ์ธ์ ๋์ํ๋์ง ๊ฐ์ํ๊ณ ์๋ ๊ฐ์์๋ผ๊ณ ์๊ฐ)๊ฐ ๋์
3. contextLoaderListener๊ฐ root-context.xml (service, dao, db์ ์ ๋ณด)์ ์ฝ์ด๋ค์
4. ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ๋ฉด
5. DispatcherServlet์์ servlet-context.xml์ ์๋ ์์ฒญ์ ๋ณด, controller์ ๋ํ ์ ๋ณด, view Resolver์ ๋ํ ์ ๋ณด๋ค์ ์ฝ์ด๋ค์ฌ์ ์ด๋ค Controller๋ก ๊ฐ์ง ์ค์
'๐๋ฐฑ์๋ : BackEnd' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
REST API (1) | 2024.01.12 |
---|---|
MyBatis (1) | 2024.01.06 |
Spring AOP (1) | 2024.01.02 |
SpringFramework - DI (2) | 2024.01.01 |
MVC Pattern, Session, Cookie (1) | 2024.01.01 |