라벨이 #Spring인 게시물 표시

[Spring] RequestParm 어노테이션

[Spring] RequestParm 어노테이션 Spring에서 Controller의 전달인자 spring을 사용하다보면 Controller단에서 클라이언트에서 URL에 파라미터를 같이 전달하는 경우가 있다. 주로 사용하는 형태는 아래의 두 가지가 대표적인 케이스 Type 1 =>  http://127.0.0.1?index=1&page=2 Type 2 =>  http://127.0.0.1/index/1 Type 1의 경우 파라미터의 값과 이름을 함께 전달하는 방식으로 게시판 등에서 페이지 및 검색 정보를 함께 전달하는 방식을 사용할 때 많이 사용한다. Type 2의 경우 Rest api에서 값을 호출할 때 주로 많이 사용한다. Spring에서는 이러한 전달인자를 처리하는데 두 가지 방법을 제공한다. @RequestParam 사용하기 Type 1 의 URL을 처리할 때  @RequestParam 을 사용하게 됩니다. 아래의 예제와 같이 Controller 단에서 사용합니다. 1 2 3 4 5 @GetMapping ( "read" ) public ModelAndView getFactoryRead (@RequestParam( "no" ) int factroyId, SearchCriteria criteria) { //... } 위의 경우  /read ?no=1 와 같이 url이 전달될 때 no 파라메터를 받아오게 됩니다. @RequestParam 어노테이션의 괄호 안의 경우 전달인자 이름(실제 값을 표시)입니다. 이렇게  @RequestParam 의 경우 url 뒤에 붙는 파라메터의 값을 가져올 때 사용을 합니다. @PathVariable 사용하기 Type 2 의 URL을 처리할 때는  @PathVariable 을 사용하게 됩니다. 1 2 3 4 5 @PostMapping ( "dele...

[Spring] RequestBody 어노테이션

