Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- 선형분류
- CH01
- secant
- vector미분
- bisection
- 선형판별분석
- 알고리즘
- 2018
- MySQL
- 델타 rule
- 로지스틱 회귀
- 인공지능
- 이것이 MySQL이다
- Numerical optimization
- chapter02
- directed graphical model
- Perceptron Convergence theorem
- 알고리즘대회
- 개발순서
- falsePosition
- 5397번
- 스터디
- 자바ORM표준JPA프로그래밍
- 1차예선
- undirected graphical model
- graphical models
- 근구하기
- SCPC
- Fisher discriminant analysis
- chapter01
Archives
- Today
- Total
computer_study
[Spring] 15. 간단한 웹 어플리케이션의 구조 본문
1. 간단한 웹 어플리케이션의 구성 요소
- 프론트 서블릿
- 웹 브라우저의 모든 요청을 받는 창구 역할
- 요청을 알맞는 컨트롤러에 전달한다 (DispatcherServlet)
- 컨트롤러 + 뷰
- 컨트롤러가 실제 웹 브라우저의 요청을 처리
- 클라이언트가 요구한 기능 실행
- 응답 결과 생성에 필요한 모델 생성
- 결과를 생성할 뷰 선택
- 기능 제공을 위한 로직은 직접 수행하진 않는다.(로직을 제공하는 서비스에 처리를 위임)
- 컨트롤러가 실제 웹 브라우저의 요청을 처리
- 서비스
- 기능의 로직 구현
- DAO(Data Acces Object)
- DB연동이 필요할 때 사용
DTO(Data Transfer Object)
- 데이터 저장 담당 클래스. Controller, Service, View처럼 계층 간의 데이터 교환을 위해 사용. 로직을 갖고 있지 않으며 순수한 데이터 객체이며 getter, setter 메소드만을 갖고 있다.
BO(Business Object)
- 비즈니스 로직을 가지고있고, getter기능만을 포함한다
2. 서비스의 구현
- 기능별로 서비스 클래스를 작성하는 것이 코드 길이를 일정수준 안에서 유지할 수 있다.
- 여러 파라미터를 class가 전달받는 것 보다 데이터를 전달받기 위한 타입을 만들면, 스프링 MVC의 커맨드 객체로 해당 타입을 사용할 수 있어 편하다.
- 서비스 메서드의 기능 실행 후 결과 전달
- 리턴 값을 이용한 정상 결과
- 익셉션을 이용한 비정상 결과
3. 컨트롤러에서의 DAO접근
로직의 수행 없이 DAO에 접근해도 괜찮다.
public class MemberService{
...
public Member getMember(Long id){
return memberDao.selectById(id);
}
}
//////////////////
@RequestMapping("/member/detail/{id}")
public String detail(@PathVariable("id") Long id, Model model){
Member member = memberService.getMember(id); // DAO를 직접 호출하는 것과 같다.
...
}
컨트롤러는 서비스를 사용해야 한다는 압박에서 벗어나 DAO에 직접 접근해도 큰 틀에서 웹 어플리케이션의 계층 구조를 유지할 수 있다
4. 패키지 구성
각 팀에 따라 패키지 구성이 다르다.(정답이 없다)
'스터디 > 스프링5 프로그래밍 입문' 카테고리의 다른 글
[Spring] 16. JSON 응답과 요청 처리 (0) | 2022.05.29 |
---|---|
[Spring] 14. MVC4 : 날짜 값 변환, @PathVariable, 익셉션 처리 (0) | 2022.05.23 |
[Spring] 13. MVC3 : 세션, 인터셉터, 쿠키 (0) | 2022.05.16 |
[Spring] 12. MVC2 : 메시지, 커맨드 객체 검증 (0) | 2022.05.16 |
[Spring] 11. MVC1 : 요청 매핑, 커맨드 객체, 리다이렉트, 폼 태그, 모델 (0) | 2022.05.09 |
Comments