티스토리 뷰

SPRING/정리

스프링 컨트롤러

란텔 2013. 11. 13. 19:28

@RequestMapping(value={"/paramTest.choon","/param.choon"},params="account=admin",method=RequestMethod.GET) 

public ModelAndView springParam(HttpServletRequest req, HttpServletResponse res){

ModelAndView mav = new ModelAndView(); mav.setViewName("stringTest"); return mav; }  

첫번 째는 ModelAndView 리턴방식이다. ModelAndview를 사용하면 setViewName()으로 찾아갈 뷰이름을 지정하고, 

addObject()로 뷰페이지에 넘길 파라미터를 셋팅한다.


@RequestMapping으로 사용한 value는 String 배열로 다수의 요청경로를 가질 수 있다. 위와 같은 경우 paramTest.choon이나 

param.choon 요청시 이 컨트롤러 메서드에 진입하게 된다.


params도 있는데 이 값도 String 배열로 다수의 값을 설정 가능하다. 요청파라미터에 account=admin이 존재해야 위의 

컨트롤러 메서드에 매핑되어 진입가능하다. 

요청 파라미터에 특정값이 없도록 할 수도 있다.

params="!type" 이라고 하면 type이라는 요청 파라미터가 없을 경우에 컨트롤러 메서드에 매핑된다.


method는 폼의 전송방식에 따라 GET으로 들어올건지 POST로 들어 올건지에 따라 매핑해준다.

위의 메서드는 GET의 요청으로만 매핑되고 해당 메서드에 진입가능하다. 그외로도 PUT,GET,HEAD,POST,DELETE,OPTIONS,TRACE등이 존재 하는데 이것들은 html의 폼전송으로는 불가능하고, 

자바스크립트나 스프링프레임워크에서 제공하는 스프링폼전송을 사용해야 구현가능하다.


@RequestMapping(value={"/test"}) public void test(HttpServletRequest req, Model model){ model.addAttribute("message","hahaha"); }

 

두번째는 리턴타입이 없는 방식이다. 리턴타입이 없기 때문에 뷰페이지 결정은 누가 해주냐 할 것 같지만, 내부적으로

RequestToViewNameResolver라는 객체에 의해 자동으로 RequestMapping value값인 뷰이름이 test로 결정된다.


@RequestMapping(value={"/stringTest"}) public String stringTest(HttpServletRequest req, Model model){ model.addAttribute("message","hahaha"); req.setAttribute("message", "hohoho"); return "test"; }

세번째는 기본적으로 많이 사용한다고 하는 String 타입 리턴방식이다. 리턴되는 문자열이 뷰이름이 되며, 

Model이나 Request객체로 넘겨줄 파라미터 값을 셋팅한다.






Comments
최근에 올라온 글
최근에 달린 댓글
TAG
more
Total
Today
Yesterday