웹 프로젝트를 생성해서 프로젝트를 진행할 때 WEB-INF에 jsp를 넣어 프로젝트를 생성하였다. 하지만 이렇게 경로를 설정하면 경로를 직접입력하여 jsp파일에 접근하여 보안성이 떨어진다. WEB-INF 하위 폴더를 생성하여 jsp를 넣으면 controller를 거치지 않으면 접근할 수 없게 설정 할 수 있다.
스프링 MVC를 위한 설정
스프링 MVC를 실행하기 위한 최소 설정은 다음과 같다
- 스프링 MVC 주요설정 (HandlerMapping, ViewResolver 등)
- 스프링의 DispatcherServlet (Controller) 설정
@EnableWebMvc 애노테이션을 통해 다양한 빈 설정을 추가한다.
pom.xml의 DispatcherServlet은 초기화 과정에서 contextConfiguration 초기화 파라미터에 지정한 설정 파일을 이용해서 스프링 컨테이너를 초기화 한다.
다음은 컨트롤러 코드이다.
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);//greeting이 key역할, "안녕하세요, "+name이 value 역할
return "hello";
}
}
@GetMapping 애노테이션은 매서드가 처리할 요청 경로를 지정한다. 위 코드의 경우 "/hello" 경로로 들어온 요청을 hello() 메서드를 이용해서 처리한다고 설정(mapping)했다.
@RequestParam 애노테이션은 요청 파라미터 값을 메서드 파라미터로 전달한다. name 요청 파라미터 값을 name파라미터에 전달한다.
파라미터로 전달받은 Model 객체의 addAttribute() 매서드를 실행하고 있는데 이는 뷰에 전달할 데이터를 지정하기 위해 사용한다. 첫 번째 파라미터 값은 데이터 식별(key와 유사), 두 번째 파라미터 값은 속성(value와 유사) 이다.
마지막으로 @GetMapping에 붙은 메서드는 컨트롤러 실행 결과를 보여줄 뷰 이름을 리턴한다. 실제 뷰 이름에 해당하는 뷰 구현을 찾아주는 것은 ViewResolver가 처리한다.
스프링 컨트롤러로 사용될 클래스는 @Controller 애노테이션을 붙여야 하고, @GetMapping 애노테이션이나 @PostMapping 애노테이션과 같은 요청 매핑 애노테이션을 이용해서 처리할 경로를 지정한다.
'Java > JavaSpring' 카테고리의 다른 글
Chap 11. MVC 1 : 요청 매핑, 커맨드 객체, 리다이렉트, 폼 태그, 모델 (0) | 2022.07.07 |
---|---|
Chap 10. 스프링 MVC 프레임워크 동작 방식 (0) | 2022.07.06 |
Chap 8. DB 연동 (0) | 2022.06.28 |
Chap 7. AOP 프로그래밍 (0) | 2022.06.27 |
Chap 6. 빈 라이프사이클과 범위 (0) | 2022.06.24 |