본문 바로가기

Spring/MVC15

서블릿 필터 서블릿 필터필터는 웹과 관련된 공통 관심사(로그인, 사용자 권한 등)를 처리할 때 주로 사용지정한 URL 패턴에 대해 거름막 역할을 해주는 기능필터 흐름HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러필터 제한HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러 // 로그인 사용자HTTP 요청 -> WAS -> 필터(적절하지 않은 요청이라 판단 시 서블릿 호출 X) // 비 로그인 사용자필터 체인HTTP 요청 -> WAS -> 필터1 -> 필터2 -> 필터3 -> 서블릿 -> 컨트롤러필터는 체인으로 구성중간에 필터를 자유롭게 추가 가능(순서 지정 가능)Filter 인터페이스public interface Filter { public default void init(Filte.. 2024. 7. 11.
Bean Validation 유효성 검사 애노테이션@Null // null만 혀용@NotNull // null을 허용하지 않음, "", " "는 허용@NotEmpty // null, ""을 또는 리스트 [] 빈값 허용하지 않음, " "는 허용@NotBlank // null, "", " " 모두 허용하지 않음@Email // 이메일 형식을 검사. 다만 ""의 경우를 통과. @Email보다 @Patten을 통한 정규식 검사를 더 많이 사용@Pattern(regexp = ) // 정규식을 검사할 때 사용@Size(min=, max=) // 문자길이를 제한할 때 사용, int는 불가!@Max(value = ) // 숫자 value 이하의 값을 받을 때 사용@Min(value = ) // 숫자 value 이상의 값을 받을 때 .. 2024. 6. 29.
Validator Validatorpublic interface Validator { boolean supports(Class clazz); void validate(Object target, Errors errors);}Spring이 체계적으로 검증 기능을 도입하기 위해 해당 인터페이스 제공supports() : 해당 검증기를 지원하는 여부 확인validate(Object target, Errors errors) : 검증 대상 객체와 BindingResult를 넘겨서 검증을 수행하고 오류가 있으면 담음Errors는 BindingResult의 상위 인터페이스1. 직접 호출Validator 구현@Componentpublic class ItemValidator implements Validator { @O.. 2024. 6. 28.
BindingResult BindingResultSpring이 제공하는 검증 오류 처리 방법의 핵심Spring이 제공하는 검증 오류를 보관하는 객체검증 오류 발생 시 해당 객체에 보관@RequestParam, @ModelAttribute에서 바인딩 에러가 발생하는 경우 해당 객체에 에러 내용이 담김@ModelAttribute에 데이터 바인딩 시 오류가 발생해도 컨트롤러가 호출 됨BindingResult가 없는 경우 : 400 error 발생, 컨트롤러 호출X, 오류 페이지로 이동BindingResult가 있는 경우 : 오류 정보를 BindingResult에 담아서 컨트롤러 정상 호출BindingResult 위치는 검증할 대상 바로 다음에 위치검증할 대상 바로 다음에 위치하기 때문에 어떤 객체를 대상으로 검증하는지 target을 .. 2024. 6. 27.
Model과 @ModelAttribute ModelModel은 객체Spring이 지원하는 기능으로, Key와 Value로 이루어진 HashMapController에서 addAttribute("key", value)를 통해 View에 전달할 데이터를 저장할 수 있음Servlet의 request.setAttribute()와 비슷한 역할따로 반환이 필요 없음사용 예시@Controllerpublic class ModelTest { // 파라미터를 통한 전달 @GetMapping("/test") public String testMethod(@RequestParam name, Model model){ model.addAttribute("name", name); return "Ok"; }} T.. 2024. 6. 8.
@Controller와 @RestController @Controller@Controller는 Spring MVC의 Controller로 주로 View를 반환하기 위해 사용하지만 @ResponseBody를 통해 Data를 반환해야 하는 경우가 존재@RestContoller@RestController는 @Controller와 @ResponseBody가 합쳐진 형태로 JSON 형태의 객체 데이터를 반환@ResponseBody가 적용되므로 선언 필요XView 템플릿을 사용하는 것이 아니라, HTTP 메시지 바디에 직접 데이터를 입력Rest API(HTTP API)를 만들 때 사용하는 컨트롤러View 반환 과정클라이언트는 URL 형식으로 요청을 보냄DispatcherServlet이 요청을 위임할 Handler Mapping을 찾음Handler Mapping을 통.. 2024. 6. 6.