@Controller
public class HelloController{
@GetMapping("/hello")
public String hello(Model model, @RequestParam(value="name",required=false) String name){
model.addAttribute("greeting","HI, "+name);
return "hello";
}
}
스프링 MVC 프레임워크에서 컨트롤러란 웹 요청을 처리하고 그 결과를 뷰에 전달하는 스프링 빈 객체이다. 스프링 컨트롤러로 사용될 클래스는 @Controller 어노테이션을 붙여야 하고, @GetMapping이나 @PostMapping 같은 요청 매핑 어노테이션을 이용해서 처리할 경로를 지정해줘야 한다.
컨트롤러를 구현했으므로 컨트롤러를 스프링 빈으로 등록할 단계이다. 컨트롤러 클래스를 빈으로 등록할 때 사용할 설정 파일은 다음과 같다.
@Configuration
public class ControllerConfig{
@Bean
public HelloController helloCotroller(){
return new HelloController();
}
}
컨트롤러가 생성한 결과를 보여줄 뷰 코드를 만들어보자.
WEB-INF/view/hello.jsp
...
<body>
인사말: ${greeting}
</body>
...
뷰 이름과 JSP 파일과의 연결은 MvcConfig 클래스의 다음 설정을 통해서 이루어진다.
@Override
public void configureViewResolvers(ViewResolverRegistry registry){
registry.jsp("/WEB-INF/view/",".jsp");
}
registry.jsp() 코드는 JSP를 뷰 구현으로 사용할 수 있게 한다.
"greeting"은 컨트롤러에서 설정한 속성을 뷰 JSP 코드에서 접근할 수 있는 이유는 스프링 MVC 프레임워크가 아래 그림처럼 모델에 추가한 속성을 JSP 코드에서 접근할 수 있게 HttpServletRequest에 옮겨주기 때문이다.