본문 바로가기

Spring

(13)
SpringBoot [Model 사용하기] 컨트롤러는 RequestMapping 어노테이션이 적용된 메서드에서 파라미터로 (Model), 커맨드 객체 등을 받아 파라미터로 받은 객체에 데이터를 저장하고 다시 뷰에 전달해 뷰에서 데이터를 사용할 수 있게 한다. 이렇게 사용되는 모델은 스프링을 사용한 웹 애플리케이션 개발자 가장 기본이 되는 부분이다 . package com.study.HelloWorld.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bin..
SpringBoot 정적 리소스 사용하기 스프링 부트의 뷰 리졸버(View Resolver) 는 클라이언트가 원하는 컨텐츠 타입을 고려하여 뷰를 걸정하는데 다음과 같이 여러가지 뷰 형식을 동적인 문서를 만들때 사용할 수 있다. 원하는 뷰 타입의 디펜던시를 프로젝트 생성시 추가하면 동적인 무서로 사용할 수 있다. FreeMarker Groovy Thymeleaf 프로젝트 생성 시 디펜던시를 추가했다면 추가적인 설정 없이 템플릿 폴더 아래에 확장자 Html 파일을 뷰로 만들어 사용할수 있다. html 파일의 내용은 html과 거의 유사하지만 마치 jsp처럼 동작한다.이때부터 html 파일은 정적인 파일이 아니고 동적인 컨텐츠를 표현하는 파일이 된다. Velocity JSP 스프링 부트에서는 기본적으로 지원되지 않기에 제공되는 스타더가 없다 프로젝트..
Spring Boot 프로젝트 만들기 스프링 부트 프로젝트는 그림과 같이 웹사이트에 접속해서 만들 수 있다. 프로젝트를 생성하기 위한 정보를 선택하거나 입력하고 , 하단의 GENERTATE 버튼을 클릭하면 프로젝트 파일이 압축된 파일 형태로 다운로드 된다. 다운로드 한 파일의 압축을 풀고 편집기에서 임포트해서 웹 애플리케이션을 개발할수 있다. 이클립스 STS 를 사용하면 이과정을 좀더 유연하게 처리 할수 있다, 프로젝트 생성 위저드에서 설정을 하면 GET 방식으로 UR에 파라미터 를 보내고 해당 파일을 다운로드해서 압축을 풀고 자동으로 임포트 까지 해준다. 여기서 라이브러리 관리 도구로 그레이들을 선택하면 라이브러리 관리를 xml 이 아니고 간단한 설정 파일을 통해서 할 수 있다. 또한 필자는 웹 JSP를 사용할거다, 스프링 부트는 기본 템..
SpringController(Exception) 처리 Controller를 작성할 때 예외 상황을 고려하면 처리헤야 하는 작업이 엄청나게 늘어난다 스프링 MVC 에서는 이러한 작업을 다음과 같은 방식으로 처리할수 있다. @ExceptionHandler 와 @ControllerAdvice를 이용한처리 @ResponseEntity를 이용하는 예외 메세지 구성 @ResponseEntity는 나중에 따로 작성할예정이고 일단 @ExceptionHandler @ControllerAdvice를 보자 @ControllerAdvice @ControllerAdviec는 AOP를 이용하는 방식이다. AOP에 대해서는 포스팅한적이 있지만 간단히 언급하자면 핵심적인 로직은 아니 지만 프로그램에서 필요한 '공통적적인 관심사'는 분리하자는 개념이다. Controller를 작성할때는 ..
스프링 MVC Controller(ResponseEntity) 타입 Web을 다루다 보면 HTTP프로토콜의 헤더를 다루는 경우도 종종 있다. 스프링 MVC 의 사상은 HTTPServletRequest나 HTTServletResponse를 직접 핸들링 하지 않아도 이런 작업이 가능하도록 작성되었기 때문에 이러한 처리를 위해 ResponseEntiy를 통해서 원하는 헤더 정보나 데이터를 전달할 수 있다 ResponseEntity는 HttpHeaders 객체를 같이 전달할 수 있고, 이를 통해서 원하는 HTTP 헤더 메시지를 가공하는 것이 가능하다. ex07 의 경우 브라우저에서는 JSON 타입이라는 헤더 메시지와 200ok 라는 상태코드를 전송한다 음 여기서 ResponsEntity 를 사용하는 이유가 궁금할수도 있다. Spring에서는 HttpEntity란 클래스를 제공하..
스프링 MVC Controller(@InitBinder) 파라미터의 수집을 다른 용어로는 "binding(바인딩)" 이라고 한다. 변환이 가능한 데이터는 자동으로 변환되지만 경우에 따라서는 파라미터를 변환해서 처리해야 하는 경우도 존재한다. 예를 들어 화면에서 2018- 01- 01 과 같이 문자열로 전달된 데이터를 java.util.Date 타입으로 변환하는 작업이 그러하다. 스프링 Controller에서는 파라미터를 바인딩할 때 자동으로 호출되는 @InitBinder를 이용해서 이러한 변환을 처리할수 있다. 이클래스는 특별하게 dueDate 변수의 타입이 java.util.Date 타입이다 만일 사용자가 2018-01-01 과 같이 들어 오는 데이트를 변환하고자 할 때 문제가 발생하게된다. 이러한 문제의 간단한 해결책은 @InitBinder를 이용하면된다...
스프링 MVC Controller 스프링프레임워크를 접하고 나서 그냥 지나쳤던 어노테이션이 @Controller 이다 이전에는 무조건 쓰라고 해서 썻지만 확실하게 개념을 잡고 가고 싶어서 포스팅한다 오늘도 게시판 삭제랑 댓글 처리 작업 하면서 Controller이 Model과 View 사이의 상호 작용을 관리해주는 녀석인건 알지만 명확하게 모르는거 같아서 일단 책을 보고 정리해보고자 한다 스프링 MVC의 Controller 스프링 MVC를 이용하는 경우 작성되는 Controller는 다음과 같은 특징이 있다. HttpServletRequest,HttpServletResponse를 거의 사용할 필요 없이 필요한 기능을 구현할수 있다 프로젝트 하면서 사용하긴 했지만 Servlet을 이용할때보다 많이 사용하지는 않았다. 다양한 타입의 파라미터..
@PathVariable(스프링 지향) RestAPI를 사용하면서 다시 공부하고 있는데 @PathVariable 이놈이 명확하게 사용하는 이유를 알고 싶었다 구글링을 해보고 책을 찾아봤지만 그냥 책에서본 내용과 다를게 없다 책에서 봤더 내용은 @PathVariable 사용해서 URL상에 경로의 일부를 파라미타러 사용하기 위해서 썻다 이전 REST방식이 아닐경우 에는 쿼리 스트링 이라는 형태로 파라미터를 이용해서 데이터들이 전달된다. 위에 {}중괄호 부분은 컨트롤러의 메서드에서 변수로 처리가 가능하다. 이정도다 그래서 질문을 남겼다!! 두근두근두근 !! 그렇다 지식을 공유 받고 싶다!!!!!! ㅋㅋㅋㅋ 역시나 여기에는 친절하게 답변 해주시는 분들이 많다 뭔가 궁금한게 해결 된듯한 느낌이였다 중요한 핵심은 변할수 있는 사용자의 정보를 reques..