요청 줄이기
mypage.do 를 Get 으로 요청하면
해당페이지로 이동시켜줘!
mypage.do 를 Post로 요청하면
마이페이지의 내용을 UPDATE 해줘
-> 요청을 줄이면서 오버로딩을 통해 메서드명 줄이기까지 가능하다
회사마다 다르지만
해당 요청사항이 무슨 방식(Get,Post)로 오는지를 무조건 기입해달라고 할 수 있다.
경량화를 위해 ModelAndView 보다는 Model 로 대신하여 사용할 수 있다.
return 반환 값이 ModelAndView -> String으로 변경되어 가벼워 진다.
redirect : 없으면
VR 가 개입
VR 가 포워드가 디폴트
보낼데이터가 있음
페이지로 이동(==V 로 이동)
redirect : 있으면
VR 가 개입 X
리다이렉트임
보낼데이터 없음
.do(==C로 이동)
Model에 있는 것 뿐만 아니라.
-> JVM 메모리 내에서 사용되는 것이기 때문에
-> 컨테이너 관리하에 매개 변수로 사용되고 있는 DTO, model 등의 사용이 가능하다.
이때 DTO 등을 꺼내올 수는 있지만,
model 로 넘기는 것을 권장하는 이유 : View 프론트에서 관리할때 DTO, DB 개념을 모를 수 있기 때문이다.
- DAO 가 굳이 매개변수자리에 있어야하나?
- 무언가를 인자로 삼으면 결합도가 높아진다.
- 개발을 하면 가장 변동이 심한것중하나가 DBMS이다.
- 예상동시이용인원 <<< 실제 인원이 ↑ 이때 DBMS를 수정한다.
- DBMS 이관한다면 DAO가 변경됨
- DAO를 인자로 작성하면 이관작업할때마다 코드를 변경해야한다.
- (MySQL BoardDAO, Oracle BoardOracleDAO, MariaDB BoardMariaDAO)
▼
DAO 를 멤버변수로 위치시킴
여전히 이관작업할때마다 코드를 변경해야함
-> 컴파일 >> 결합도가 여전히 높다.
▼
Service 를 멤버변수로 위치시킴
>> DAO를 멤버변수로 삼고있다는것이 특징
이관작업시 Controller.java에 변경사항 XXX
컴파일XXX >> 결합도가 낮아진다.
Spring 기반의 자체 프레임워크를 사용하는 기업에서는
[ 2-Layerd 아키텍처 ] 라는 명칭으로 사용할 수 있다.
-> 사용하는 이유가 new 순서를 컨트롤하기 위해 고안된 아키텍처(구조)
1) Service 레이어를 추가했으니
2) @Service == new Service 를 먼저 해주면 어떨까?
3) 또 다른 스프링 컨테이너(== 루트 컨테이너)를 추가
web.xml 서블릿 컨테이너(== 톰캣)
ds-servlet.xml 스프링 컨테이너
applicationContext.xml 스프링 컨테이너(== 루트 컨테이너)
위 3개의 컨테이너는 Spring 프레임 워크에서 기본으로 사용한다.
4) /WEB-INF/applicationContext.xml 를 참고하여 돌아가는 루트 컨테이너
이때 IOException parsing XML document 가 발생하면 -> XML 을 찾을 수 없다는 의미이다.
1- WEB-INF 하위에 xml 파일을 생성하기
2- applicationContext.xml 이 저장된 위치를 알려주기 ◀ 회사에서는 2번 방식을 많이 사용한다.
web.xml 에서 2번 적용하는 방식은 아래와 같다.
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextCleanupListener</listener-class>
</listener>
이때 applicationContext.xml 에는 biz(Model,DTO,DAO) 내용을 작성하고
ds-servlet.xml 은 프론트단에서 볼 수 있는 View.(Controller등) 내용을 작성한다.
'국비 내용 정리 > Spring' 카테고리의 다른 글
국비 66일 내용정리 (AOP) (1) | 2024.10.15 |
---|---|
국비 65일 내용정리 (Spring 비동기) (0) | 2024.10.14 |
국비 62일차 내용정리 (Spring ViewResolver) (1) | 2024.10.08 |
국비 61일차 내용정리 (Spring MAV) (0) | 2024.10.07 |
jsp -> Spring까지의 복습 정리 (0) | 2024.10.07 |