본문 바로가기

Spring/MVC15

파일 업로드 HTML 폼 전송 방식1. application/x-www-form-urlencodedHTML 폼 데이터를 서버로 전송하는 가장 기본적인 방법Form 태그에 별도의 enctype 옵션이 없으면 웹 브라우저는 요청 HTTP 메시지의 헤더에 Content-Type : application/x-www-form-urlencoded를 추가폼에 입력한 전송할 항목을 HTTP Body에 문자로 &로 구분해서 전송파일을 업로드 하려면 문자가 아닌 바이너리 데이터를 전송해야 하는데, 해당 방식으로는 어려움2. multipart/form-data문자와 바이너리를 동시에 전송하는 방법Form 태그에 별도의 enctype="multipart/form-data를 지정다른 종류의 여러 파일과 폼의 내용을 함께 전송 가능Conte.. 2024. 8. 5.
스프링 API 예외 처리 스프링 부트가 기본으로 제공하는 ExceptionResolverHandlerExceptionResolverComposite에 다음 순서로 등록ExceptionHandlerExceptionResolverResponseStatusExceptionResolverDefaultHandlerExceptionResolverResponseStatusExceptionResolver예외에 따라서 HTTP 상태 코드를 지정해주는 역할@ResponseStatus가 달려있는 예외를 처리ResponseStatusException 예외를 처리1. @ResponseStautsExcepiton 정의@ResponseStatus(code = HttpStatus.BAD_REQUEST, reason = "잘못된 요청 오류")public cl.. 2024. 7. 21.
API 예외 처리 정상 응답과 오류 응답@RestControllerpublic class ApiExceptionController { @GetMapping("/api/members/{id}") public MemberDto getMember(@PathVariable("id") String id){ if(id.equals("ex")){ throw new RuntimeException("잘못된 사용자"); } if(id.equals("bad")){ throw new IllegalArgumentException("잘못된 입력 값"); } if(id.equals("user-ex")){ throw n.. 2024. 7. 21.
HttpEntity HttpEntitypublic class HttpEntity { private final HttpHeaders headers; @Nulladble private final T body;}HTTP 요청 또는 응답에 해당하는 HttpHeader와 HttpBody를 포함하는 ClassHTTP 메시지를 편하게 조회 가능해당 Class를 상속받은 RequestEntity, ResponseEntity가 대표적ResponseEntitySpring MVC에서 HTTP  요청에 대한 응답을 제어하는데 사용하는 ClassHttpEntity를 상속받고 사용자의 HttpRequest에 대한 응답 데이터가 포함된 Class이기 때문에 HttpStatus, HttpHeader, HttpBody를 .. 2024. 7. 21.
서블릿 예외 처리 Exception자바 직접 실행   실행 도중 예외를 잡지 못하고 처음 실행한 main() 메서드를 넘어서 예외가 던져지면, 예외 정보를 남기고 해당 쓰레드는 종료웹 애플리케이션   try - catch로 예외를 잡지 못하면 톰캣 같은 WAS까지 예외 전달   WAS(전파) response.sendErrorresponse.sendError(Http 상태 코드)response.sendError(Http 상태 코드, 오류 메시지)HttpServlerResponse가 제공하는 메서드호출 시 당장 예외가 발생하는 것이 아닌, 서블릿 컨테이너에게 오류가 발생했다는 것을 전달HTTP 상태 코드와 오류 메시지도 추가 가능WAS(sendError 호출 기록 확인) 사용 예시@GetMapping("/error-404-t.. 2024. 7. 20.
스프링 인터셉터 스프링 인터셉터서블릿 필터와 같이 웹과 관련된 공통 관심 사항을 효과적으로 해결하는 기술스프링 MVC가 제공하는 기술스프링 인터셉터 흐름HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터 -> 컨트롤러스프링 인터셉터는 디스패처 서블릿과 컨트롤러 사이에서 컨트롤러 호출 직전에 호출스프링 인터셉터 제한HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터 -> 컨트롤러 // 로그인 사용자HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터(적절하지 않은 요청이라 판단 시 컨트롤러 호출 X)스프링 인터셉터 체인HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터1 -> 스프링 인터셉터2 -> 컨트롤러스프링 인터셉터는 체인으로 구성중간에 인.. 2024. 7. 11.