[Spring] 스프링 MVC - 컨트롤러 구현 해보기
이번 포스팅에서는 클라이언트의 요청을 알맞게 처리할 컨트롤러와 처리 결과를 보여줄 JSP 코드를 통해 실습해 보도록 하겠습니다. 컨트롤러 구현 package chap09; import org.springframework.stereotype.Contro
muscleking3426.tistory.com
앞서 컨트롤러가 생성한 결과를 보여줄 뷰 코드를 만들어보겠습니다. 뷰 코드는 JSP를 이용해서 구현해 볼 것입니다.
경로 : /src/main/webapp/WEB-INF/view
HelloController.java
package chap09;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class HelloController {
@GetMapping("/hello")
public String hello(Model model, @RequestParam(value = "name", required = false) String name) {
model.addAttribute("greeting", "안녕하세요 " + name);
return "hello";
}
}
hello.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello</title>
</head>
<body>
인사말 : ${greeting}
</body>
</html>
HelloController의 hello() 메서드가 리턴한 뷰 이름은 "hello" 인데, hello.jsp 파일을 리턴하는 이유는 다음과 같습니다.
WebMvcConfig.java
package config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
@EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer{
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/view",".jsp");
}
}
regsitry.jsp() 코드는 JSP를 뷰 구현으로 사용할 수 있도록 설정해줍니다.
jsp() 메서드의 첫번째 파라미터 : JSP 파일 경로 찾을 때 사용할 접두어
jsp() 메서드의 두번쨰 파라미터 : 접미사
뷰 이름의 앞과 뒤에 각각 접두어와 접미사를 붙여 최종적으로 사용할 JSP 파일의 경로를 결정합니다.
인사말 : ${greeting}
해당 코드는 JSP EL(Expressiong Langauge)을 사용하는데, 컨트롤러 구현에서 Model에 추가한 속성의 이름인 greeting과 동일합니다. 이렇게 컨트롤러에서 설정한 속성을 뷰 JSP 코드에서 접근할 수 있는 이유는 스프링 MVC 프레임워크가 모델에 추가한 속성을 JSP 코드에서 접근할 수 있게 HTtpServletRequest에 옮겨주기 때문입니다.
컨트롤러에서 Model에 속성 추가
@GetMapping("/hello")
public String hello(Model model, @RequestParam(value = "name", required = false) String name) {
model.addAttribute("greeting", "안녕하세요 " + name);
return "hello";
}
스프링 MVC 프레임워크
request.setAttribute("greeting", 값)
뷰에서 속성 접근
<body>
인사말 : ${greeting}
</body>
스프링 MVC 프레임워크는 모델 데이터를 뷰에서 접근할 수 있게 만들어줍니다.
http://localhost:8080/sp5-chap09/hello?name=bk 를 입력해 보면
?name=bk : name 파라미터에 bk라는 값을 서버에 요청하여 bk라는 문자열을 뷰로 반환하여 보여주게 됩니다.
* 참고
web.xml 파일에 있는
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
config.MvcConfig
config.ControllerConfig
</param-value>
</init-param>
config.MvcConfig 와 config.ControllerConfig는 각각 설정 파일을 연결하므로, 꼭 패키지명과 클래스 명이 같아야 합니다.
만약, 톰캣을 실행하였는데 path가 프로젝트 루트 폴더명으로 경로 설정이 되어있지 않다면 server.xml 에 있는
<Context docBase="sp5-chap09" path="/sp5-chap09" reloadable="true" source="org.eclipse.jst.jee.server:sp5-chap09"/></Host>
해당 소스에 path 속성을 수정해 주시면 됩니다.
스프링 MVC 정리
- 스프링 MVC 설정
- 웹 브라우저의 요청을 처리할 컨트롤러 구현
- 컨트롤러의 처리 결과를 보여줄 뷰 코드 구현
'Spring' 카테고리의 다른 글
[Spring] controller와 handler (0) | 2024.04.01 |
---|---|
[Spring] 스프링 MVC 핵심 구성 요소 (0) | 2024.04.01 |
[Spring] 스프링 MVC - 컨트롤러 구현 해보기 (0) | 2024.03.25 |
[Spring] 스프링 MVC 설정 (0) | 2024.03.25 |
[Spring] Spring MVC (0) | 2024.03.20 |