[Spring] 스프링부트 컨트롤러 (Springboot controller)

[Spring] 스프링부트 컨트롤러 (Springboot controller)

@RequestMapping

=> value에는 url, method는 get, post 같은 HTTP 프로토콜 방식을 써주면 된다.

즉 클라이언트가 URL로 서버에 요청을 하면 해당 URL을 맵핑하고 있는 메소드가 해당 요청을 처리하고 응답해준다고 보면 된다.

@ResponseBody

=> HTTP 의 body를 읽는데 필요하다. ajax로 통신할 때 json 메세지를 읽는데 필요하여 사용했으며, ajax에게 map형태로 간단한 성공 여부를 알려주기위해 return type을 Map 타입으로 하였다.

@RequestParam

=> 타임리프의 input의 name이나 Get방식 url의 키값같은, 즉 클라이언트로부터 요청받은 키의 이름과 매핑하여 컨트롤러에서 사용할 수 있다.

@ModelAttribute

=> 위와 반대로 하나의 키값에 해당하는 값을 받는게 아니라 모델로서도 받을 수 있다. 예를들어 타임리프 form에서 의 name에 매칭하여 객체의 값을 한번에 담아올 수 있다. (이 때 form 태그 안의 input태그들의 name이 객체의 변수명들과 맞아 떨어져야한다.)

ModelAndView

=> ModelAndView는 응답으로 반환하는 클래스인데 이름 그대로 모델과 뷰 정보를 모아서 관리하는 클래스라고 이해하면 쉽다. MVC의 Model과 View로 데이터를 관리하는 모델과 화면 출력과 관련된 뷰를 한번에 처리한다.

HTTPServletRequest

=> 세션을 얻는데 사용하였다.

@PathVariable

=> 말 그대로 경로 변수를 넣는데 사용한다. 예를들어 내 블로그 포스팅처럼 https://youngest-programming.tistory.com/173 뒤에 173 이런데에 사용하고 보통 select(Get요청) 용으로 사용된다.

[참고]

@RequestBody

- HTTP 요청 몸체를 자바 객체로 전달받음

- HTTP 요청의 body 내용을 자바 객체로 매핑하는 역할

@ResponseBody

- 자바 객체를 HTTP 응답 몸체로 전송함

- 자바 객체를 HTTP 요청의 body 내용으로 매핑하는 역할

출처: https://lee-mandu.tistory.com/242?category=633568 [개발/일상_Mr.lee]

코드를 최대한 생략하여 간단하게 정리해봤다.

mv, get

@RequestMapping(value = "go_page", method = RequestMethod.GET) public ModelAndView goPage() { ModelAndView mv = new ModelAndView(); mv.setViewName("pages/go_page2"); mv.addObject("key1", "value1"); mv.addObject("key2", "value2"); return mv; }

mv,post

@RequestMapping(value = "go_page", method = RequestMethod.GET) public ModelAndView goPage(@RequestParam(value = "raw_id", required = true) String rawId, HttpServletRequest request) { ModelAndView mv = new ModelAndView(); mv.setViewName("pages/homepage"); mv.addObject("key", "value"); mv.addObject("raw_id", rawId); return mv; }

map , post , request(session), @responsebody

@ResponseBody @RequestMapping(value = "do_page", method = RequestMethod.POST) public Map doBioprojectTemporarySave(@ModelAttribute("regist_form") RegistModel registModel, HttpServletRequest request) { Map map = new HashMap<>(); String userId = (String) request.getSession().getAttribute("user_id"); registModel.setUserId(memberId); try { String rawId = registDatabase.insertRegist(connection, bioProjectModel); map.put("raw_id", rawId); map.put("success", "true"); } catch (IOException e) { e.printStackTrace(); map.put("success", "false"); } return map; }

pathvariable

@RequestMapping("/page/{num}") public String page(@PathVariable String num){ }

from http://youngest-programming.tistory.com/174 by ccl(S) rewrite - 2020-03-06 10:20:58

댓글

이 블로그의 인기 게시물

데이터 바인딩 추상화 - propertyEditor

[sts] spring boot groovy 적용 실행 하기

2020 LCK 롤챔스 Spring 경기 재개 및 일정