[Spring] RequestBody 어노테이션 Spring에서 RESTful API 구현시 주로 사용되는 @RequestBody, @ResponseBody 어노테이션의 개념에 대해 알아보자 웹 서비스와 REST 방식이 시스템을 구성하는 주요 요소로 자리 잡으면서 웹 시스템간에 XML이나 JSON드의 형식으로 데이터를 주고 받는 경우가 증가하고 있다. 이에 따라 Spring MVC도 클라이언트에서 전송한 XML 데이터나 JSON 또는 기타 데이터를 컨트롤러에서 DOM 객체나 자바 객체로 변환해서 받을 수 있는 기능(수신)을 제공하고 있다. 비슷하게 자바 객체를 XML이나 JSON또는 기타 형식으로 변환해서 전송할 수 있는 기능을 제공하고 있다. @RequestBody 에노테이션 HTTP 요청의 body 내용을 자바 객체로 매핑하는 역할 @ResponseBody 어노테이션 자바 객체를 HTTP 요청의 body 내용으로 매핑하는 역할 @RestController public class LoginWebController { // HTTP 요청의 내용을 Member 객체에 매핑하기위해 @RequestBody 애너테이션을 설정한다. @RequestMapping(value="/member/login", method = RequestMethod.POST) public MemberResultDto login(@RequestBody Member member) { MemberResultDto memberResultDto = memberService.login(member); return memberResultDto; } } 위의 예제 소스에서는 HTTP 요청의 body안에 Member 데이터를 파라미터로 받기 위해, @RequestBody를 사용 함 @ResponseBody를 사용하지 않은 이유는 @RestController를 사용하였기 때문 ...

[Spring] setheader, Content-Disposition 정리

[Spring] setheader, Content-Disposition 정리 setHeader(Object headers) Sets the headers for the web service response. 웹 response를 위해서 해더를 설정 return값 -> void A javaScript object listing each header and the value to assign that header 각각의 헤더와 해당 헤더를 할당할 값에 나열하는 자바스크립트 객체 var headers = {}; headers.X-Total-Count=100; headers.Location=‘https://instance.service-now.com/ '; response.setHeaders(headers); Content-Disposition HTTP response에서 그 컨텐츠가 inline(default)으로 보여질것인지 아니면 attachment로 다운로드 되어서 로컬에 저장될 것인지를 결정 Content-Disposition: inline Content-Disposition: attachment Content-Disposition: attachment; filename="filename.jpg" ;(세미콜론)을 기준으로 여러 파라미터를 추가 가능 단 맨 처음은 form-data탕비 와야 함 Content-Disposition: form-data Content-Disposition: form-data; name="fieldName" Content-Disposition: form-data; name="fieldName"; filename="filename.jpg" res.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" +...

[Spring] Ant path style이란?

이미지
[Spring] Ant path style이란? Ant path style은 스프링 프레임워크에서 사용된다. 출처 https://stackoverflow.com/questions/2952196/learning-ant-path-style

[Spring] 통합 test하는 방법

이미지
[Spring] 통합 test하는 방법 Spring Boot Framework를 사용하여 REST API Server를 만든 뒤 테스트 하는 방법을 정리 Test 파일 방법 보통 src아래에 test/<package_path>/ 아래에 테스트가 모여 있다. 이곳에 테스트 파일을 생성한다 테스트 파일명은 대게 ~~Test(ex : exampleRepositoryTest) 이런 패튼을 사용 테스트 클래스 정의 테프트 파일을 생성하고 난 뒤에 테스트 클래스를 생성할 때  RunWith, SpringBootTest, AutoConfigureMockMvc 어노테이션을 사용한다. 밑의 코드의 파일명은 yourtest.java이런식이다 @RunWith(SpringRunner.class) @SpringBootTest @AutoConfigureMockMvc public class YourTest {...} MockMvc 객체 정의 class 내부에는 REST API를 서버 측에서 테스트 할 수 있는 MockMvc 객체를 정의해 둠 MockMvc 객체는 서버를 직접 띄우지 않더라도 REST API를 테스트 할 수 있도록 함 Spring은 자동으로 해당 Bean을 주입할 수 있도록 Autowired annotation을 사용함 @Test public void deSomeTest() throws Exception { // test code here ... } Test 메소드 정의 Test 메소드를 작성할 때에는 구체적인 테스트 방법을 알 수 있는 메소드 명을 사용하며, 메소드 이름 또한 ~Test로 끝나는 것이 관례이며 또 이를 추천한다. 테스트 메소드 위에는 junit library가 test임을 알 수 있도록 Test annotation을 사용한다. @Test public void doSoemTest() throws Exception { // test code ...

[Spring] @RequestBody, @ResponseBody 정리

이미지
[Spring] @RequestBody, @ResponseBody 정리 웹 서비스와 REST방식이 시스템을 구성하는 주요 요소로 자리 잡으면서, 웹 시스템간에 XML이나 JSON등의 형식으로 데이터를 주고 받는 경우가 증가하고 있다. 이에 따라 스프링 MVC도 clinet에서 전송한 XML데이터나 JSON 또는 기타 데이터를 컨트롤러에서 DOM 객체나 자바 객체로 변환해서 받을 수 있는 기능을 제공한다. post나put method에서 주로 사용 @RequestBody Http요청 몸체를 자바 객체에 담을 수 있다 clinet에서 전송한 XML데이터나 JSON 또는 기타 데이터를 컨트롤러에서 DOM 객체나 자바 객체로 변환해서 받을 수 있는 기능을 제공한다. @ResponseBody 자바 객체를 HTTP 응답 몸체로 전송할 수 있다 자바 객체를 XML이나 JSON 또는 기타 형식으로 변환해서 전송할 수 있는 기능을 제공하고 있다. 출처 http://devbox.tistory.com/entry/Spring-RequestBody-%EC%96%B4%EB%85%B8%ED%85%8C%EC%9D%B4%EC%85%98%EA%B3%BC-ReponseBody-%EC%96%B4%EB%85%B8%ED%85%8C%EC%9D%B4%EC%85%98%EC%9D%98-%EC%82%AC%EC%9A%A9

[Spring] ResponseStatus어노테이션

[Spring] ResponseStatus어노테이션 import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.http.HttpStatus; 위의 것들을 import하고 @ResponseStatus (code = HttpStatus . NOT_FOUND , reason = "Directory Not Found" ) public class DirectoryNotFoundException extends RuntimeException { } 위와 같이 만들고 나서 throw new DirectoryNotFoundException (); 이렇게 처리하면 됨

[Spring] Crossorign어노테이션 정리

이미지
[Spring] Crossorign어노테이션 정리 CORS(Cross-origin resource sharing) 웹 페이지의 제한된 자원을 외부 도메인에서 접근을 허용해주는 메커니즘 서로 다른 도메인에서 리소스를 공유하는 방식 기존의 있던 Same-origin policy(동일 출처 정책)와 반대되는 개념으로 보면 됨 처음 전송되는 리소스의 도메인과 다른 도메인으로부터 리소스가 요청될 경우 해당 리소스는 cross-origin HTTP 요청 된다.  ex) http:domain-a.com으로부터 전송되는 HTML페이지가  <img>src속성을 통해 http:domain-b.com을 요청하는 경우가 있음 오늘날에는 많은 웹 페이지들이 CSS 스타일, 이미지, 그리고 스크립트와 같은 리소스들을 각각의 출처로부터 읽어옴  ex) www.example.com이라는 사이트에서 사용하는 api가 있다. 해당 api는 외부에 공개하려는 목적이 아닌, 자신들의 사이트에서 사용하기 위해 만들어졌다고 치자. 그런데 이 api를 다른 사이트에서 알게 되었고, 허락없이 무단으로 가져다 사용하게 된다면 이 사이트 입장에서는 상당히 곤란할 것이다. 그래서 나온 것이 Same-origin policy 정책이다. 즉, 프로토콜, 도메인, 포트가 모두 같을시 동일 출처 정책 을 따른다고 볼 수 있다. 예를 들어, http:www.heowc.com이라는 URL이 있다면 다음과 같은 상황이 발생한다 보통 api를 사용할 때, ajax를 사용하는데 이 same-origin policy를 따르지 않을 경우, 오류가 나면서 api 사용이 거절된다. 하지만, 이 정책이 마냥 좋은 것은 아니다. ' 만약 한 사이트에서 여러 도메인을 가지고 있을 경우 문제가 생긴다 단지 도메인만 다를뿐 똑같은 서비스라고 하더라도 동일 출처 정책을 따르지 않기 때문이다 해결할 수 있는 방법은 JSONP (Json wit...

