2014년 8월 18일 월요일

[오라클자바커뮤니티스프링교육학원,실무spring]스프링 메소드 파라미터(@ModelAttribute, @MVC, Spring Web MVC)

[오라클자바커뮤니티스프링교육학원,실무spring]스프링 메소드 파라미터(@ModelAttribute, @MVC, Spring Web MVC)

@ModelAttribute : HTTP요청(Request) 파라미터 값들을 자동으로 지정한 모델객체에 넣어준다.
@RequestParam으로 하나씩 받아서 처리하는 것보다 효율적이다. 

 즉 클라이언트에서 요청 파라미터로 넘기는 값들이 지정한 @ModelAttribute로 지정한  객체에 자동 바인딩 되며 바인딩된 객체는 view에 리턴해 주지 않아도  사용 가능하다

@ModelAttribute를 다른말로 Command 객체라고도 한다.

주로 매개변수 앞에 사용되지만 메소드 레벨에서 메소드 위에 사용될 수도 있는데 이 경우 그 메소드에서 리턴하는 자바객체를 view단 에서 사용 가능하다.



public class OracleJavaCommunity{ //search 에서 연결될 모델
String name;
int age;

//Client Form 태그내에 <input name="name" type="text"/> 에 대응
public void setName(String name) {  this.name = name;   }
//Client Form 태그내에 <input name="age" type="text"/> 에 대응
public void setAge(int age)      {  this.age = age;     }
}

@RequestMapping("/ojc",method=RequestMethod.GET)
public String subject(@ModelAttribute OracleJavaCommunity ojc, Model model){
List<User> list = onjService.dispSubject(ojc);
model.addAttribute("list",list);
}

위 메소드를 자바 서블릿형태로 변환 한다면 대략 다음과 같을 것이다.

        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

  String name = request.getParameter("name");
  int age = Integer.parseInt(request.getParameter("age"));

  OracleJavaCommunity ojc = new OracleJavaCommunity();
  ojc.setName(name);
  ojc.setAge(age); 
           ................
}


댓글 없음:

댓글 쓰기