일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- DispatcherServlet
- 자바의정석
- 시큐어코딩
- Secure Coding
- REGEXP_SUBSTR
- JPA
- 스프링 부트와 JPA
- 자바의정석 연습문제
- 불친절한SQL프로그래밍
- 분석함수
- Python
- 자바공부
- 제네릭
- 자바연습문제
- 김영한
- 서블릿
- 스프링MVC
- 불친절한 SQL 프로그래밍
- Spring
- 인프런
- Java의정석
- java
- 스프링입문
- 스프링
- inflearn
- docker
- 이것이자바다
- 계층 쿼리
- 스프링 핵심원리
- Numpy
- Today
- Total
목록Spring/Spring MVC (12)
Continuous Challenge
HTTP 요청 - 기본, 헤더 조회 MultiValueMap Map과 유사한데 하나의 키에 여러 값을 받을 수 있다. Http header, HTTP 쿼리 파라미터와 같이 하나의 키에 여러 값을 받을 때 사용한다. - keyA=value1&keyA=value2 참고 @Controller 의 사용 가능한 파라미터 목록은 다음 공식 메뉴얼에서 확인할 수 있다. https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-ann-arguments @Controller 의 사용 가능한 응답 값 목록은 다음 공식 메뉴얼에서 확인할 수 있다. https://docs.spring.io/spring-framework/docs/curre..
로깅 로깅 라이브러리 스프링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리('spring-boot-starter-logging')가 함께 포함된다. SLF4J Logback 로그 라이브러리는 Logback, Log4J, Log4J2 등 수많은 라이브러리가 있는데 그것을 통합해서 인터페이스로 제공하는 것이 SLF4J 라이브러리이다. (쉽게 말해 SLF4J는 인터페이스이고 그 구현체로 Logback 같은 로그 라이브러리를 선택) 매핑 정보 @RestController - @Controller는 반환 값이 String이면 뷰 이름으로 인식된다. 그래서 뷰를 찾고 뷰가 랜더링 된다. - @RestController는 반환 값으로 뷰를 찾는 것이 아니라 HTTP 메시지 바디에 바로 입력한다. 따라서 실행..
DispatcherServlet 스프링 MVC의 프론트 컨트롤러 부모 클래스에서 HttpServlet을 상속받아서 사용하고 서블릿으로 동작한다. 스프링 부트는 DispatcherServlet을 서블릿으로 자동으로 등록하면서 모든 경로에 대해서 매핑한다. 핸들러 조회 핸들러 어댑터 조회 핸들러 어댑터 실행 핸들러 실행 ModelAndView 반환 viewResolver 호출 View 반환 뷰 랜더링 핸들러 매핑과 핸들러 어댑터 @RequestMapping 가장 우선순위가 높은 핸들러 매핑과 핸들러 어댑터는 RequestMappingHandlerMapping, RequestMappingHandlerAdapter 이다. @RequestMapping의 앞글자를 따서 만든 이름인데 이것이 바로 지금 스프링에서 주..
FrontController 패턴 특징 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출 입구를 하나로! 공통 처리 기능 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨 스프링 웹 MVC와 프론트 컨트롤러 스프링 웹 MVC의 핵심도 바로 FrontController 스프링 웹 MVC의 DispatcherServlet이 FrontController 패턴으로 구현되어 있음 ViewResolver 컨트롤러가 반환한 논리 뷰이름을 실제 물리 뷰 경로로 변경한다. 그리고 실제 물리 경로가 있는 MyView 객체를 반환한다. 어댑터 패턴 스프링MVC @RequestMapping("/hello") → RequestMappingHandl..
템플릿 엔진 템플릿 엔진에는 JSP, Thymeleaf, Freemarker, Velocity등이 있다. 템플릿 엔진을 사용하면 HTML 문서에서 필요한 곳만 코드를 적용해서 동적으로 변경할 수 있다. MVC 패턴 Model은 HttpServletRequest 객체를 사용한다. request는 내부에 데이터 저장소를 가지고 있는데, request.setAttribute(), request.getAttribute() 를 사용하면 데이터를 보관하고 조회할 수 있다. /WEB-INF 이 경로 안에 JSP가 있으면 외부에서 직접 JSP를 호출할 수 없다. 우리가 기대하는 것은 항상 컨트롤러를 통해 JSP를 호출하는 것이다. redirect vs forward 리다이렉트는 실제 클라이언트(웹 브라우저)에 응답이 ..
HttpServletRequest 임시저장소 기능 해당 HTTP 요청이 시작부터 끝날 때까지 유지되는 임시 저장소 기능 저장 : request.setAttribute(name, value) 조회 : request.getAttribute(name) 세션 관리 기능 request.getSession(create: true) HTTP 요청 데이터 GET - 쿼리 파라미터 - 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달 - 예) 검색 필터, 페이징 등에서 많이 사용하는 방식 POST - HTML Form - content-type: application/x-www-form-urlencoded . application/x-www-form-urlencoded 형식은 앞서 GET에서 살펴본 쿼..
자바 뷰 템플릿 역사 JSP - 속도 느림, 기능 부족 프리마커(Freemarker), Velocity(벨로시티) - 속도 문제 해결, 다양한 기능 타임리프(Thymeleaf) - 내추럴 템플릿 : HTML 의 모양을 유지하면서 뷰 템플릿 적용 가능 - 스프링 MVC와 강력한 기능 통합 - 최선의 선택, 단 성능은 프리마커, 벨로시티가 더 빠름
백엔드 개발자가 고민해야 할 데이터 전달 1. 정적 리소스 2. HTML 페이지 3. HTTP API HTML이 아니라 데이터를 전달 주로 JSON 형식 사용 다양한 시스템에서 호출 데이터만 주고받음. UI 화면이 필요하면 클라이언트가 별도 처리 UI 클라이언트 접점 - 앱 클라이언트(아이폰, 안드로이드, PC 앱) - 웹 브라우저에서 자바스크립트를 통한 HTTP API 호출 - React, Vue.js 같은 웹 클라이언트 서버 to 서버 - 주문 서버 → 결제 서버 - 기업 간 데이터 통신 SSR - 서버 사이드 렌더링 서버에서 최종 HTML을 생성해서 클라이언트에 전달 주로 정적인 화면에 사용 관련기술 : JSP, 타임리프 → 백엔드 개발자 CSR - 클라이언트 사이드 렌더링 HTML 결과를 자바스크..
쓰레드 애플리케이션 코드를 하나하나 순차적으로 실행하는 것은 쓰레드 자바 메인 메서드를 처음 실행하면 main이라는 이름의 쓰레드가 실행 쓰레드가 없다면 자바 애플리케이션 실행이 불가능 쓰레드는 한번에 하나의 코드 라인만 수행 동시 처리가 필요하면 쓰레드를 추가로 생성 요청마다 쓰레드 생성 단점 쓰레드 생성비용은 매우 비싸다. - 고객의 요청이 올 때마다 쓰레드를 생성하면 응답 속도가 늦어진다. 쓰레드는 컨텍스트 스위칭 비용이 발생한다. 쓰레드 생성에 제한이 없다. - 고객 요청이 너무 많이 오게 되면 CPU, 메모리 임계점을 넘어 서버가 죽을 수 있다. 쓰레드 풀 요청마다 쓰레드 생성의 단점 보완 특징 - 필요한 쓰레드를 쓰레드 풀에 보관하고 관리한다. - 쓰레드 풀에 생성 가능한 쓰레드의 최대치를 관..
서블릿 특징 urlPatterns(/hello)의 URL이 호출되면 서블릿 코드가 실행 HTTP 요청 정보를 편리하게 사용할 수 있는 HttpServletRequest HTTP 응답 정보를 편리하게 사용할 수 있는 HttpServletResponse 개발자는 HTTP 스펙을 매우 편리하게 사용 HTTP 요청, 응답 흐름 HTTP 요청 시 WAS는 Request, Response 객체를 새로 만들어서 서블릿 객체 호출 개발자는 Request 객체에서 HTTP 요청 정보를 편리하게 꺼내서 사용 개발자는 Response 객체에서 HTTP 응답 정보를 편리하게 입력 WAS는 Response 객체에 담겨있는 내용으로 HTTP 응답 정보를 생성 서블릿 컨테이너 톰캣처럼 서블릿을 지원하는 WAS를 서블릿 컨테이너라고..