코드 공부하면서 모르는 부분 위주로 정리해보았습니다!
Create Maven Web Application
Add Dependencies - pom.xml File
의존성들의 역할
spring-webmvc: Spring MVC 프레임워크의 핵심 기능을 제공. MVC 패턴을 구현하여 웹 애플리케이션을 개발할 수 있게 해준다.
javax.servlet.jsp.jstl 및 taglibs/standard: JSTL(JavaServer Pages Standard Tag Library)은 JSP에서 사용할 수 있는 태그 라이브러리 모음. 조건문, 반복문 등을 JSP 페이지 내에서 편리하게 사용할 수 있게 해준다.
javax.servlet/javax.servlet-api: 서블릿 API는 Java EE 웹 애플리케이션을 개발하는 데 필요한 클래스와 인터페이스를 제공. 이 의존성은 웹 애플리케이션에서 HTTP 요청과 응답을 처리하는 데 필수적.
javax.servlet.jsp/javax.servlet.jsp-api: JSP API는 JSP 페이지 개발을 위한 필수 클래스와 인터페이스를 제공. 이를 통해 동적인 웹 페이지를 생성하고 관리할 수 있다.
Project Structure
Spring Configuration - MVCConfig.java
이 코드는 Spring MVC 웹 애플리케이션의 설정 클래스이다.
@Configuration
어노테이션은 이 클래스가 설정 정보를 제공하는 빈(bean)을 정의한다는 것을 나타냄
**@EnableWebMvc
**는 Spring MVC를 활성화
**@ComponentScan
**은 주어진 패키지 내의 컨트롤러, 서비스, 리포지토리 등의 컴포넌트를 스캔하여 자동으로 등록
InternalResourceViewResolver
빈을 설정하여, JSP 뷰 파일의 위치와 확장자를 정의. 여기서는 /WEB-INF/views/
경로에 위치한 .jsp
파일을 뷰로 사용
addResourceHandlers
메소드는 정적 리소스(예: CSS, JavaScript, 이미지 파일)의 경로를 설정. 이 예제에서는 /resources/
경로에 위치한 정적 리소스를 처리
Servlet Container Initialization - SpringMvcDispatcherServletInitializer.java
Spring MVC에서는 Java 또는 web.xml 구성을 사용하여 모든 요청을 처리하려면 Dispatcher Servlet을 선언하고 매핑해야 함
Servlet 3.0+ 환경에서는 AbstractAnnotationConfigDispatcherServletInitializer 클래스를 사용하여 다음과 같이 DispatcherServlet을 프로그래밍 방식으로 등록하고 초기화할 수 있음.
이 코드는 스프링 MVC 애플리케이션에서 **DispatcherServlet
**을 초기화하는 설정 클래스
getRootConfigClasses()
: 애플리케이션의 root-level(최상위 레벨) 설정을 정의. 여기서는 **null
**을 반환하고 있어, root-level 설정이 필요 없음을 나타냄.getServletConfigClasses()
: **DispatcherServlet
**의 애플리케이션 컨텍스트에 대한 설정 클래스를 지정. 이 예제에서는 **MVCConfig.class
**를 배열에 담아 반환하여, MVCConfig
클래스에서 정의된 설정(뷰 리졸버, 컴포넌트 스캔 등)을 사용하도록 함getServletMappings()
: **DispatcherServlet
**이 처리할 요청의 매핑을 정의. **"/"
**는 모든 요청을 **DispatcherServlet
**이 처리하도록 설정. 이는 애플리케이션의 모든 HTTP 요청을 스프링 MVC가 처리하게 하는 가장 일반적인 설정이다.⇒ 이 클래스는 web.xml
파일 없이 서블릿 3.0 이상 환경에서 스프링 MVC 애플리케이션을 설정할 때 사용
Model Class - SignUpForm.java
사용자 등록 폼에서 입력받을 데이터를 나타내는 모델
SignUpForm
객체의 인스턴스에 바인딩되어 서버로 전송Controller Class - SignUpController.java
사용자 등록 폼 처리를 위한 SignUpController 클래스
Views - signup-form.jsp
사용자가 입력한 데이터를 saveSignUpForm
URL로 POST 요청으로 전송
form:form
태그는 폼 데이터를 saveSignUpForm
액션으로 전송하며, **modelAttribute="signUpForm"
**을 통해 모델 객체 **SignUpForm
**과 바인딩form:input
, form:password
)는 SignUpForm
객체의 특정 속성과 연결되어 있으며, 사용자가 입력한 데이터는 이 속성에 저장Views - signup-success.jsp
사용자 등록 성공 후에 사용자 정보를 표시하는 웹 페이지
${}
구문은 JSP에서 EL(Expression Language) 표현식을 사용하여 객체의 속성이나 변수 값을 출력할 때 사용Static Resources - CSS and JS