Controller는 Service에 의존함(서비스가 없으면 다음 일처리를 못하니까)
Service는 Dao에 의존함
bean으로 관리되고 있는 객체는 그냥 달라고 요청하면 됨(new 어쩌구 필요 X) -> @Autowired
@Autowired 타입으로 요청
의존객체 주입 Dependency Injection
Bean으로 관리되고 있는 DemoService타입 객체를 사용시점에 주입받음
예시>
@Autowired
private DemoService demoService;
//컨트롤러의 핸들러 메소드 하나가 사용자 요청 하나를 처리함
@RequestMapping("/demo/devForm.do")
public String devForm() {
System.out.println("/demo/devForm.do가 호출 되었습니다.");
return "demo/devForm"; // /WEB-INF/views/demo/devForm.jsp로 포워딩처리(ViewResolver bean에서 찾아감)
}
파라미터 핸들링
1. HttpServletRedquest
2. @RequestParam
3. Command Object
command pattern
예시>
하나의 단축키에 바인딩된 명령어
ctrl + c -> copy
ctrl + x -> cut
이런 패턴을 따옴(커맨드 오브젝트=vo)
사용자 입력값을 vo 객체를 자동으로 생성해서 vo에 있는 필드에 쏙쏙쏙 대입시켜줌
하나의 값이 하나의 필드에 바인딩되어 있음 ->커맨드 오브젝트라고 함
예시>
사용자 입력값이 필드에 대입돼서 그대로 넘어옴
//Command Object는 자동으로 Model속성으로 등록됨
//@ModelAttribute(name = "dev")생략시 dev에서 유추해서 꺼내쓰게됨
@RequestMapping("/demo/devSubmit3.do")
public String devSubmit3(@ModelAttribute(name = "dev") Dev dev) {
return "demo/devResult";
}
Handler Method가 가질 수 있는 파라미터(내가 필요한거 골라 쓰면됨)
HttpServletRequest
HttpServletResponse
HttpSession
Locale : 요청에 대한 지역정보를 가진 객체
InputStream / Reader : 요청 입력 스트림
OutputStream / Writer : 응답 스트림
@PathVariable : url의 일부를 가져와서 변수로 사용
@RequestParam : 사용자 입력값을 직접 변수로 사용
@RequestHeader
@CookieValue
@RequestBody
@ModelAttribute
@SessionAttribute
@SessionStatus
ModelAndView
Model
ModelMap
=> Model은 mvc의 그 모델이 아니라 ViewModel
jsp에서 참조하기 위한 ViewModel(Map객체)
뷰모델이 이제까지 사용했던 request.setAttribute, session.setAttribute를 대신할거임
(Model에 저장해서 뷰단에서 가져다 씀)
Command객체(VO) : 사용자 입력값을 모아서 하나의 vo객체로 전달받을 수 있음
Error
BindingResult
MultiFile : 업로드 관련 처리
RedirectAttribute : redirect후 사용자에게 전달한 속성을 보관하는 객체
'프로그래밍 > Spring' 카테고리의 다른 글
10.13(jdbc & mybatis & dbcp 의존 라이브러리 추가, datasource & mybatis 관련 빈 등록) (0) | 2020.10.13 |
---|---|
10.12(스프링 특징 : IoC, DI, POJO, PSA, AOP) (0) | 2020.10.12 |
10.07(servlet-context설정) (0) | 2020.10.07 |
10.06(spring version-up & application-context 설정) (0) | 2020.10.06 |
10.05(sts 설정) (0) | 2020.10.05 |