스프링 웹 MVC

5518 단어 springjavamvcweb
Spring MVC는 모델-뷰-컨트롤러 패턴을 기반으로 하는 웹 프레임워크입니다. Spring 원칙을 기반으로 하며 JSP, Thymeleaf, Groovy 등과 같은 광범위한 서버 측 렌더링 기술을 지원합니다.



디스패처 서블릿



모든 요청 처리 활동을 조정하는 전면 컨트롤러입니다. 웹 인프라 빈에 위임하고 사용자의 웹 구성 요소를 호출합니다. Spring Boot에 의해 자동으로 생성되고 구성됩니다. Spring Boot를 사용하지 않는 경우 ViewResolver 빈 정의와 @EnableWebMvc 주석을 추가해야 합니다.

제어 장치



특정 HTTP GET 요청을 처리할 때 실행할 메서드를 Spring에 알리기 위해 @Controller로 컨트롤러에 주석을 달고 @RequestMapping 또는 @GetMapping으로 컨트롤러의 메서드에 주석을 답니다. 컨트롤러는 일반적으로 논리적 보기 이름을 문자열로 반환합니다.

다음 예에서 http://localhost:8080/을 호출하면 index.html로 리디렉션되고 http://localhost:8080/hello을 호출하면 welcome.html로 리디렉션됩니다.

@Controller
public class HelloController {

    @RequestMapping("/")
    public String home() {
        return "index";
    }

    @RequestMapping("/hello")
    public String hi(Model model) {
        model.addAttribute("name", "Spring Boot");
        return "welcome";
    }

    @RequestMapping("/showAccount")
    public String accountDetails(@RequestParam("entityId") long id, Model model) {
        ...
    }

    @GetMapping("/accounts/{accountId}")
    public String show(@PathVariable("accountId") long accountId, Model model) {
        ...
    }
}


컨트롤러 메서드 매개변수는 Spring에서 제공합니다. 앞의 예에서 모델 매개변수는 데이터를 뷰로 보내는 데 사용됩니다. 요청에 HttpServletRequest, 세션 액세스에 HttpSession, 인증된 사용자에 Principal 등을 사용할 수 있습니다. 참조Handler Methods Documentation

@RequestParam 주석을 사용하여 요청에서 매개변수를 추출합니다. 위의 예에서 http://localhost:8080/showAccount?entityId=1 을 호출하는 entityId 매개변수를 보낼 수 있습니다.

요청 URL에서 값을 추출하려면 {...} 자리 표시자와 @PathVariable 주석을 사용할 수 있습니다. 위의 예에서 http://localhost:8080/accounts/1 을 호출하는 accountId 매개변수를 보낼 수 있습니다. 이 경우 @PathVariable 뒤의 주석 값("accountId")은 매개변수 이름과 일치하므로 불필요합니다.

보다



보기는 웹 출력을 렌더링합니다. HTML 또는 JSP 파일일 수 있습니다. ViewResolvers는 컨트롤러가 반환한 보기 이름을 기반으로 보기를 선택합니다. Spring Boot에서는 ViewResolver(Mustache, Thymeleaf, Groovy 등)에 대한 종속성을 추가하기만 하면 됩니다.

예를 들어 다음은 콧수염에 대한 종속성입니다.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mustache</artifactId>
</dependency>


이것은 welcome.html 파일입니다.

<!DOCTYPE html>
<html lang="en">
<body>
    <div>Hello {{name}}</div>
</body>
</html>


컨트롤러에 따르면 모델에서 이름 속성을 가져와 "Hello Spring Boot"를 인쇄합니다.

좋은 웹페이지 즐겨찾기