<Service 인터페이스 만들 때 주의할 점>
public int createProd(ProdVO prod);
Service에서 리턴타입을 int로 하면 식별성 없음. (dao에선 가공을 못하므로 int로 할 수 밖에 없음)
insert, update할 때 null허용일 때는 JDBCType 꼭~!

DATE -> jdbcType=DATE
CLOB -> jdbcType=VARCHAR
NUMBER -> jdbcType=NUMERIC
<Controller>
컨트롤러에서 항상 반복되는 코드들
처음에 req.setCharacterEncoding("UTF-8");
마지막에 req.getRequestDispatcher(goPage).forward(req, resp);
Front Controller 들이 할 일
- 각 커맨드(URI에 연결되어있음)를 처리할 수 있는 백엔드 컨트롤러 목록을 컬렉션(맵)의 형태로 저장
Map <URI, Controller>
- 각 커맨드에 맞게 위임 (백엔드 컨트롤러들은 요청을 직접 받지 않으므로 서블렛일 필요가 없음)
=> Front Controller가 유일한 서블렛이 됨. 뒷단의 백엔드 컨트롤러(Command Handler)들은 POJO(Plain Old Java Object)가 된다
POJO: 어떠한 것도 상속 받지 않음. JRE만 있으면 실행 가능
각 POJO 들이 어떤 메서드를 가지고있는지 고정된 코드가 없어도 알아내야함 => 리플렉션이 필요한 이유
핸들러 만들때는 controller들 서블렛 안 붙이고 @CommandHandler붙여주기 (마킹)
실제로는 method에서 완성되므로 1커맨드 할때 1메서드니까 해당 메서드위에 @URIMapping
String을 리턴하는 메서드로 만들고
access modifier는 public으로
서블렛 매핑
Handler매퍼가 reflection 해서 수집
커맨드를 식별할때 주소/ 메서드 2개다 파악해야함. 그래서 만드는게 Mapping Condition

수집해서 map 만듦. 검색-> urimappinginfo로 돌려줌 거기있는 핸들러 정보를 바탕으로 찾아야됨 근데 다 pojo라 고정된 시그니처없음. 고정코드로 호출못하니까 invoker불름. handlermapper가 돌려주는 정보 invoker한테 보냄 -> commandhancler-> 파라미터로 보내주는 logical view name를 invoker한테보냄 -> frontcontroller가 받아서 viewProcessor 가 받음. 받아서 prefix, suffix 받아서 응답 내보냄
>> Front Controller 패턴 사용하는 법 보러가기 클릭 <<
>> Front Controller 패턴 사용하는 법 보러가기 클릭 <<
FrontController를 이용한 웹 프로그래밍
미리 총정리하는 이 구조의 동작 원리
www.notion.so
'WEB Application' 카테고리의 다른 글
TIL 웹 프로그래밍 (인증 / 인가 처리, 자바로 웹 파일 업로드 ) (3) | 2020.09.24 |
---|---|
웹 프로그래밍 (front controller 패턴에 resolvers 더하기) (1) | 2020.09.23 |
웹 프로그래밍 (xml resultMap 사용법, has many, xml 매핑) (0) | 2020.09.22 |
20/09/18 웹 프로그래밍 (slf4j, 페이징 처리, DataTables) (2) | 2020.09.18 |
20/09/17 웹 프로그래밍 기초 (프레임워크, iBatis, MyBatis ) (1) | 2020.09.17 |