(의존성에 의존성으로 스프링콘텍스트가 여기에 이미 포함되어 있다)


servlet-api
servlet.jsp-api
jstl-api
jstl-impl (구현체)
spring-jdbc
spring-data jdbc
참고) 이거보다는 jpa를 더 많이 사용한다함
mybatis
mybatis-spring
ojdbc11
lombok
compileOnly 'org.projectlombok:lombok:1.18.34'
getter/setter 메서드, 생성자, toString 메서드 등 반복적인 코드 작성을 자동화
@Data : @Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor를 한 번에 적용
@Builder : 빌더 패턴을 사용하여 객체를 생성
import lombok.Builder;
@Builder
public class User {
private String username;
private String email;
private int age;
}
// 사용 예시
User user = User.builder()
.username("john_doe")
.email("john.doe@example.com")
.age(25)
.build();
@NoArgsConstructor // 기본 생성자
@RequiredArgsConstructor // final 필드와 @NonNull 필드를 위한 생성자
@AllArgsConstructor // 모든 필드를 위한 생성자
slf4j-api(로거)
logback classic(로거 구현체)
spring-test
예시) 톰캣




예시) 서블릿 (서블릿 1개만 설정함)
모든 요청과 응답의 창구가 되는 서블릿


ㄴ 모든 요청의 창구를 담당
예시) 스프링 컨테이너 설정



ㄴ 웹 전용 스프링 컨테이너

ㄴ 직접 서블릿 클래스를 new하고 생성을 못하기 때문에 스프링컨테이너를 뭐로 할건지 알려주면 이 클래스를 가지고 초기화를 한다...?
ㄴ configs.MvcConfig , configs.ControllerConfig : 설정 클래스
ㄴ 스프링컨테이너가 이 설정클래스를 참고해서 객체를 생성

예시) 스프링 4버전 까지는 한글 인코딩깨지는 문제가 있음
(우리가 현재 사용하고 있는 서블릿 6버전은 안해도 ㄱㅊㄱㅊ 벗 옛날버전꺼도 알아야 하니 try try)

ㄴ CharacterEncodingFilter : 스프링에서 제공하는 필터
예시) 설정클래스 생성(@EnableWebMvc, implements WebMvcConfigurer)

ㄴ 컨테이너가 설정클래스인지 @Configuration보고 인식

ㄴ implements WebMvcConfigurer : Mvc관련된 설정이 모두 WebMvcConfigurer에 담겨있음
ㄴ @EnableWebMvc : 100여줄의 설정코드가 추가되었다...?

ㄴ 오버라이딩 메서드
ㄴ 전부다 default메서드로되어있음


ㄴ 2개 메서드 오버라이딩

ㄴ 기본적인 처리 세팅 부분
ㄴ 처음엔 컨트롤러를 찾음 -> 못찾으면 정적인경로에서 찾아봄

ㄴ configureViewResolvers : 반환값에 따라서 출력할 뷰 객체를 찾아주는 역할
ㄴ 뷰에대한 경로 설정 : 뷰에대한 경로는 개발자마다 다르게 하기 때문에 스프링이 설정 안해줘서 우리가 직접 설정해줘야함
ㄴ templates는 경로를 잘 찾지 못하는 webapp경로에 생성
ㄴ registry의 반환값이 .jsp앞에 들어감
예시) 걍 configs.ControllerConfig 설정클래스 없애자


예시) db설정




예시)

ㄴ 웹에 특수화된 컨트롤러 객체 빈
예시)

ㄴ get방식으로 유입됬을 때 여기로 유입된다



ㄴ 원래는 겟파라미터로 가져와야 하지만 그렇게 하기엔 ㄱㅊ





커맨드 객체 : 요청쪽 데이터를 자동 매핑
ㄴ 커맨드객체 = 리퀘스트 조인


ㄴ 커맨드 객체...?

ㄴ 서블릿쪽꺼는 스프링 컨테이너안에 이미 기본으로 들어가 있다
ㄴ 바로 이렇게 매개변수로 주입가능하다

ㄴ 스프링 컨테이너 안에 있으니 의존성 주입도 가능
ㄴ 방법 2가지 (매개변수 or 의존성)


모델엔뷰 : 데이터와 뷰의경로
ㄴ 뷰 리졸버 : 뷰를 찾아주는 역할

ㄴ 모델엔뷰 형태로 바뀐다
: 요청과 응답의 창구 역할을 하는 서블릿 클래스
: 요청 방식 + 주소 -> 스프링 컨테이너에 있는 컨트롤러 빈을 검색
: 형태가 다양한 컨트롤러 빈(@Controller, Controller 인터페이스, HttpRequestHandler 인터페이스) -> 실행 -> ModelAndView로 반환
참고) ModelAndView
- addObject(String name, String value) : EL 속성으로 추가되는 속성
- setViewName(...) : 뷰 경로
요청메서드의 반환값이 String 이미지만 -> HandlerAdpter에서 실행시 ModelAndView 객체로 변환
: ModelAndView 정보 -> 출력을 위한 View 객체 검색
1) 요청 데이터의 이름과 동일한 매개변수를 요청 메서드에 정의하면 자동으로 주입
2) 정의한 변수의 자료형으로 자동 형변환
3) 요청 데이터의 이름과 요청 메서드에 정의한 이름이 다른 경우
@RequestParam("요청 데이터의 이름")
HttpServletRequest
String getParameter(String name)
String[] getParameterValues(String name);