Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 데이터통신
- javascript
- ajax
- cache
- HTTP
- git
- Elk
- socket
- effective
- nodejs
- spring
- reactive
- 네트워크
- Java
- github
- Static
- html
- redis
- network
- Heap
- NoSQL
- Lombok
- VCS
- mongodb
- AWS
- Linux
- r
- libuv
- mybatis
- reactor
Archives
- Today
- Total
빨간색코딩
Controller에서 다양한 타입으로 Request 요청받기 (PathVariable, RequestParam, ModelAttribute, RequestBody) 본문
Spring
Controller에서 다양한 타입으로 Request 요청받기 (PathVariable, RequestParam, ModelAttribute, RequestBody)
빨간색소년 2018. 4. 1. 19:33컨트롤러에서 request 들을 다양한 타입으로 받을 수 있다.
1. Servlet API
- ServletRequest, ServletResponse
- HttpServletRequest, HttpServletResponse : 위에꺼를 상속받음
- HttpServletRequest.getInputStream() : InputStream, Reader 등을 얻을 수 있다.
- HttpServletResponse.getOutputStream() : OutputStream, Writer 등을 얻을 수 있다.
- HttpSession : HttpServletRequest 에서 세션관련한 것들만 있음
2. Spring API
- WebRequest : HttpServletRequest 와 비슷하지만 Servlet 과 의존성이 없다
- org.springframework.web.context.request.WebRequest
- MultipartRequest : 파일 업로드
- org.springframework.web.multipart.MultipartRequest
3. Spring Annotation
- 대부분 생략이 가능한 것들이 많은데 가독성을 위해 왠만하면 다 적어주는게 좋다.
- 거의 org.springframework.web.bind.annotation 경로에 있다.
- @PathVariable : 중괄호에 명시된 값을 변수로 받는다.
- @RequestMapping("/user/{id}")
- public String userInfo(@PathVariable("id") String id)
- @RequestParam : http 요청 파라미터를 변수로 받는다.
- @RequestParam(value = "page", required = false, defaultValue = "1") Integer page
- required 와 defaultValue 사용가능, required = true 인데 요청 필드가없으면 400 에러
- 요청예제. ?page=3
- 원시타입일 경우 어노테이션안붙여도 자동으로 알아먹음
- @ModelAttribute : http 요청 파라미터를 VO로 받는다.
- public ModelAndView search(@ModelAttribute User user)
- 레퍼런스타입일 경우 어노테이션안붙여도 자동으로 알아먹음. 즉 원시타입은 RequestParam으로, 객체타입은 ModelAttribute 로
- 요청 파라미터가 많을경우 VO로 받는게 가독성이나 코드효율 상 좋다.
- 이걸 커맨드 객체라고도 한다.
- 메소드 레벨에서 annotation을 선언하면 ModelMap.addAttribute 와 같은 기능을 한다.
- ex. @ModelAttribute("users") 이면 ModelMap.addAttribute("users", 메소드의 리턴값)
- @RequestBody : HTTP 요청의 body 부분을 그대로 변수에 넣는다. XML, JSON 일떄 이것을 주로 사용한다.
- public String message(@RequestBody KakaobotRequest request)
- 예를들어 json 구조처럼 KakaobotRequest.java 를 맞춘다면 파싱해서 잘 들어갈 것이다.
- @CookieValue : 요청의 쿠키정보를 가져온다
- @RequestHeader : 요청헤더 정보를 가져온다
- @RequestHeader("host") String host
'Spring' 카테고리의 다른 글
Log4j 와 slf4j (maven 설정, commons-logging, appender, logger, layout) (1) | 2018.07.22 |
---|---|
Spring AOP (개념, 용어, 원리, 포인트컷 표현식, JoinPoint API) (3) | 2018.06.26 |
RestTemplate (정의, 특징, URLConnection, HttpClient, 동작원리, 사용법, connection pool 적용) (4) | 2018.02.26 |
lombok (롬복의 특징, annotations) (0) | 2018.02.25 |
JSTL (종류, 사용법, core, fuctions) (0) | 2018.02.25 |
Comments