web.xml
Spring Bean
Spring Bean
<init-param>
을 설정하지 않으면 <servlet-name>
-servlet.xml file에서 applicationContext의 정보를 load<url-pattern>
은 DispatcherServlet이 처리하는 URL Mapping pattern을 정의web.xml
- 최상위 Root ContextLoader 설정
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>
Controller Class 작성
HomeController.java
2. HandlerMapping 에게 요청을 보내 해당 로직을 처리할 Controller를 찾는다.
@Controller
public class HelloController {
public HelloController() {
System.out.println("hello controller 생성자 호출");
}
private static final Logger logger = LoggerFactory.getLogger(HelloController.class);
// @RequestMapping(value="/", method = RequestMethod.GET)
@GetMapping("/")
public ModelAndView index() {
ModelAndView mav = new ModelAndView();
mav.addObject("name", "안효인1");
mav.setViewName("index");
return mav;
}
}
3. 클라이언트의 요청 처리 후 model(data)과 viewName을 전달
servlet-context.xml
<context:component-scan base-package="com.ssafy.hello.controller" />
servlet-context.xml
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
DispatcherServlet은 client에게 응답 (default : forward)
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib
prefix="c" uri="jakarta.tags.core" %>
<c:set var="root" value="${pageContext.request.contextPath}"></c:set>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Insert title here</title>
</head>
<body>
<h3>Hello Spring MVC !!!</h3>
<h1>안녕 ${name}</h1>
<h3>파라미터 테스트</h3>
<a href="${root}/parameter">파라미터</a>
</body>
</html>
@Controller
와 @RequestMapping
선언
Controller Class는 Client의 요청을 처리.
@Controller 선언
@Controller 사용을 권장
Controller Class를 <bean>
에 등록
servlet-context.xml
Controller Class 자동 스캔
servlet-context.xml
<context:component-scan base-package="com.ssafy.hello.controller" />
@RequestMapping 선언
@RequestMapping
선언Controller method의 타입
@RequestParam
annotation을 이용한 parameter mapping
HTML form과 Command Object
@RequestBody
parameter type
@ResponseBody
와 함께 사용됨 -> 비동기 처리Controller에서는 처리 결과를 보여줄 View 이름이나 객체를 리턴하고 , DispatcherServlet은 View이름이나 View객체를 이용하여 view 생성
명시적 지정
자동 지정
ViewResolver : 논리적 view와 실제 JSP파일 mapping
servlet-context.xml
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
View 지정
redirect:
접두어를 붙이면, 지정한 페이지로 redirect됨View에 전당하는 데이터
@RequestMapping
annotation 이 적용된 method의 Map, Model, ModelMap@RequestMapping
method가 return하는 ModelAndView@ModelAttribute
annotation이 적용된 method가 return한 객체Model Interface 주요 method
Model 생성
비싼 돈 내고 인강 들었는데 후회되네요...
이 글 보고 현타왔습니다.
잘 보고 갑니다.