전체 글
-
HTTP 요청 맵핑하기 2부: URI 패턴 맵핑SPRING/스프링 MVC 2021. 6. 20. 16:10
요청 식별자로 맵핑하기 - @RequestMapping은 다음의 패턴을 지원합니다. - ?: 한 글자 (“/author/???” => “/author/123”) - *: 여러 글자 (“/author/*” => “/author/keesun”) - **: 여러 패스 (“/author/** => “/author/keesun/book”) @Controller public class SampleController { @RequestMapping(value = "/hello", method = {RequestMethod.GET}) @ResponseBody public String hello() { return "hello"; } @RequestMapping(value="/hello/?") @ResponseBody ..
-
요청 맵핑하기 1부 : HTTP METHODSPRING/스프링 MVC 2021. 6. 20. 14:41
HTTP Method - GET, POST, PUT, PATCH, DELETE GET 요청 - 클라이언트가 서버의 리소스를 요청할 때 사용한다. - 캐싱 할 수 있다. (조건적인 GET으로 바뀔 수 있다.) - 브라우저 기록에 남는다. - 북마크 할 수 있다. - 민감한 데이터를 보낼 때 사용하지 말 것. (URL에 다 보이기 때문.) - idempotent idempotent 이란 ? : 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미함 ex:) 로그인페이지는 몇번을 호출해도 똑같으니, idempotent함. 로그인 후 나오는 메인 페이지는 환경설정 등에 따라 달라질 수 있기 때문에 idempotent하지 않음. POST 요청 - 클라이언트가 서버의 리소스를 수정하거나 새로 만들 때 사용..
-
기타 WebMvcConfigurer 설정SPRING/스프링 MVC 2021. 6. 19. 17:04
CORS 설정 - Cross Origin 요청 처리 설정 - 같은 도메인에서 온 요청이 아니더라도 처리를 허용하고 싶다면 설정한다. 리턴 값 핸들러 설정 -스프링 MVC가 제공하는 기본 리턴 값 핸들러 이외에 리턴 핸들러를 추가하고 싶을 때 설정한다. 아큐먼트 리졸버 설정 - 스프링 MVC가 제공하는 기본 아규먼트 리졸버 이외에 커스텀한 아규먼트 리졸버를 추가하고 싶을 때 설정한다. 뷰 컨트롤러 - 단순하게 요청 URL을 특정 뷰로 연결하고 싶을 때 사용할 수 있다. 비동기 설정 - 비동기 요청 처리에 사용할 타임아웃이나 TaskExecutor를 설정할 수 있다. 뷰 리졸버 설정 - 핸들러에서 리턴하는 뷰 이름에 해당하는 문자열을 View 인스턴스로 바꿔줄 뷰 리졸버를 설정한다. Content Negot..
-
HTTP 메시지 컨버터 : XMLSPRING/스프링 MVC 2021. 6. 19. 00:13
OXM(Object-XML-Mapper) 라이브러리 중에 스프링이 지원하는 의존성 추가 - JacksonXML - JAXB 스프링 부트를 사용하는 경우에도 기본으로 XML 의존성을 추가해주지 않음. javax.xml.bind jaxb-api org.glassfish.jaxb jaxb-runtime org.springframework spring-oxm ${spring-framework.version} Mashaller 등록 @Configuration public class WebConfig implements WebMvcConfigurer { @Bean public Jaxb2Marshaller jaxb2Marshaller() { Jaxb2Marshaller jaxb2Marshaller = new Jaxb..
-
HTTP 메시지 컨버터 : JSONSPRING/스프링 MVC 2021. 6. 18. 16:41
스프링 부트를 사용하지 않는 경우(SPRING MVC)에는 사용하고 싶은 JSON 라이브러리를 의존성으로 추가 - GSON - JacksonJSON - JacksonJSON 2 스프링 부트를 사용하는 경우 - 기본적으로 spring-boot-starter-web에 JacksonJSON 2가 의존성으로 들어있다. - 즉, JSON용 HTTP 메시지 컨버터가 기본으로 등록되어 있다. @RestController public class SampleController { @GetMapping("/jsonMessage") public Person jsonMessage(@RequestBody Person person) { return person; } } POSTMAN 테스트 테스트코드 @RunWith(Spring..
-
HTTP 메시지 컨버터 : 개요SPRING/스프링 MVC 2021. 6. 18. 11:09
HTTP 메시지 컨버터 - 요청 본문에서 메시지를 읽어들이거나(@RequestBody), 응답 본문에 메시지를 작성할 때(@ResponseBody) 사용한다. @RestController public class SampleController { @GetMapping("/message") public String message(@RequestBody String body) { return body; } } 기본 HTTP 메시지 컨버터 - 바이트 배열 컨버터 - 문자열 컨버터 - Resource 컨버터 - Form 컨버터 (폼 데이터 to/from MultiValueMap) - (JAXB2 컨버터) - (Jackson2 컨버터) - (Jackson 컨버터) - (Gson 컨버터) - (Atom 컨버터) - ..
-
Resource HandlerSPRING/스프링 MVC 2021. 6. 16. 15:23
이미지, 자바스크립트, CSS 그리고 HTML 파일과 같은 정적인 리소스를 처리하는 핸들러 등록하는 방법 리소스 핸들러 설정 - 어떤 요청 패턴을 지원할 것인가 - 어디서 리소스를 찾을 것인가 - 캐싱 - ResourceResolver: 요청에 해당하는 리소스를 찾는 전략 Ex:) 캐싱, 인코딩(gzip, brotli), WebJar - ResourceTransformer: 응답으로 보낼 리소스를 수정하는 전략 Ex:) 캐싱, CSS 링크, HTML5 AppCache @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry ..
-
HandlerInterceptor (서블릿 필터 비교)SPRING/스프링 MVC 2021. 6. 15. 00:48
HandlerInterceptor - 핸들러 맵핑에 설정할 수 있는 인터셉터 - 핸들러를 실행하기 전, 후(아직 랜더링 전) 그리고 완료(랜더링까지 끝난 이후) 시점에 부가 작업을 하고 싶은 경우에 사용할 수 있다. - 여러 핸들러에서 반복적으로 사용하는 코드를 줄이고 싶을 때 사용할 수 있다. (로깅, 인증 체크, Locale 변경 등) boolean preHandle(request, response, handler) - 핸들러 실행하기 전에 호출 됨 - “핸들러"에 대한 정보를 사용할 수 있기 때문에 서블릿 필터에 비해 보다 세밀한 로직을 구현할 수 있다. - 리턴값으로 계속 다음 인터셉터 또는 핸들러로 요청,응답을 전달할지(true) 응답 처리가 이곳에서 끝났는지(false) 알림. void pos..