Spring

Spring_Controller_파라미터 전송&&데이터 받아오는 방법 정리

climb-up 2022. 6. 15. 01:57

<파라미터 전송 받기>

 

1) HttpServletRequest 방식

: JSP/Servlet 방식

@requestMapping(value="login.me", method = RequestMethod.POST)
public void login(HttpServletRequest request) {
	String id = request.getParameter("id");
    	String pwd = request.getParameter("pwd");
}

 

2) @RequestParam 방식

: 스프링에서 좀 더 간단하게 파라미터를 받아올 수 있는 방법

: HttpServletRequest와 비슷하게 request객체를 이용하여 데이터를 전송받으나 원하는 타입으로 자동 형변환 가능

value

: view에서 받아올 파라미터 이름, 어노테이션에 들어가는 속성이 하나 뿐이라면 자동으로 value가 인지하여 생략가능

defaultValue

: 값이 null이거나 들어오지 않았을 때 기본적으로 들어갈 데이터 지정

required

: 해당 파라미터가 필수적인 설정, 기본 값 true, 필수 값은 아니고 나중에 사용하려고 미리 만든 값

@RequestMapping(value="login.me", method = RequestMethod.POST)
public void login(@RequestParam("id") String id, @RequestParam("pwd") String pwd) {}
public void login(@RequestParam(value="id") String id, @RequestParam(value="pwd") String pwd) {}
public void login(@RequestParam(value="id", defaultValue="hello") String id, @RequestParam(value="pwd", defaultValue="world") String pwd) {}
public void login(@RequestParam(value="id", defaultValue="hello") String id,
		  @RequestParam(value="pwd" defaultValue="world") String pwd,
                  @RequestParam(value="test" required=false, defaultValue="spring") String test){
	System.out.println("test : " + test)

}

존재하지 않은 값을 반환 받으려할 때 400에러가 뜬다.

나중에 사용할 수 있는 값을 required=false로 설정해서 넣어둔다.

 

3) ModelAttribute 방식

: 요청 파라미터가 많을 경우 객체 타입으로 넘겨 받는다.

: 파라미터명이랑 셋터롸 이름이 같아야 매핑이 된다. --> **이름이 다르면 매핑이 안된다, 기본생성자가 없으면 안된다.

(기본생성자로 객체를 만들어줘야 셋터도 진행된다.)

@RequestMapping(value="login.me" method = RequestMethod.POST)
public void login(@ModelAttribute Member m) {
	System.out.println("m : " + m);
}

<데이터 전달하기>

1) Model 객체 사용

: Servlet에서 사용하던 requestScope와 비슷 = scope는 request

: 뷰에 전달하고자 하는 데이터를 맵형식(key, value) 으로 담을 때 사용

 

2) ModelAndView 객체 사용

: Model + View --> 데이터와 뷰를 한 번에 담는 객체

: 반환값도 ModelAndView이다.