DispathcherServlet
HandlerMapping
HandlerAdapter
Controller
ViewResolver
HandlerMapping, HandlerAdapter, ViewResolver는 스프링 컨테이너가 생성된 후 컨테이너 안에 자동으로 생성된다.
web.xml
에 서블릿 mapping<!--> web.xml <-->
<servlet>
<servlet-name>{서블릿 별칭}</servlet-name>
<servlet-class>{패키지 이름을 포함한 전체 서블릿명}</servlet-class>
<init-param>
<param-name>{Spring 설정 파일 이름}</param-name>
<param-value>WEB-INF/spring/appServlet/{Spring 설정 파일}</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>{서블릿 별칭}</servlet-name>
<url-pattern>/{맵핑명}</url-pattern>
</servlet-mapping>
servlet-context.xml
파일에 <annotation-driven/>
만 기재하면 만들 수 있다.Controller 객체로 사용할 클래스를 정의할 땐 클래스에 @Controller
어노테이션을 붙여야 한다.
@Controller
public class HomeController {
// 엄청난 코드
}
@RequestMapping
@RequestMapping("/{메소드명}")
어노테이션을 붙여야 한다.@Controller
public class HomeController {
...
@RequestMapping("/sampleMethod")
public String sampleFunc(Model model) {
}
}
Model
타입의 객체가 전달된다.setAttribute()
함수를 통해서 Model를 수정할 수 있으며 작업이 끝난 후 서블릿에게 전달된다.@Controller
public class HomeController {
...
@RequestMapping("/sampleMethod")
public String sampleFunc(Model model) {
model.setAttribute("tmpData", "model has data!!");
}
}
InternalResourceViewResolver
빈 객체를 추가해야 한다.suffix
값을 합친 이름의 jsp를 찾는다.<!--> spring 설정 파일 <-->
<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>
@Controller
public class HomeController {
...
@RequestMapping("/sampleMethod")
public String sampleFunc(Model model) {
model.setAttribute("tmpData", "model has data!!");
return "success";
}
}
=>
/WEB-INF/views/success.jsp