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 | 31 |
Tags
- 곱 최대값
- 초(second)
- json
- 매일프로그래밍
- jQuery
- 생년
- 분(minute)
- spring
- 병합정렬
- oracle
- java
- list
- 파사드패턴
- SpringBoot
- ThreeWayPartition
- 조인
- 널체크
- 시간더하기
- 자바
- 시(hour)
- SSL설정
- 디자인패턴
- JavaScript
- 스트레티지패턴
- Flyweight Pattern
- map
- 알고리즘
- boot
- 자바스크립트
- degien pattern
Archives
- Today
- Total
만들어가는 세상
[SPRING] @RequestMapping 활용하기 본문
[SPRING] @RequestMapping 활용하기
여러 경로를 한 메서드에 처리하고 싶다면, 배열로 경로 목록을 지정하면 된다.
@Controoler
public class HomeController {
@RequestMapping({"/main", "/index"})
public String list(ModelMap model){
....
}
}
HTTP 전송 방식 지정
• 로그인 데이터나 게시글 데이터를 존성해야 할 경우 <form> 태그에서 method 속성값을 “post”로 지정하는 것이 일반적입니다.
• @RequestMapping 애노테이션은 method 속성을 이용해서 메서드에서 처리할 전송 방식을 지정할 수 있습니다.
• 동일한 경로를 값으로 갖고 method 속성만 다를 수 있습니다.
@Controller
public class RegistrationController{
@RequestMapping(value="/member/regist", method=RequestMethod.GET)
public String form(...) {
return "member/registrationForm";
}
@RequestMapping(value="/member/regist", method=RequestMethod.POST)
public String regist(...) {
return "member/registered";
}
}
@PathVariable을 이용한 경로 변수
• 게시글의 내용을 보여주는 URL을 보면 http://host/readArticles?id=10와 같이 요청 파라미터를 이용하는 경우가 많습니다.
• 하지만, URL자체를 이용해서 게시글 링크를 표현하는 경우도 많습니다.
• @RequestMapping 애노테이션은 경로에 {변수} 형식의 경로 변수를 사용할 수 있습니다.
• @PathVariable 애노테이션을 사용하면 경로 변수의 값을 파라미터로 전달받을 수 있습니다.
@Controller
public class MemberController {
@RequestMapping("/members/{memberId}")
public String memberDetail(@PathVariable Stirng memberId, Model model){
...
}
}
### 경로 변수는 한 개 이상 사용할 수 있다.
@RequestMapping("/members/{memberId}/orders/{orderId}")
public String memberOrderDetail(){
@PathVariable ("memberId") String memberID,
@PathVariable ("orderId") Long orderId, Model model){
...
}
Ant 패턴을 이용한 경로 매핑
• * : 또는 그 이상의 글자
ex) @RequestMapping(“/member/?.info”) : /member/로 시작하고, 확장자가 .info로 끝나는 모든 경로
• ? : 1개 글자
ex) @RequestMapping(“/faq/f?00.fq”) : /faq/f로 시작하고, 1글자가 사이에 위치하고 00.fq로 끝나는 모든 경로
• ** : 0개 도는 그 이상의 디렉토리 경로
ex) @RequestMapping(“/folders/**/files”) : /folders/로 시작하고, 중간에 0개 이상의 중간 경로가 존재하고 /files로 끝나는 모든 경로. 예를 들어, /folders/files, /folders/1/2/3/files 등이 매핑됩니다.
처리 가능한 요청 컨텐트 타입.응답 가능한 컨텐트 타입 한정
• 서비스 또는 클라이언트/서버간 통신 방식으로 REST API가 자리를 잡으면서 HTTP의 데이터로 JSON이나 XML을 전송하는 경우가 증가
• @RequestMapping은 컨트롤러 메서드에서 처리 가능한 요청 컨텐트 타입과 응답 컨텐트 타입을 제한하는 방법을 제공
• 같은 URL이라 하더라도 컨텐트 타입에 따라 다른 응답을 보여주도록 처리
• 요청 컨텐트 타입 제한 = comsumes 속성 사용하면 된다. 예를 들어 Content-Type 요청 헤더가 “application/json”인 경우만 처리하고 싶다면 다음과 같은 코드를 사용하면 된다.
@RequestMapping(value="/member", method=@RequestMethod.POST, consumes="application/json")
public Result addMemeber(@RequestBody NewMember mem) {
...
}
• 반대로 응답 결과로 JSON을 요구하는 요청을 처리하고 싶다면, 즉 Accept 요청 헤더에 application/json이 표함된 경우만
처리하고 싶다면, producess 속성을 사용하면 된다.
@RequestMapping(value="/member/{memberId}", method=@RequestMethod.GET, produces="application/json")
@ResponseBody
public MemberInfo getMember(@PathVariable String memberId){
...
}
'IT > SPRING' 카테고리의 다른 글
[SPRING] 406 ERROR 발생시 대처 방법 (0) | 2019.11.26 |
---|---|
[SPRINGBOOT] SPRING BOOT&GRADLE Twitter Search, Oracle 등 관리 로직입니다. (0) | 2019.11.12 |
[SPRINGBOOT] SPRING BOOT &GRADLE Google SMTP EMAIL 서버 전송 로직입니다. (0) | 2019.11.08 |
[SPRING] REST FULL API 구현시 자주 사용되는 @RequestBody와 @ResponseBody 개념 (0) | 2019.11.08 |
[SPRING] SPRING BOOT 장점과 단점 (2) | 2018.06.26 |
Comments