웹 개발/Java, Spring

@ModelAttribute

jihyeon33 2022. 6. 5. 01:11

1. controller

@Controller
public class TestController{
    @RequestMapping(value="/test.do")
    public void doTest(@ModelAttribute TestModel testModel){
            System.out.println("은행 명:"+testModel.getBankNm());
            System.out.println("계좌 번호:"+testModel.getAccountNum());
            return "test";
    }
}

 

2. model

@Getter
@Setter
public class TestModel{
	private String bankNm;
    private Sttring accountNum;
}

 

3. jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
!DOCTYPE html>
<html>
<head>
  <meta charset="EUC-KR">
  <title>계좌 목록</title>
</head>
<body>
	<h3>${testModel.getBankNm()}</h3>  <!--TestModel의 get메소드를 직접 호출-->
    <h3>${testModel.bankNm}</h3>      <!-- 자동으로 get이 호출되어 변수 접근가능-->
	<h3>${testModel.accountNum}</h3>
</body>
</html>

 

4.  @ModelAttribute  요약


1. 객체에  http로 넘어온 값들을 자동으로 바인딩한다. 
    예)  /tes.do? bankNm=국민&accountNum=110234568   =>  setter를 통해 각각의 변수에 바인딩됨.

2. @ModelAttribute 어노테이션이 붙은 객체가 자동으로 Model 객체에 추가되고 jsp단까지 전달된다.

3. jsp에서는   ${testModel.bankNm}   ..이런식으로 사용 가능.
    ${testModel.getBankNm}  => 이런식으로 get메소드를 호출하여 사용 필요 x.