[Spring] Model 객체

서현서현·2022년 7월 12일
0

Spring

목록 보기
5/31
post-thumbnail

Spring Model 객체

Model객체는 그냥 메소드의 매개변수에서 생성해서 서블릿의 Request 대용 정도로 쓰고 있었다

근데.. 다음 코드를 마주쳤다..!

$(".btn-warning").on("click",function(){
	formObj.attr("action",'/board/modifyPage');
	formObj.attr("method","get");
	formObj.submit();
 });
@RequestMapping(value="/modifyPage", method=RequestMethod.GET)
	public void modifyGET(@RequestParam("bno") int bno, 
							@ModelAttribute("cri") Criteria cri, 
							Model model) throws Exception {

		model.addAttribute(service.read(bno));
}

간단히 설명하자면 특정 버튼을 누르면 form에 저장해두었던 어떤 변수값들을 get으로 위 컨트롤러의 메소드에 전송한다. 그리고 Model객체를 생성하여 addAttribute를 통해 값을 세팅해준뒤 jsp로 넘겨준다.

그런데 이해가 안되었던점이, jsp에서 사용하는 변수에 service.read(bno)를 통해 구한 결과가 아닌, 즉 addAttribute()하지 않은 변수도 사용할 수 있었다는거다! 서블릿의 Request에서 이런건 불가능했었다. 완전 멘붕

근데 그냥 Model객체를 공부 안한거였다.
이참에 알아보자!

특징

  • 직접 생성해줄 필요없다. 파라미터로 선언해주면됨

  • 스프링 MVC는 JavaBeans 규칙에 맞는 객체는 자동으로 화면에 전달해준다

    JavaBeans 규칙에 맞는다 = 생성자가 없거나 빈 생성자를 가지며, getter/setter를 가진 클래스들의 객체를 의미한다.

  • (주의) 기본자료형은 파라미터로 선언되었더라도 화면에 자동으로 전달되지 않는다. 따라서 addAttribute() 하거나 @ModelAttribute를 사용한다

0개의 댓글