@RequestMapping을 이용한 파라미터 매핑

컨트롤러를 구현하면서 가장 많이 사용되는 어노테이션이다. @RequestParam 어노테이션은 HTTP 요청 파라미터를 메서드의 파라미터로 전달받을 때 사용됩니다. HTTP Form으로부터 submit된 data를 가지고 오게 되는데,

이때 @RequestParam("name")String userName과 같은 방법으로 받아오게 됩니다.

JSP에서 쓰이는 String userName = request.getParameter("name");과 같다고 볼 수 있습니다.

@RequestParam은 Controller 메소드의 파라미터와 웹요청 파라미터와 매핑하기 위한 어노테이션입니다.

Parameter Type

Discription

HttpServletRequest, HttpServletRquest, HttpSession

서블릿 API

Java.util.Locale

현재 요청에 대한 Locale

InputStream, Reader

요청 컨텐츠에 직접 접근할 때 사용

OutputStream, Writer

응답 컨텐츠를 생성할 때 사용

@PathVariable 어노테이션 적용 파라미터

URI 템플릿 변수에 접근할 때 사용

@RequestParam 어노테이션 적용 파라미터

HTTP 요청 파라미터를 매핑

@RequestHeader 어노테이션 적용 파라미터

HTTP 요청 헤더를 매핑

@CookieValue 어노테이션 적용 파라미터

HTTP 쿠키 매핑

@RequestBody 어노테이션 적용 파라미터

HTTP 요청의 바디 내용에 접근할 때 사용

Map, Model, ModelMap

View에 전달할 Model 데이터를 설정할 때 사용

커맨드 객체

HTTP 요청 파라미터를 저장한 객체. 기본적으로 클래스 이름을 모델명으로 사용

Error, BindingResult

HTTP 요청 파라미터를 커맨드 객체에 저장한 결과.

커맨드 객체 파라미터 바로 뒤에 위치해야한다.

SessionStatus

폼처리를 완료 했음을 처리하기 위하여 사용

[출처] [Spring] Controller Method|작성자 김선욱

1. @RequestParam 어노테이션을 이용한 파라미터 매핑

컨트롤러를 구현하면서 가장 많이 사용되는 어노테이션이 바로 @RequestParam 어노테이션이다. @RequestParam 어노테이션은 HTTP 요청 파라미터를 메서드의 파라미터로 전달받을 때 사용된다. @RequestParam 어노테이션과 HTTP 요청 파라미터의 관계는 다음과 같다.

(밑의 이미지 중요!!!)

첫번째 파라미터인 userName은 name 요청 파라미터의 값을 전달 받으며, 두 번째 파라미터인 userEmail 파라미터는 email 파라미터 값을 전달 받는다.

바로, JSP에서 String name = request.getParameter("name"); 과 같다.

 

@RequestParam은 Controller 메소드의 파라미터와 웹요청 파라미터와 맵핑하기 위한 어노테이션이다. 관련 속성은 아래와 같다.

@RequestParam 어노테이션이 적용된 파라미터는 기본적으로 필수 파라미터이다. 따라서 @RequestParam 어노테이션에 명시한 HTTP 요청 파라미터가 존재하지 않을 경우

스프링 MVC는 잘못된 요청을 의미하는 400 응답 코드를 웹 브라우저에 전송한다. 예를 들어 @RequestParam 어노테이션의 별도 설정을 하지 않은 경우, 다음의 URL을 요청하면 400 에러가 발생하게 된다.

http://host/chap06/search/internal.do?query=spring&p=3

@Controller
    public class SearchController{
    @RequestMapping("/search/internal.do")
    public ModelAndView seachInternal(
    @RequestParam("query") String query, @RequestParam("p") int pageNumber){
        .  ..
    }
}

첫 번째 파라미터는 query 요청 파라미터의 값을 전달받으며, 두 번째 파라미터인 pageNumber 파라미터는 p 파라미터의 값을 전달받는다.

@RequestParam 어노테이션이 적용된 파라미터가 String이 아닐 경우 실제 타입에 따라서 알맞게 타입 변환을 수행한다. 예를 들어, pageNumber 파라미터의 타입은 int인데, 이 경우 자동으로 문자열을 int 타입으로 변환해준다. 


출처: https://devbox.tistory.com/entry/Spring-컨트롤러-메서드의-파라미터-타입 [장인개발자를 꿈꾸는 :: 기록하는 공간]

 

Controller Method Retuern Type

컨트롤러 메서드는 ModelAndView를 비롯한 몇 가지 리턴 타입을 가질 수 있습니다.

Parameter Type

Discription

ModelAndView

View 정보 및 Model 정보를 담고 있습니다.

Model

View에 전달할 객체 정보를 담고 있는 Model을 리턴합니다. 이때 View 이름은 요청 URL로부터 결정됩니다.

(RequestToViewNameTranslator를 통해 View 결정)

Map

View에 전달할 객체 정보를 담고 있는 Map을 리턴합니다. 이때 View 이름은 요청 URL로부터 결정됩니다.

(ReuqestToViewNameTranslator를 통해 View 결정)

String

View 이름을 리턴합니다.

View 객체

View 객체를 직접 리턴합니다. 해당 View 객체를 이용해서 View를 생성합니다.

void

메서드가 ServletResponse나 HttpServletResponse 타입의 파라미터를 갖는 경우 메서드가 직접 응답을 처리한다고 가정. 그렇지 않을 경우 요청 URL로부터 결정된 뷰를 보여줍니다.

(RequestToViewNameTranslator를 통해 View를 결정)

@ResponseBody 어노테이션

메서드에서 @ResponseBody 어노테이션이 적용된 경우. 리턴 객체를 HTTP 응답으로 전송합니다. HttpMessageConverter를 이용해서 객체를 HTTP 응답 스트림으로 변환합니다.

 

 

root-context.xml에서 설정시 유의할점!!: (1~2번은 알아서 spring legacy mvc maven project만들시에 자동으로 세팅이 된다)

1) base-package 를 package주소가 제일 base로 세팅해주기!

2) ViewResolver세팅해줄 때 폴더 주소를 내거와 맞는지 확인하기!

3) jdbc 세팅시에, mysql provider를 만는지 확인!

(예: jdbc:mysql://db4free.net:3306/DB이름)

<property name="username" value="DB아이디" />

<property name="password" value="DB비번" />

+ Recent posts