@Controller
클래스를 컨트롤러로 지정하고 컨트롤러는 클라이언트의 요청을 처리하고 응답을 생성
@Controller
public class MyController {
// Controller methods here
}
@RequestMapping
요청 URL과 메서드를 매핑하여 특정 URL에 대한 요청을 처리할 메서드를 지정
@Controller
@RequestMapping("/myapp")
public class MyController {
@RequestMapping("/home")
public String home() {
return "index";
}
}
@GetMapping / @PostMapping
HTTP GET 및 POST 요청에 대한 처리를 정의
@Controller
@RequestMapping("/myapp")
public class MyController {
@GetMapping("/view")
public String view() {
return "myview";
}
@PostMapping("/submit")
public String submit() {
return "result";
}
}
@RequestParam
요청 파라미터를 메서드 매개변수로 바인딩
@GetMapping("/user")
public String getUser(@RequestParam("id") int userId) {
// Logic to retrieve user by userId
}
@RequestPart
Multipart/form-data 요청에서 개별 부분(part)을 메서드의 매개변수에 바인딩하는 데 사용
파일 업로드와 관련이 있으며, 멀티파트 요청에서 업로드한 파일 또는 다른 파트(part) 데이터를 추출할 때 사용
@PostMapping("/upload")
public String handleFileUpload(@RequestPart("file") MultipartFile file) {
// 업로드한 파일을 처리하는 코드
return "File uploaded successfully!";
}
@PathVariable
URL 경로의 일부를 매개변수로 바인딩
@GetMapping("/user/{id}")
public String getUser(@PathVariable("id") int userId) {
// Logic to retrieve user by userId
}
@ModelAttribute
모델 객체를 컨트롤러 메서드에 바인딩
@PostMapping("/save")
public String saveUser(@ModelAttribute("user") User user) {
// Logic to save user
}
@RequestHeader
HTTP 요청 헤더의 값을 메서드의 매개변수로 바인딩하는데 사용
특정 헤더 값을 추출하여 컨트롤러 메서드 내에서 사용
@Controller
public class MyController {
@GetMapping("/user-agent")
public String getUserAgent(@RequestHeader("User-Agent") String userAgent) {
// userAgent 변수에 User-Agent 헤더의 값을 가져옴
return "User-Agent: " + userAgent;
}
}
@ResponseBody
컨트롤러 메서드의 반환 값을 HTTP 응답 본문으로 사용
@GetMapping("/api/data")
@ResponseBody
public List<Data> getData() {
// Logic to fetch data
}
@CookieValue
HTTP 쿠키의 값을 컨트롤러 메서드의 매개변수로 바인딩할 때 사용
클라이언트가 전송한 쿠키의 값을 쉽게 추출
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class MyController {
@GetMapping("/getCookieValue")
public String getCookieValue(@CookieValue(name = "userName", defaultValue = "Guest") String userName) {
// @CookieValue 어노테이션을 사용하여 쿠키의 값을 매개변수로 바인딩합니다.
// "userName"은 쿠키의 이름을 나타내며, defaultValue는 쿠키가 없을 경우 사용할 기본값을 설정합니다.
// userName 변수에는 쿠키 "userName"의 값이 할당됩니다.
if ("Guest".equals(userName)) {
return "Welcome, Guest!";
} else {
return "Welcome, " + userName + "!";
}
}
}
@CrossOrigin
Cross-Origin Resource Sharing (CORS)를 지원
웹 애플리케이션의 RESTful API나 컨트롤러 메서드에 대한 다른 도메인에서의 HTTP 요청을 허용하거나 구성
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@GetMapping("/api/data")
@CrossOrigin(origins = "http://example.com", maxAge = 3600) // 특정 도메인에서의 요청 허용
public String getApiData() {
return "This is API data";
}
}
@SessionAttributes
세션에 속성을 저장하고 관리
세션에 데이터를 유지하고 여러 HTTP 요청 간에 공유
@Controller
@SessionAttributes("myAttribute")
public class MyController {
@GetMapping("/setSessionAttribute")
public String setSessionAttribute(Model model) {
model.addAttribute("myAttribute", "Hello, Session!");
return "examplePage";
}
@GetMapping("/getSessionAttribute")
public String getSessionAttribute(@ModelAttribute("myAttribute") String attribute) {
// attribute 변수에 세션에서 가져온 데이터가 저장됩니다.
return "resultPage";
}
}
@Valid
폼 입력 및 데이터 전송 시 입력 데이터의 유효성을 검사
입력 데이터가 지정된 규칙과 제약 조건을 준수하는지 확인
@Controller
public class MyController {
@PostMapping("/submitForm")
public String submitForm(@Valid @ModelAttribute MyFormObject formObject, BindingResult result) {
if (result.hasErrors()) {
// 유효성 검사 에러 처리
return "errorPage";
}
// 유효성 검사 통과 시 처리
return "successPage";
}
}
@InitBinder
웹 요청 파라미터의 데이터 바인딩을 커스터마이즈하고 검증
컨트롤러 클래스 내에 메서드로 정의되며, 특정 파라미터에 대한 바인딩 설정을 지정
@Controller
public class MyController {
@InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}
@GetMapping("/myForm")
public String myForm(Model model) {
model.addAttribute("myObject", new MyObject());
return "myForm";
}
@PostMapping("/submitForm")
public String submitForm(@ModelAttribute MyObject myObject) {
// 이곳에서 myObject를 사용
return "successPage";
}
}
@ControllerAdvice
전역 예외 처리 및 모델 속성 설정을 위한 클래스
@ControllerAdvice
public class GlobalExceptionHandler {
// Exception handling methods here
}
@ExceptionHandler(ExceptionClassName.class)
특정 예외 클래스(ExceptionClassName.class)에 대한 예외 처리를 정의
@Controller
public class MyController {
@ExceptionHandler(MyCustomException.class)
public ResponseEntity<String> handleCustomException(MyCustomException ex) {
// 예외 처리 로직
return new ResponseEntity<>("Custom Exception Handled", HttpStatus.BAD_REQUEST);
}
@GetMapping("/example")
public ResponseEntity<String> example() {
// 예외를 발생시키는 메서드
throw new MyCustomException("Custom Exception Occurred");
}
}
'learn > spring' 카테고리의 다른 글
어노테이션(Annotation) - Spring Boot 관련 (0) | 2023.09.26 |
---|---|
어노테이션 (Annotation) - AOP(Aspect-Oriented Programming) 관련 (0) | 2023.09.26 |
어노테이션(Annotation) - 설정(Configuration) 관련 (0) | 2023.09.21 |
어노테이션(Annotation) - 의존성 주입(Dependency Injection) 관련 (0) | 2023.09.21 |
어노테이션(Annotation) - 컴포넌트 스캔(Component Scan) 관련 (0) | 2023.09.21 |