@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

+ Recent posts