@RequestMapping
- @RequestMapping은 특정 HTTP 요청(예: GET, POST, PUT, DELETE 등)을 컨트롤러의 메소드에 매핑합니다. 이를 통해 해당 요청이 들어왔을 때 어떤 메소드가 처리할지 정의할 수 있습니다.
- 즉, 우리가 front에서 페이지를 통해 무언가의 작업 (form 제출, 버튼 클릭 등)을 실행했고 이를 Back의 어디서 제어를 담당할지 정해야 하는데 이부분을 정해주는게 해당 어노테이션이다.
- URL 패턴(value="/users"), HTTP 메소드(get,put,delete,post), 헤더, 매개변수(MemberVO membervo) 등을 지정할 수 있습니다.
@RequestMapping("/users")
public String getUsers() {
// 사용자 목록을 반환하는 로직
}
@RequestMapping(value = "/users", method = RequestMethod.GET)
public String getUsers(MemberVO membervo) {
// 사용자 목록을 반환하는 로직
}
@PathVariable
- @PathVariable은 URL 경로의 일부를 변수로 추출하여 파라미터로 사용이 가능하도록 해준다.
- URL패턴인 /users/{userId} 에서 {userId} 부분을 추출하여 메소드에 전달, 이것을 파라미터로 사용이 가능하다
- 즉, 하단의 예시코드는 gifticonDelete/{gifticon_id}으로 요청이 들어왔을때 gifticon_id을 활용하는 형식이다.
- URL의 예시 : /users/123
@RequestMapping(value = "/users/{userId}", method = RequestMethod.GET)
public String getUserById(@PathVariable("userId") Long userId) {
// userId = 123
}
//예시
@RequestMapping("/gifticonDelete/{gifticon_id}")
public String gifticonDelete(@PathVariable("gifticon_id") int gifticon_id) {
gifticonService.gifticonDelete(gifticon_id);
return "redirect:/shop";
}
@RequestParam
- 사용자가 전달하는 값을 매개변수로 1:1 매핑이 가능하도록 해주는 어노테이션.
- 한번에 여러개의 값의 사용해야 할땐 ModelAttribute이 더 낫다. -> 만일 RequestParam이 1개가 아닌 여러개일때 나중에 이를 재사용하기 힘들어진다.
//URL의 예시 : /users?id=admin
@RequestMapping("/users")
public String exgetUsers(@RequestParam("id") String userId) {
// userId = admin
//URL에선 id로 나타나지만 다른형식으로 변환해서 사용하고 싶을때 "("기본이름") 원하는이름"의 형태이다.
}
// URL예시 : /users?id=123&name=John&email=john@example.com&phone=010-1234-5678
@RequestMapping("/users")
public String exgetUsers2(@RequestParam String id, @RequestParam String name,
@RequestParam String email,
@RequestParam String phone) {
// id = 123
// name = John
// email = john@example.com
// phone = 010-1234-5678
}
@ModelAttribute
- 전체 데이터를 받아 객체로 매핑할 때 사용한다.
- 한번에 여러 데이터가 오가는 폼에서 자주 사용되는 경우가 많다.
- 해당 어노테이션은 스프링에서 생략하여도 자동적으로 붙
@PostMapping("/register")
public String register(@ModelAttribute MemberVO membervo) {
// membervo 객체를 사용하는 로직
}
public String register(MemberVO membervo) {
// 이렇게 해도 무방하다
}
ResponseEntity
- HTTP 응답의 본문, 상태 코드, 헤더 등을 전체적으로 제어할 수 있게 해주는 클래스
- void를 사용한 ajax의 경우 문제없이 작동하더라도 return할게 없을때 error가 나타나는데 해당 방식을 활용하면 끝남과 동시에 http 코드도 함께 전달이 가능해져서 error가 나타나지 않게된다.
@GetMapping("/user/{id}")
public ResponseEntity<User> getUserById(@PathVariable("id") Long userId) {
User user = MemberDAO.getmember(userId);
return ResponseEntity.ok(user); // 200 OK 응답과 함께 유저 반환
}
HttpServletRequest
front에서 back으로 데이터를 보냈을때 보내지는 데이터(헤더, 쿠키, 세션 등)가 캡슐화가 되어 전달된다.
@GetMapping("/example")
public String handleRequest(HttpServletRequest request) {
String clientIP = request.getRemoteAddr(); // 클라이언트 IP 주소 가져오기
// HttpServletRequest를 사용한 다른 로직
return "viewName";
}
'Spring' 카테고리의 다른 글
Mybatis, BulkInsert (0) | 2024.02.01 |
---|---|
putty를 활용해 EC2에 접근하기 (0) | 2024.02.01 |
SSR, CSR, SSG (0) | 2024.01.23 |
개인 프로젝트 회고 (0) | 2024.01.21 |
SMTP를 활용하여 이메일 보내기 (0) | 2024.01.04 |