일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 막무가내
- 안드로이드
- 막내의막무가내 안드로이드 코틀린
- 막내의막무가내 안드로이드 에러 해결
- Fragment
- 막내의막무가내 안드로이드
- 막내의막무가내 일상
- 막내의막무가내 플러터 flutter
- flutter network call
- 프로그래머스 알고리즘
- 막내의막무가내 rxjava
- 막내의막무가내 코볼 COBOL
- 막내의막무가내 코틀린 안드로이드
- 막내의막무가내 코틀린
- 막내의 막무가내 알고리즘
- 막내의막무가내 플러터
- 막내의막무가내 SQL
- 막내의막무가내
- 막내의막무가내 목표 및 회고
- 막내의막무가내 알고리즘
- 주택가 잠실새내
- 안드로이드 sunflower
- 안드로이드 Sunflower 스터디
- 막내의 막무가내
- 막내의막무가내 프로그래밍
- 2022년 6월 일상
- 주엽역 생활맥주
- 부스트코스
- 부스트코스에이스
- 프래그먼트
- Today
- Total
막내의 막무가내 프로그래밍 & 일상
[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에서 <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<String, String> doBioprojectTemporarySave(@ModelAttribute("regist_form") RegistModel registModel,
HttpServletRequest request) {
Map<String, String> 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;
}
=> Map 리턴타입 컨트롤러는 ajax와 통신할 때 사용해주었다. 밑은 저의 스프링부트에서 사용했던 ajax 예시 사이트입니다. (요약해서 올린겁니다.)
https://youngest-programming.tistory.com/173
pathvariable
@RequestMapping("/page/{num}")
public String page(@PathVariable String num){
}
'웹 > Spring Boot' 카테고리의 다른 글
[Spring Boot] JPA 추가 및 프로젝트 패키지 분리 (0) | 2020.04.07 |
---|---|
[Spring Boot] aws mysql 데이터베이스 연동 기록 (0) | 2020.04.07 |
[Spring] 인텔리제이 스프링부트 세팅 (0) | 2020.03.14 |
[Spring] 스프링부트 포트 이미 사용중이라 실행안될때 해결방법 (0) | 2020.02.11 |
[Spring] 스프링부트 책 중간후기 (스프링부트 프로그래밍 입문) (0) | 2019.12.28 |