[Spring] RequestMapping이란?

이미지
[Spring] RequestMapping이란? RequestMapping 컨트롤러 구현 = 클라이언트의 요청을 처리할 메서드를 구현 client는 URL로 요청을 전송 요청 RUL을 어떤 메서드가 처리할지 여부를 결정하는 것이 @RequestMapping ex) 어떤 경로를 한 메서드에 처리하고 싶다면, 배열로 경로 목록을 지정하면 됨 @PathVariable 을 이용한 경로 변수  경로를 한개 이상 사용도 가능 게시글의 내용을 보여주는 URL을 보면 http://host/readArticles?id=10와 같이 요청 파라미터를 이용하는 경우가 많음 but) URL자체를 이용해서 게시글 링크를 표현하는 경우도 많음 @RequestMapping 어노테이션은 경로에 {변수}형식의 경로 변수를 사용할 수 있음 @PathVariable을 사용하면 경로 변수 값을 파라미터로 전달받을 수 있음 Spring은 경로 변수의 값을 파라미터 타입에 맞게 변환해줌 경로 변수를 파라미터 타입으로 변환할 수 없을 경우, 스프링 MVC는 웹 브라우저에서 400에러 코드를 응답 결과로 전송함 Ant 패턴을 이용한 경로 매핑 * : 또는 그 이상의 글자(matches zero or more characters) ex) @RequestMapping("/member/*.info") /member/로 시작하고, 확장자가 .info로 끝나는 모든 경로 ? : 1개 글자(matches one character) ex) @RequestMapping("/faq/f?00.fq") /faq/f로 시작하고, 1글자가 사이에 위치하고 00.fq로 끝나는 모든 경로 ** : 0개 또는 그 이상의 디렉토리 경로(matches zero or more directories in path) ex) @RequestMapping(...

[Spring] Restcontroller란?

[Spring] Restcontroller란? REST(Representational State Transfer)  하나의 URI는 하나의 고유한 리소스를 대표하도록 설계된다는 개념 특정한 URI는 반드시 그에 상응하는 데이터 자체라는 것을 의미하는 방식 ex) /wedul/123은 해당 페이지의 번호의 123번이라는 고유한 의미를 가지고 설계하고 이에 대한 처리는 GET, POST방식과 같이 추가적인 정보를 통해서 결정 REST API : 외부에서 위와 같은 방식으로 특정 URI를 통해서 사용자가 원하는 정보를 제공하는 방식 REST방식의 서비스 제공이 가능한 것을 Restful하다고 표현 spring 3부터 @ResponseBody 어노테이션을 지원하면서 REST방식의 처리를 지원함 spring 4에 들어와서 @RestController가 본격적으로 사용 됨 @RestController spring 4부터 @RestController 어노테이션의 경우 기존의 특정한 JSP와 같은 뷰를 만들어 내는 것이 아닌 REST방식의 데이터 자체를 서비스 하는 것 URI가 원하는 리소스를 의미함 URI에는 식별할 수 있는 데이터를 같이 전달하는 것이 일반적 import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/sample") Public Class RestControllerExampleController{ } 만약 오류가 나면 maven의 webmvc버전을 확인할것 출처 http://blog.naver.com/PostView.nhn?blogId=rokking1&logNo=220896108118&parentCategoryNo=...