SPRING - MVC 패턴 사용

고규빈·2022년 6월 22일
0

Controller 구현

  • 클라이언트로부터 들어온 요청을 처리하는 Controller 구성

Controller 클래스 제작 순서

  • RequestMapping 애노테이션을 이용해서 처리할 요청 경로 지정

  • 웹 브라우저의 요청을 처리할 메서드 구현

  • 뷰페이지 이름 = prefix + 요청처리 메소드 반환값 + suffix

URL 요청

@RequestMapping(“/url”)
@RequestMapping({“/url1”, ”/url2”})
@RequestMapping(“/url”)
public class Controller{
@RequestMapping(“/suburl”)
public String method(){}
}
@RequestMapping(value=“/url”, method=RequestMethod.POST)
.GET)
@RequestMapping(“/url/{suburl}”)
public String method(@PathVariable String suburl)
(@PathVariable(“suburl”) String sUrl) //파라미터 값과 같지 않을때

데이터 전달 방법

  1. HttpServletRequest 이용
  2. @RequestParam 이용한 파라미터 전달
    1) @RequestParam(“id”) String userId
    2) @RequestParam(value=“id”, required=false) String id)
    3) @RequestParam(value=“id”, defaultValue=“”) String id)
  3. VO객체를 이용한 데이터 전달
    -public String method(MemberVO vo)
  4. @ModelAttribute 이용한 객체 전달
    -public String method(@ModelAttribute(“mvo”) MemberVO vo)
  5. 쿠키전송
    -@CookieValue(value=“c”, required=false) Cookie cookie
  6. HttpSession 이용
  1. HttpServletRequest 이용
  2. Model 클래스를 이용한 데이터 전달
  3. ModelAndView 클래스를 이용한 데이터 전달

페이지 이동 & 리다이렉트 처리

  1. 스프링은 기본적으로 RequestDispatcher를 사용하여 forward 페이지 이동을 한다.

    return “main”;

  2. forward방식이 아닌 리다이렉트 처리 방법은 “redirect : ” 접두어를 붙이면 된다.

    @RequestMapping(“/redirect”)
    public String method(){
    return “redirect : /main”;
    }
    or
    return “redirect : http://localhost:9090/contextPath/main”;

컨트롤러 메서드 주요 파라미터

컨트롤러 메서드 주요 리턴 타입

정적 자원 설정

<mvc:resoures mapping="매핑할 경로" location="실제 경로"/>

  • 매핑할 경로 작성 방법
    /resources/**
  • 실제 경로 작성 방법
    /resources/
    /resources/, /img/, /WEB-INF/resources/
  • DispatcherServlet의 매핑이 “/”일 경우 *.jsp 외의 경로(.jpg, .html, .js, .css
    등)는 찾을 수 없기 때문에 <mvc:default-servlet-handler/>을 통해 톰캣의
    default Servlet으로 동작하게 하여 정적 자원의 경로를 찾을 수 있음.

(< mvc:resources> 또는 <mvc:default-servlet-handler/> 사용)

데이터 변환

  • HTTP 기반 API가 증가하고, REST API 방식을 선호함에 따라 XML/JSON 데이터 형식의 요청/응답 데이터를 처리하는 방법이 중요하게 됐다.

  • @RequestBody, @ResponseBody는 이러한 XML/JSON 데이터 형식의 요청
    /응답 데이터를 쉽게 처리할 수 있는 방식을 제공한다.

@RequestBody

  • HTTP 요청의 body 내용을 자바 객체로 매핑하는 역할을 한다.

@ResponseBody

  • 자바 객체를 HTTP 요청의 body 내용으로 매핑하는 역할을 한다

@RequestBody

  • HTTP 요청의 body 내용을 자바 객체로 매핑하는 역할을 한다.
  • Body에 있는 내용을 매핑하기 때문에 POST 방식을 통해 전달해야 한다.
  • XML/JSON으로 넘어온 데이터를 자동으로 VO 또는 Map 형태로 매핑 시켜 전달받을 수 있다.
  1. 의존성 주입 (json 예제)
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>버전</version>
</dependency>
  1. 사용방법 (매개변수 설정)
@RequestBody Map<String,String> map
@RequestBody VO객체 vo
@RequestBody String body

@ResponseBody

  • 자바 객체를 HTTP 요청의 body 내용으로 매핑하는 역할을 한다.
  • VO 또는 Map 형태를 XML/JSON으로 자동으로 매핑하여 응답한다.
  1. 의존성 주입 (json 예제)

  2. 사용방법 (해당 URL 함수에 설정, return 설정)

    @RequestMapping(“/resbody-test”)
    @ResponseBody
    public 객체 responseBodyTest(){
    객체 변수명 = new 객체();
    return 변수명;
    }

※ REST API 방식의 개발이 증가하면서 @ResponseBody를 적어줄 필요 없이 Controller 자체를
@RestController로 설정 가능

profile
안녕하세요

0개의 댓글