@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비번" />
'웹캠프2021' 카테고리의 다른 글
Spring4 1/28 (Mybatis 정리내용) (0) | 2021.01.31 |
---|---|
Spring3 1월/27일 (Spring MVC Lifecycle + 2 return types of Spring Controller) (0) | 2021.01.31 |
웹캠프: Spring1 (1/25) (0) | 2021.01.27 |
웹캠프: JSP5 1/22 (0) | 2021.01.24 |
웹 캠프: JSP4 1/21 (0) | 2021.01.23 |