Spring
-
@ModelAttribute과 BindingResultSpring/Spring MVC 2020. 6. 11. 01:54
@RequestParam은 제각각의 심플 타입 값들을 하나씩 받아왔었다면 @ModelAttribute 사용 시 데이터가 여러 개 있는 복합 객체의 형태로 받아올 수 있다. @RequestParam과 마찬가지로 어노테이션을 생략 가능하다. 따라서 해당 Hello객체의 Integer id와 String name으로 하나하나 받아오는 게 아닌 id와 name 데이터가 담긴 Hello 객체를 바인딩받아오는 것 따라서 다음의 테스트는 성공하게 된다. 만약 name값에 Integer 값을 준다면 바인딩 에러가 나게 된다. 이때 BindingResult 타입의 변수를 선언 시 해당 에러를 바로 던지는 게 아니라 이 변수에 바인딩과 관련된 에러를 담게 된다. BindingResults는 상위 타입인 Errors로 바꾸..
-
요청 매개변수를 메소드 아규먼트로 받아오는 방법Spring/Spring MVC 2020. 6. 9. 00:39
요청 매개변수 1. 요청으로 보낼 때 ?key=value 형태의 쿼리 파라미터로 보내기 2. Http 본문에 form 데이터로 보내기 둘 다 요청 매개변수로 서블릿은 처리하게 된다. 그리고 @RequestParam을 통해 받아올 수 있다. 1. 요청으로 보낼 때 ?key=value 형태의 쿼리 파라미터로 보내기 따라서 다음과 같은 Test는 통과 하게 된다. 쿼리 파라미터(name = seungyeol) 가 RequesetParam에 의해 해당 메소드 아규먼트인 String name에 담기게 된다. @RequestParam은 Map으로 받아올 수 있고 해당 파라미터 이름으로 꺼내어 쓸 수도 있다. 2. Http 본문에 form 데이터로 보내기 1. Get 요청으로 /hello/form URI 요청을 처리..
-
핸들러 메소드 URI 패턴Spring/Spring MVC 2020. 6. 9. 00:05
다음과 같은 Test를 성공시켜보자 URI 요청에 /hello/1이 들어오면 해당 URI에 있는 1을 가져오는 것 @PathVariable 이는 @PathVariable을 통해 간단히 가능하다. @PathVariable은 URI의 템플릿 변수를 읽을 때 사용한다. @ResponseBody는 리턴하는 값을 응답 본문에 쓰게 되고 이때 HttpMessageConverter에 의해서 최종적으로 JSON 타입으로 변환되어 보내지게 될 것이다. @PathVariable에 의해 URI에 템플릿 변수 id는 id 아규먼트에 담기게 된다. 그리고 해당 {id}는 String 타입이지만 Integer 타입으로 자동으로 타입 변환이 된다. 다른 이름을 쓰고 싶다면 맵핑하는 값을 써주어야 한다. @MatrixVariable..
-
스프링MVC 핸들러 아규먼트와 리턴타입 살펴보기Spring/Spring MVC 2020. 6. 8. 00:15
1. HttpServletRequest, HttpServletResponse 서블릿 기반 doGet, doPost 메서드에 쓰였던 아규먼트이며 스프링 웹 MVC에도 사용이 가능하다. InputStream, Reader , OutputStream, Writer 등으로 받고 처리할 수 있다. 2. PushBuilder Http2에서 사용하는 방법 요청이 들어올때 보여주고 싶은 이미지가 있다면 그 이미지에 대한 URL을 서버가 또 보내지만 이런 추가적인 데이터를 pushBuilder를 통해 서버가 능동적으로 push 해줄 수 있다. 3. HttpMethod GET이랑 POST를 지원하는 핸들러 중 각 Http 메서드마다 달리하고 싶다면 아규먼트로 주어서 다르게 처리할 수도 있다. 4. Locale, TimeZ..
-
HEAD와 OPTIONS 메소드Spring/Spring MVC 2020. 6. 7. 20:45
스프링 웹 MVC에서 만들어주는 기능 중 Http 메서드에는 head와 option이 있다. 1. head head같은 경우 URI와 동일한 get 요청을 보낸다. 하지만 응답은 본문을 빼고 보내게 되고 응답 헤더만 보내주게 된다. 따라서 다음과 같은 요청에 응답을 테스트해보면 비어있는 응답 본문을 확인할 수 있다. 그 리소스에 대한 간략한 헤더 정보를 확인하는 것 Get 요청에 Body를 실어 보내기 전 사전 정보를 확인하는 것이다. 2. Options 메서드 서버나 특정 URI에 해당하는 리소스가 제공하는 기능을 확인할 때 사용한다. 서버가 살아있는지, 해당 리소스를 처리할 수 있는지 확인한다. 다음의 get, post 핸들러가 있다고 하자 "/hello"라는 URI에 options 요청을 보낼 때의..
-
핸들러, 헤더, 메개변수Spring/Spring MVC 2020. 6. 6. 01:59
다음과 같이 Authorization 헤더가 들어있는 경우만 요청을 처리하도록 정해줄 수 있다. 따라서 다음과 같은 Test는 Authorization 헤더가 없기에 실패하게 된다. 반대로 해당 헤더가 들어있지 않은 경우만 처리하도록 할 수도 있다. 예로 Authorization 헤더가 들어있지 않은 경우에만 처리하도록 하였다. 추가로 다음과 같이 특정 헤드에 특정 값이 들어있는 경우만 처리할 수도 있다. Authorization 헤더에 "hi" 가 담긴 경우에만 처리가 된다. 요청에 보내는 파라미터들(?name=ganada)도 헤더와 마찬가지로 적용이 가능하다. 이 핸들러로 요청을 처리하려면 "name"이라는 파라미터가 있어야 한다. 테스트를 예로 다음과 같이 파라미터를 추가할 수 있다. 역시 정확히 ..
-
핸들러와 Media TypeSpring/Spring MVC 2020. 6. 4. 01:07
어떤 핸들러가 있고 핸들러에서 Json을 보내는 요청만 처리를 하고 싶다면? Content-type 헤더를 통해 해당 요청을 알려주면 서버는 consumes를 통해 해당 요청만 처리할 수 있도록 설정할 수 있다. 따라서 다음과 같은 Test는 Content-type 헤더를 주지 않았으므로 415 에러가 나게 된다. 테스트가 아닌 브라우저에서 보냈다면 html/text에 값이 들어있을 것이고 Json이 아니기에 마찬가지로 에러가 나게 된다. 다음과 같이 consumes로 설정했던 타입을 주게 되면 성공적인 200 응답이 나오는 것을 볼 수 있다. 또는 Accept 헤더를 사용해서 어떠한 응답을 원하는지 적어줄 수 있다. contentType : 해당 요청을 보내겠다. Accept : 해당 응답을 받겠다. ..