※ Model 인터페이스의 주요 메소드 (org.springframework.ui.Model)

Model addAttribute(String name, Object value)

value 객체를 name 이름으로 추가 

Model addAttribute(Object value)

value를 추가. value의 패키지 이름을 제외한 단순 클래스 이름을 모델 이름으로 사용(첫 글자는 소문자). value가 배열이거나 콜렉션인 경우 첫 번째 원소의 클래스 이름 뒤에 "List"를 붙인 걸 모델 이름으로 사용(첫 글자는 소문자)

Model addAllAttributes(Collection<?> values)

addAttribute(Object value) 메소드를 이용해서 콜렌션에 포함된 객체들을 차례대로 추가

Model addAllAttributes(Map<String, ?>, attributes)

Map에 포함된 <키, 값>에 대해 키를 모델 이름으로 사용해서 값을 모델로 추가

Model mergeAttributes(Map<String, ?>, attributes>

Map에 포함된 <키, 값>을 현재 모델에 추가. 단 키와 동일한 이름을 갖는 모델 객체가 존재하지 않는 경우에만 추가

boolean containsAttributes(String name)

지정한 이름의 모델 객체를 포함하고 있는 경우 true 리턴

 

 

HelloController.java

package sp.mvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ExtendedModelMap;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

 

@Controller
public class HelloController {

 

 //param : Model
 @RequestMapping("/hello1.sp")
 public String userInfo1(@RequestParam(value="name", required=false, defaultValue="guest1") String name, Model model){
  System.out.println("----- HelloController.userInfo1() -----");
  model.addAttribute("name", name);
  
  return "hello";
 }
 
 //param : ModelMap
 @RequestMapping("/hello2.sp")
 public String userInfo2(@RequestParam(value="name", required=false, defaultValue="guest2") String name, ModelMap model){
  System.out.println("----- HelloController.userInfo2() -----");
  model.addAttribute("name", name);
  
  return "hello";
 }
 
 //return : Model
 @RequestMapping("/hello3.sp")
 public Model userInfo3(@RequestParam(value="name", required=false, defaultValue="guest3") String name){
  System.out.println("----- HelloController.userInfo3() -----");
  Model model = new ExtendedModelMap();
  model.addAttribute("name", name);
  
  //spring303/jsp/hello3.jsp 호출(예제에서는 페이지 없으므로 에러)
 return model;  
 }
}

 

main_config.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:context="http://www.springframework.org/schema/context"
 xmlns:p="http://www.springframework.org/schema/p"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.0.xsd">

 <context:annotation-config/>
 <context:component-scan base-package="sp.mvc.controller"/>
 
 <!-- ViewResolver 설정 -->
 <bean id="internalResource" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="prefix" value="jsp/"></property>
  <property name="suffix" value=".jsp"></property>
 </bean>

 
 <!-- 각종 bean 설정 -->

 
</beans>

 

hello.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
 ${name}님 안녕하세요.
</body>
</html>

 

 

 

결과 - param : Model

요청 URL

http://localhost:8090/spring303/hello1.sp?name=snoopy1

 

----- HelloController.userInfo1() -----

 

 

 

결과 - param : ModelMap

요청 URL

http://localhost:8090/spring303/hello2.sp?name=snoopy2

 

----- HelloController.userInfo2() -----

 

 

 

결과 - return : Model

요청 URL

http://localhost:8090/spring303/hello3.sp?name=snoopy3

 

----- HelloController.userInfo3() -----

 

 

 

 

 

[참고자료] Spring 3.0 프로그래밍-최범균

+ Recent posts