6. SpringFramework(스프링 프레임워크) - Controller(컨트롤러)

한승록·2023년 7월 15일
0

스프링 기초

목록 보기
6/9
post-thumbnail

1) servlet

Controller를 설명하기 위한 기본 개념으로 servlet에 대해 알아야합니다.
servlet요청(request)응답(response)을 처리해주는 역할을 수행합니다.
즉 아래와 같이 servletweb application공간을 생성하여 JAVA를 이용한 웹 환경을 구성할 수 있도록 역할을 수행합니다.
이때 servlet은 동적 처리를 수행하며 spring환경에서의 처리방식인 MVC패턴에서 사용되는 controller에 모든 요청을 전달하게 됩니다.




2) Controller 구현

Servlet을 거친 requestControllerViewModel을 거쳐 response 하게 됩니다.
그렇다면 request 를 어떤식으로 전달하게 될까요? 해당 역할을 수행하는 것이 바로 어노테이션(annotation) 입니다.

2-1) 어노테이션(Annotation : '@')

어노테이션(Annotation)은 주석의 역할을 하는 동시에 클래스와 메서드 등에 기재하여 다양한 기능을 부여하는 역할을 합니다.
따라서 어노테이션을 통해 기능을 따로 구현할 필요가 없어 코드가 단축되며 SpringMVC패턴이 작동하게 됩니다.
	@Controller // Controller로 해당 클래스를 인식하게 도와줌
    public class HomeController {
    
    	@GetMapping("/")	// Get방식의 request 처리를 수행
    	public String home() {
        	return "home";
        }
    }

2-2) 주요 어노테이션 종류

Controller에서 주로 사용되는 어노테이션의 종류는 다음과 같습니다.
  1. @Controller
  2. @RestController
  3. @RequestMapping
  4. @GetMapping
  5. @PostMapping
  • Controller
  • DispatcherServlet에서 전달되는 request를 사용자가 생성한 Controller로 전달하는 역할 수행하고 ServiceDataBase를 거쳐 생성된 결과물을 View로 반환하는 역할 수행합니다.

  • RestController
  • 주로 Ajax를 통한 비동기 통신 방식을 구현할 때 사용하는 어노테이션으로 곧바로 View로 반환하는 것이 아닌 XML이나 JSON과 같은 데이터 형태를 반환하는 기능 수행합니다.

  • RequestMapping
  • Controller는 요청 URL맵핑 하여 실행되도록 합니다. 이때 공통되는 URL 맵핑 이 이루어지는 경우 클래스에 해당 어노테이션 을 기입해준다면 기입된 클래스 내부의 모든 메서드는 같은 URL 맵핑 이 이루어집니다.
  
  // 1. 클래스 내부 단독 메서드 혹은 각기 다른 URL 맵핑의 경우
  @Controller
  public class HomeController {
    
  	@RequestMapping("/")	// 최상위 URL을 맵핑
  	public String home() {
  		return "home";
  	}
  
  }
  
  // 2. 클래스 내부 공통된 URL 맵핑의 경우
  @Controller
  @RequestMapping("/")	// 최상위 URL을 맵핑
  public class HomeController {
    
  	@GetMapping("home")
  	public String home() {
  		return "home";
  	}
  
  	@GetMapping("login")
  	public String login() {
  		return "login";
  	}
  
  }
  • GetMapping
  • requestGET방식으로 넘어오면 해당 요청을 처리할 수 있도록 실행됩니다. 일반적으로 해당 방식은 주소창에 파라미터가 공개되기 때문에 개인정보 등 노출되서는 안되는 정보는 유의해서 사용해야 합니다.
  • GetMapping
  • requestPOST방식으로 넘어오면 해당 요청을 처리할 수 있도록 실행됩니다. 일반적으로 해당 방식은 주소창에 파라미터에 노출되지 않기 때문에 가장 기본적인 보안기능을 수행하게 됩니다.
profile
개발 학습

0개의 댓글