1) 기본자료형 타입
// 요청
// http://localhost/list?page=1&opt=title&keyword=자바
// 요청핸들러 메서드
@GetMapping(path = "/list")
public String list(int page, String opt, String keyword) {
}
/*
* 매개변수 page에는 1이, opt에는 title이, keyword에는 자바가 바인딩된다.
* 필요한 경우 문자열을 정수로 변환한다.
* 단, 매개변수에 지정한 이름과 동일한 이름의 요청파라미터값이 없으면 오류가 발생한다.
*/
2) @RequestParam
// 요청
// http://localhost/list?page=1&opt=title&keyword=자바
// 요청핸들러 메서드
@GetMapping(path = "/list")
public String list(@RequestParam("page") int page,
@RequestParam("opt") String opt,
@RequestParam("keyword") String keyword) {
}
/*
* 매개변수 page에는 1이, opt에는 title이, keyword에는 자바가 바인딩된다.
* 필요한 경우 문자열을 정수로 변환한다.
* 단, 매개변수에 지정한 이름과 동일한 이름의 요청파라미터값이 없으면 오류가 발생한다.
*/
// 요청
// http://localhost/list?page=1&opt=title&keyword=자바
// 요청핸들러 메서드
@GetMapping(path = "/list")
public String list(@RequestParam(name = "page", required = false, defaultValue = "1") int page,
@RequestParam(name = "opt", required = false) String opt,
@RequestParam(name = "keyword", required = false) String keyword) {
}
/*
* @RequestParam의 속성값을 이용하면 요청파라미터와 매개변수 바인딩을 제어할 수 있다.
* @RequestParam의 주요 속성
name : 요청파라미터 이름을 지정한다.
required : 요청파라미터 필수 여부를 지정한다. 기본값은 true
false로 지정하면 매개변수와 바인딩되는 요청파라미터가 없어도 상관없다.
defaultValue : 요청파라미터가 없을 때 매개변수에 비인딩한 기본값이다. 반드시 문자열로만 값을 설정한다.
기본값을 지정하지 않으면 null값이 매개변수에 바인딩된다.
매개변수의 타입이 String인 경우에는 null값이 바인딩되어도 상관없지만,
매개변수의 타입이 int, long, double인 경우에는 반드시 기본값을 지정해야 한다.
*/
3) Model
@GetMapping("/")
public String home(Model model) {
model.addAttribute("msg", "홈페이지 방문을 환영합니다.");
return "home";
}
/*
home.jsp
<h1>홈</h1>
<p>${msg }</p>
* Spring mvc는 요청핸들러 메서드의 매개변수에 Model이 정의되어 있으면 Model 타입의 객체를 생성해서 바인딩한다.
* Model 객체는 요청핸들러 메서드가 뷰에서 표현한 정보를 전달할 때 사용하는 객체다.
* Model 객체에 저장된 값은 JSP로 내부 이동하기 전에 HttpServletRequest 객체에 속성으로 저장된다.
*
*/
4) Form 객체
<form method="post" action="create">
상품이름 : <input type="text" name="name" />
상품가격 : <input type="text" name="price" />
상품수량 : <input type="text" name="stock" />
<button>등록</button>
</form>
@Getter @Setter
public class ProductCreateForm {
String name;
int price;
int stock;
}
@PostMapping("/create")
public String create(ProductCreateForm form) {
}
/*
* 요청핸들러 메서드는 Form 객체를 매개변수로 사용할 수 있다.
* spring mvc는 요청핸들러 메서드에 Form 객체가 정의되어 있으면 폼입력값을 저장하기 위한 객체로 사용한다.
* Form 객체를 처리하는 순서
1. 요청핸들러 메서드의 매개변수를 조사한다.
2. 요청핸들러 메서드의 매개변수에 Form 객체가 정의되어 있으면, Form 객체를 생성한다. 예시에서는 ProductCreateForm 객체를 생성한다.
3. ProductCreateForm 객체의 설계도 정보를 분석한다.(멤버변수명, 멤버변수타입 등)
4. 요청객체의 요청파라미터에서 멤버변수이름과 동일한 이름의 요청파라미터값을 조회한다.
5. 조회된 요청파라미터값을 적절한 타입으로 변환한 다음, Form 객체의 Setter 메서드를 호출해서 값을 저장한다. 모든 멤버변수에 대해서 이 작업을 수행한다.
6. 요청핸들러 메서드를 실행할 때, 요청파라미터값이 저장된 Form 객체를 매개변수에 전달한다.
*/