Model 객체는 컨트롤러(Controller)에서 데이터를 생성해 이를 JSP, 즉 View에 전달하는 역할을 합니다. HashMap 형태를 갖고 있고, 키(key)와, 밸류(value) 값을 저장합니다. Servlet의 request.setAttribute()과 비슷한 역할을 한다고 알려져 있습니다.
컨트롤러 클래스 제작 순서
1. @Controller를 이용해서 클래스를 생성한다.
2. @RequestMapping을 이용해, view의 요청 경로 지정한다.
3. 요청 처리 메소드(로직) 구현한다.
4. 뷰 이름 리턴한다.
@Controller
public class LoginController {
@RequestMapping("/login")
public String login(HttpServletRequest request, ModelMap model, HttpSession session) throws Exception{
model.addAttribute("company", commonService.selectCompanyList());
return "login";
}
addAttribute?
- Model에 데이터를 담을 때 addAttribute( ) 메소드를 사용. Model 객체를 파라미터로 받아서 데이터를 뷰로 넘길 수 있다.
model.addAttribute("변수이름", "변수에 넣을 데이터값");
▲ Controller
${변수이름}
- 뷰(.jsp 파일)에서는 ${}를 이용해서 값을 가져온다.
▲ View(jsp)
<div class="wrap-input100 login-box">
<select name="p_companycd" id="p_companycd" style="width:100%; height:100%; border:none; padding-left:1.625rem; background-color:transparent; color:white;">
<c:forEach var="result" items="${company}">
<option value="${result.companycd}">${result.descr}</option>
</c:forEach>
</select>
</div>
{company=[
{companycd=00, descr=벨로그산업(주)},
{companycd=01, descr=(주)테스트공업},
{companycd=02, descr=(주)테스트카인텍},
{companycd=04, descr=TEST1 USA},
{companycd=05, descr=TEST2 USA},
{companycd=06, descr=테스트1산업(주)},
{companycd=07, descr=테스트2산업(주)},
]}
model.addAttribute("변수명");
modelMap.addAttribute("변수명");
model.put(“a”,a)
model.addAttribute(“a”,a)
@RequestMapping(value = "/test.do")
public ModelAndView test(HttpServletRequest request, ModelAndView mv){
String modelAndViewStr = "ModelAndView Test";
mv.addObject("modelAndViewVar", modelAndViewStr);
mv.setViewName("temp/test");
return mv;
}
<body>
ModelAndView 저장한 값 : <input type="text" value="${modelAndViewVar }"/><br/>
</body>