1027 spring

yunha·2023년 10월 27일
0

JSP/Spring

목록 보기
22/36

컨트롤러

@RequestMapping 이용한 요청 매핑 경로 설정

스프링MVC) 사용자 요청 처리할 컨트롤러와 메서드 매핑 가능 => @RequestMapping

@RequestMapping(value="웹 요청 URL",method=RequestMethod.(HTTP 요청 방식), ...)

컨트롤러에 적용 - 클래스 수준의 @RequestMapping

: 이를 사용할 때 기본 매핑 경로를 설정하지 않은 @RequestMapping만 선언된 요청 처리 메서드 있어야 함

@RequestMapping(value="/exam01",method=RequestMethod.GET)
public class Example01Controller {

메서드에 적용 - 메서드 수준의 @RequestMapping

: 메서드 수준의 @RequestMapping에서 method 속성의 기본값은 GET방식이므로 생략 가능
: @RequestMapping의 value와 method 속성이 HTTP 요청 방식의 기본값이 GET 방식이면 생략 가능

@Controller
public class BookController {
	@RequestMapping("/create")
	public ModelAndView create() {

메서드에 적용 - 메서드 수준의 @RequestMapping 단순화

: 스프링 4.3부터 HTTP 요청 방식에 대한 매핑 단순화, 요청 처리 메서드 의미 표현 증대

@GetMapping : 매핑할 HTTP 요청 방식이 GET인 경우(method=RequestMethod.GET)
@PostMapping : 매핑할 HTTP 요청 방식이 POST인 경우
@PutMapping : 매핑할 HTTP 요청 방식이 PUT인 경우
@DeleteMapping : 매핑할 HTTP 요청 방식이 DELETE인 경우
@PatchMapping : 매핑할 HTTP 요청 방식이 PATCH인 경우

  • 요청URI : 클래스 레벨 + 메소드 레벨 = /business/create
  • 리턴 타입이 void인 경우 요청 URI가 jsp의 경로가 됨 -> 근데 잘 안 씀
@Slf4j
// 프링아 이 클래스를 컨트롤러인 자바빈으로 등록해줘
@Controller
// 클래스 레벨에서 공통적인 요청 매핑이 가능-value 속성 하나만 쓰면 생략 가능
@RequestMapping(value = "/business")
.
.
  • 속성 하나인 경우 속성명(ex. value) 생략 가능
    : 이 안에서 요청 경로 하나밖에 없어서 생략할 수 있음
RequestMapping(value = "/detail", method = RequestMethod.GET)
==> @RequestMapping("/detail")

요청 처리 메서드와 모델 유형

  • 요청 처리 메서드
    : 스프링 MVC>사용자 요청을 처리하는 메서드
    - 모델 -> 사용자의 웹 요청을 처리한 결과 데이터를 관리하고 전달
    - 뷰 -> 처리된 결과 데이터를 웹 브라우저에 출력하는 웹 페이지 역할
    요청 매핑 경로 설정 : @RequestMapping
@RequestMapping(...)
public String 메서드 이름() {
	// 모델(객체)에 응답 데이터 저장
    return "뷰 이름";
}

응답 데이터를 저장하는 모델 유형

Model : 데이터(또는 객체) 정보를 저장하는 데 사용
ModelMap : 데이터(또는 객체) 정보를 저장하는 데 사용
ModelAndView : 모델 정보 및 뷰 정보를 저장하는 데 사용

Model 인터페이스를 이용한 메서드 작성

Model 인터페이스> 처리 결과를 뷰에 보여 주는 데 필요한 데이터 => Model 객체의 addAttribute() 메서드에 담아 전달

Model addAttribute(String attributeName, Object attributeValue)
역할 : 제공된 이름으로 제공된 속성을 등록
매개변수
- attributeName: 모델 속성 이름(null이 될 수 없음)
- attributeValue: 모델 속성 값(null이 될 수 없음)

ModelMap 클래스를 이용한 메서드 작성

ModelMap도 전달 방식은 같음

ModelAndView 클래스를 이용한 메서드 작성

ModelAndView : 모델 + 뷰
-> 처리 결과 데이터를 ModelAndView 객체의 addObject() 메서드에 담아 전달, setViewName() 메서드로 뷰 이름을 설정

ModelAndView addObject(String attributeName, Object attributeValue)
역할 : 지정된 이름(attributeName)으로 제공된 속성(attributeValue)을 등록
매개변수
- attributeName: 모델 속성 이름(null이 될 수 없음)
- attributeValue: 모델 속성 값(null이 될 수 없음)

void setViewName(String viewName)
역할 : ModelAndView를 위한 뷰 이름 설정
매개변수
- viewName: 뷰 이름

요청 처리 메서드-파라미터 유형

: 요청 왔을 때 클래스에서 받고 메서드로 val 받았을 떄

경로 변수와 @PathVariable

경로 변수(path variables) : 웹 요청 URL에 포함된 파라미터 값을 전달받는 데 사용하는 변수 <= 요청 조건 값= @RequestMapping(단순화 포함) : 매핑 경로 설정 - 중괄호({}) 안에 명시된 것이 경로 변수, 하나 또는 그 이상의 경로 변수 포함 가능
: 경로 상에 데이터가 있는 경우 경로 변수 매핑 => 요청 처리 메서드의 파라미터에 @PathVariable로 경로 변수 값 전달받을 수 있음
ex1)

ex2)

@PathVariable 이용한 경로 변수 처리

@PathVariable : @RequestMapping에 설정된 경로 변수 값을 요청 처리 메서드의 매개변수로 전달 받음

경로 변수 이름 그대로 사용
@RequestMapping("경로 변수")
public String

@RequestMapping(value="/employee/detail2/{eEmpno}",method=RequestMethod.GET)
	public ModelAndView detail2(@PathVariable("eEmpno") String eEmpno...

페이징



profile
기록

0개의 댓글