전체 글 555

타임리프

*타임리프 간단한 문법 *타임리프 선언http://www.thymeleaf.org"> *속성 변경 th:href="@{/css/bootstrap.min.css}" -href="value1"를 th:href="value2"의 값으로 변경한다. -타임리프 뷰 템플릿을 거치게 되면 원래 값을 th:xxx값으로 변경한다. 만약 값이 없다면 새로 생성한다. -html을 그대로 볼 때는 href 속성이 사용되고, 뷰 템플릿을 거치면 th:href의 값이 href로 대체되면서 동적으로 변경할 수 있다. -대부분 html속성을 th:xxx로 변경할 수 있다. *타임리프 핵심 -핵심은 th:xxx가 붙은 부분은 서버사이드에서 렌더링되고, 기존 것을 대체한다. th:xxx이 없으면 기존 html의 xxx속성이 그대로 유지..

Spring/Spring 2021.08.19

스프링 MVC 기본기능 핵심정리

*로깅 롬복의 @Slf4j어노테이션 사용 or private final Logger log = LoggerFactory.getLogger(getClass()); 올바른 로그 사용법 log.info("username={}", username); *요청 매핑 @RequestMapping(value = "/hello-basic" method = "RequestMethod.GET") 이거 두개를 합친것이 바로 @GetMapping *@ResponseBody 이거 쓰면 return 값을 문자열로 반환했을 때 HTTP메시지 바디에 꽂혀서 전송됨 *@PathVariable 경로 변수 /username/{username} 이런식으로 URL을 템플릿화 시켜서 보냄 가져오는 방법 public String getPathVa..

Spring/Spring 2021.08.19

스프링 HTTP응답 - HTTP API, 메시지 바디에 직접 입력

*HTTP 응답 - HTTP API, 메시지 바디에 직접 입력 -response.getWriter를 이용한 출력 @GetMapping("/response-body-string-v1") public void responseBodyV1(HttpServletResponse response) throws IOException { response.getWriter().write("ok"); } -ResponseEntity를 이용한 출력 (상태코드 같이 출력 가능) @GetMapping("/response-body-string-v2") public ResponseEntity responseBodyV2(HttpServletResponse response) { return new ResponseEntity("ok", ..

Spring/Spring 2021.08.19

스프링 HTTP응답 - 정적 리소스, 뷰 템플릿

*HTTP 응답 - 정적 리소스, 뷰 템플릿 스프링에서 응답 데이터를 만드는 방법은 크게 3가지이다. 1. 정적 리소스 : ex) 웹 브라우저에 정적인 HTML, css, js를 제공할 때는, 정적리소스를 사용한다. 2. 뷰 템플릿 사용 : ex) 웹 브라우저에 동적인 HTML을 제공할 때는 뷰 템플릿을 사용한다. 3. HTTP 메시지 사용 : HTTP API를 제공하는 경우에는 HTML이 아니라 데이터를 전달해야 하므로, HTTP메시지 바디에 JSON같은 형식으로 데이터를 실어 보낸다. 1. 정적 리소스 스프링 부트는 클래스패스의 다음 디렉토리에 있는 정적 리소스를 제공한다. /static, /public, /resources, /META-INF/resources src/main/resources는 리..

Spring/Spring 2021.08.19

스프링 HTTP 요청 메시지 - 단순 텍스트

*HTTP 요청 메시지 - 단순 텍스트 HTTP message body에 데이터를 직접 담아서 요청 -HTTP API에서 주로 사용, JSON, XML, TEXT -데이터 형식은 주로 JSON 사용 -POST, PUT, PATCH 사용가능 요청 파라미터와 다르게, HTTP 메시지 바디를 통해 데이터가 직접 넘어오는 경우는 @RequestParam, @ModelAttribute를 사용할 수 없다. 이럴때는 InputStream으로 메시지 바디에 있는 내용을 읽어올 수 있다. @PostMapping("/request-body-string-v1") public void requestBodyString(HttpServletRequest request, HttpServletResponse response) thr..

Spring/Spring 2021.08.19

스프링 요청파라미터

*HTTP 요청 파라미터 - @RequestParam 스프링이 제공하는 @RequestParam을 사용하면 요청 파라미터를 매우 편리하게 사용할 수 있다. @RequestMapping("/request-param-v2") public String requestParamV2 (@RequestParam("username") String memberName, @RequestParam("age") int memberAge) { ... } 이런식으로 RequestParam을 이용하면 request.getParameter("username")과 같은 효과를 볼 수 있다. @RequestMapping("/request-param-v3) public String requestParamV3 (@RequestParam S..

Spring/Spring 2021.08.19

스프링 요청매핑

*요청 매핑 *@RestController -@Controller는 반환 값이 String 이면 뷰 이름으로 인식된다. 그래서 뷰를 찾고 뷰가 랜더링 된다. -@RestController는 반환 값으로 뷰를 찾는 것이 아니라 HTTP메시지 바디에 바로 입력한다. @ResponseBody와 관련이 있는데 뒤에서 더 자세히 설명한다. *@RequestMapping("/hello-basic") -/hello-basic URL 호출이 오면 이 메서드가 실행되도록 매핑한다. -대부분 속성을 배열로 제공하므로 다중 설정이 가능하다. {"/hello-basic", "/hello-go"} RequestMapping은 뒤에 method를 한정지을 수 있는데 다음과 같이 적으면 된다. @RequestMapping(valu..

Spring/Spring 2021.08.19

스프링 로깅

*로깅 운영 시스템에서는 System.out.println() 같은 시스템 콘솔을 사용해서 필요한 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용해서 로그를 출력한다. 참고로 로그 관련 라이브러리도 많고, 깊게 들어가면 끝이 없기 때문에, 여기서는 최소한의 사용 방법만 알아본다. *로깅 라이브러리 스프링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리가 함께 포함된다. 스프링 부트 로깅 라이브러리는 기본적으로 다음 로깅 라이브러리를 사용한다. -SLF4J : http://www.slf4j.org -Logback : http://logback.qos.ch 로그 라이브러리는 Logback, Log4J, Log4J2 등등 수 많은 라이브러리가 잇는데, 그것을 통합해서 인터페이스로 제공하는 것이 바..

Spring/Spring 2021.08.19

스프링 MVC 구조

*스프링 MVC 구조 스프링 MVC의 구조는 다음과 같다 1. HTTP요청이 들어오면 Front Controller인 Dispatcher Servlet이 모든 URL매핑에 반응한다. 2. 그 후에 핸들러(=컨트롤러) 매핑 정보를 기반으로 핸들러를 조회한다. 3. 핸들러마다 다른 기능을 지원하기 위해서 핸들러 어댑터 목록에서 핸들러를 처리할 수 있는 핸들러 어댑터를 조회한다. 4. 핸들러 어댑터를 들고 핸들러를 호출한다. 5. 핸들러를 호출하고 Model And View로 반환해준다. 6. viewResolver를 호출해서 View를 반환받는다. 7. render를 호출해서 랜더링한다. *@Controller -스프링이 자동으로 스프링 빈으로 등록한다. (내부에 @Component 어노테이션이 있어서 컴포..

Spring/Spring 2021.08.19