2013년 11월 26일 화요일

스프링3.X컨트롤러에서요청,파라미터,뷰처리방법,Spring Framework3.2 MVC, @RequestMapping, @Controller, @RequestParam, @ModelAttribute

 스프링3.X컨트롤러에서요청,파라미터,뷰처리방법,Spring Framework3.2 MVC, @RequestMapping, @Controller, @RequestParam, @ModelAttribute
 
 
컨텍스트 명이 oraclejava라고 할때...
 
//-------------------------------------------------------------
// 컨트롤러에 @RequestMapping 쓰면 상위 URL 이 추가된다.
// 아래는 모든 /onj요청에 대응하는 컨트롤러임을 나타낸다.
//localhost:8080/oraclejava/onj/ 와 같은 형태로 접근해야 한다.
//-------------------------------------------------------------
@Controller
@RequestMapping("onj")
public class OnJController {
  // return형이 void 이면 new 와 같은 경로의 view를 자동으로 찾는다.
  // localhost:8080/oraclejava/onj/new.html등으로 접근
  @RequestMapping("new")
  public void myMethod1() {
  }
 
  // return값이 string 이면 그것이 view의 이름이다.
  // 예) localhost:8080/oraclejava/onj/onjsystems.html
  @RequestMapping("onjsystems")
  public String myMethod2() {
    return "hello";   //view이름이 hello
  }


  // 요청처리 메소드에서 파라미터를 받을 수 있다.
  // 만약 파라미터를 원시자료형(int, long등)으로 해 놓는경우 값을 안넘기는 오류발생하므로
  // 가능하면 Wrapper 클래스(Integer, Long)로 파라미터를 처리하면 좋다.
  // 예)localhost:8080/oraclejava/onj/onjoracle.html?param1=onj&param2=8514790
  @RequestMapping("onjoracle")
  public String myMethod3(String param1, Integer param2) {
    System.out.println("param1:"+param1+",param2:"+param2);
    return "hello"; //view이름이 hello
  }
 
  // @RequestParam 애노테이션은 파라미터의 좀 더 세밀한 설정이 가능하다.
  // 예)localhost:8080/oraclejava/onj/onjoracle2.html?p1=onj&p2=8514790
  @RequestMapping("onjoracle2")
  public String myMethod4(
   @RequestParam(value="p1",required=true) String param1,
   @RequestParam(value="p2",required=true) Integer param2
   ) {
       System.out.println("param1:"+param1+",param2:"+param2);
       return "hello";   //view이름을 리턴
   }


  // 요청 처리 메소드의 파라미터에 Model 객체를 줄 수 있다.
  // 해당 Model에 attribute 추가 가능하며 이를 view에 넘길 수 있다.
  // 예)localhost:8080/oraclejava/onj/onjoracle3.html
  @RequestMapping("onjoracle3")
  public String myMethod5(Model model) {
    model.addAttribute("name","oraclejava");
    return "hello";   //뷰이름을 리턴
  }
 
  // 요청처리 메소드의 리턴형을 ModelAndView로 할 수 있다.
  // view 에 데이터를 던져 줄 수도 있다.
  // 예)localhost:8080/oraclejava/onj/onjoracle4.html
 @RequestMapping("onjoracle4")
 public ModelAndView myMethod6() {
   ModelAndView mav = new ModelAndView();
   mav.setViewName("hello");    //view이름
   mav.getModel().put("name","onjoraclejava");  //name이라는 이름의 값으로 onjoraclejava
   return mav;
 }


  // 요청 메소드 파라미터와 model을 동시에 사용
  // 예)localhost:8080/oraclejava/onj/onjoracle5.html?param1=onj&param2=8514790 로 접근
  @RequestMapping("onjoracle5")
  public String myMethod7(String param1,Integer param2, Model model) {
    System.out.println("param1:"+param1+",param2:"+param2);
    model.addAttribute("message","hello7");
    return "hello";
  }

  // 요청메소드의 파라미터와 ModelAndView 같이 사용
  // 예)localhost:8080/oraclejava/onj/onjoracle6.html?param1=onj&param2=8514790 로 접근
  @RequestMapping("onjoracle6")
  public ModelAndView request8(String param1,Integer param2) {
    System.out.println("param1:"+param1+",param2:"+param2);
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.setViewName("request/request2");
    modelAndView.getModel().put("message","hello8");
    return modelAndView;
  }
 
  // 아래는 /onjoracle7/name/ 요청에 대응 되는데 만약요청이/onjoracle7/name/홍길동
  // 이라면ename이라는변수값에 홍길동 이대입되는것이다.
  // 예)localhost:8080/oraclejava/onj/onjoracle7/name/홍길동 으로 접근
  @RequestMapping(value="/onjoracle7/{ename}", method=RequestMethod.GET)
  public String myMethod8(@PathVariableString ename, Model model) {
  model.addAttribute("name", ename);
  return "hello";
  }
 
  // 아래는 게시판 같은곳에서 form tag를 서브밋 하는 경우, FORM객체를 받을 수 있다.
  @RequestMapping(value = "/save", method = RequestMethod.POST)
 public String save(@ModelAttribute("uploadForm"), Model model) throws Exception {
     ....
     model.addAttribute("isok", "save ok!");
     return "success";
 }
}

댓글 없음:

댓글 쓰기