일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 2839
- Servlet
- 스프링 MVC
- 쓰레드 풀
- BFS
- 2020 KAKAO BLIND
- HTTP API
- 2589
- 다이나믹 프로그래밍
- 투어
- 동적 프로그래밍
- 맛집 투어
- 고모네 콩탕
- 알고리즘
- 1로 만들기
- dp
- 백준
- 호유동
- 프로그래머스
- 양꼬치
- 완도산회
- 포두부 보쌈
- 스프링
- 설탕 배달
- mvc
- 서블릿
- 문자열 압축
- 맛집
- Spring
- 2638
- Today
- Total
목록스프링 (8)
프로그래밍 공방
Thymeleaf 타임리프 사용 선언 속성 변경 타임리프를 사용하여 기존 속성의 값을 변경할 때는 위와 같이 th:를 붙인 해당 속성을 하나 더 생성해주면 된다 * HTML을 그대로 볼 때는 기존 속성이 사용되고(th: 는 HTML이 모르는 문법이므로 무시된다), 뷰 템플릿을 거치면 th: 의 값이 기존 속성을 대체하면서 동적으로 변경할 수 있게 된다 * 순수 HTML을 그대로 유지하면서 뷰 템플릿도 사용할 수 있는 타임리프의 특징을 네츄럴 템플릿 (natural templates)이라 한다 * 뷰 템플릿 영역 : /resources/templates 변수 표현식 - ${ ... } 10000 Model에 포함된 값이나, 타임리프 변수로 선언한 값을 조회할 수 있다(프로퍼티 접근법을 사용 / item.g..
참고 * Jar을 사용하면 항상 내장 서버(톰캣등)을 사용하고, webapp 경로도 사용하지 않는다(내장 서버 사용에 최적화 되어 있는 기능) War를 사용하면 내장 서버도 사용 가능하지만, 주로 외부 서버에 배포하는 목적으로 사용 * Jar를 사용하면 /resources/static 위치에 index.html 파일을 두면 Welcome 페이지로 처리해준다 (스프링 부트가 지원하는 정적 컨텐츠 위치) @RequestMapping @RestController @RequestMapping("/test") public class MappingCcontroller { // method 설정을 통해 특정 HTTP 메서드 요청만 허용하도록 할 수 있다 // @RequestMapping("/hello", method..
Logging 운영 시스템에서는 System.out.pringln() 같은 시스템 콘솔을 통해 필요한 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용하여 로그를 출력 Logging 라이브러리 스프링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리(spring-boot-starter-logging)가 포함된다 스프링 부트 로깅 라이브러리는 기본으로 아래 로깅 라이브러리를 사용한다 - SLF4J (인터페이스) - Logback (로그 라이브러리) * 로그 라이브러리는 Logback, Log4J, Log4J2 등등 다양한 라이브러리가 있는데, 그것을 통합해서 인터페이스로 제공하는 것이 SLF4J 라이브러리이다 Logger 선언 및 사용 Logger는 아래와 같이 두 가지 방법을 통해 선언할 수 있..
스프링 MVC 구조 이전에 포스팅한 글의 MVC 구조와 비교하면 아래 내용들이 변경되었다 - FrontController -> DispatcherServlet - handlerMappingMap -> HandlerMapping - MyHandlerAdapter -> HandlerAdapter - ModelView -> ModelAndView - viewResolver -> ViewResolver - MyView -> View DispatcherServlet 구조 스프링 MVC도 Front Controller 패턴으로 구현되어 있고 스프링 MVC의 Front Controller가 DispatcherServlet 이다 DispatcherServlet도 부모 클래스에서 HttpServlet을 상속 받고 서블릿..
프론트 컨트롤러 패턴 클라이언트들이 각 Controller를 호출하는게 아니라 Front Controller에 요청을 보내고 Front Controller가 각 요청에 맞는 컨트롤러를 찾아서 호출하는 패턴 Front Controller 패턴 특징 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출 공통 처리 가능 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨 * 스프링 웹 MVC의 핵심도 바로 Front Controller 이다(DispatcherServlet이 FrontController 패턴으로 구현되어 있음) 프론트 컨트롤러의 단계적 도입 프론트 컨트롤러 도입 - V1 기존 코드를 최대한 유지하면서 프론트 컨트롤러 구..
Servlet 패턴 Servlet을 통해서 request를 받고 HttpServletResponse에 Html을 담아 응답하는 방식 단점 서블릿과 자바 코드만으로 HTML을 만드는 경우 아래와 같이 서블릿 덕분에 동적으로 원하는 HTML을 만들 수 있다 @WebServlet(name = "userSaveServlet", urlPatterns = "/servlet/users/save") public class UserSaveServlet extends HttpServlet { private UserRepository userRepository = UserRepository.getInstance(); @Override protected void service(HttpServletRequest request,..
Servlet / 서블릿 클라이언트의 요청을 받아 웹페이지를 동적으로 생성하여 응답하는 서버측 프로그램 * 서블릿은 아래 작업들을 대신해서 처리해준다 - 서버 TCP/IP 연결 대기, 소켓 연결 - 웹 브라우저가 생성한 요청 HTTP 메시지 파싱 - HTTP 응답 메시지 생성 - TCP/IP에 응답 전달, 소켓 종료 (비즈니스 로직을 제외한 모든 프로세스들을 처리) @ServletComponentScan 스프링 부트에서 서블릿을 직접 등록해서 사용할 수 있도록 지원하는 어노테이션 (@WebServlet 등의 어노테이션을 스캔하여 서블릿 컨테이너에 등록한다) @WebServlet(name = "tempServlet", urlPatterns = "/hello") - name : 서블릿 이름 - urlPatt..
Servlet 클라이언트의 요청을 받아 웹페이지를 동적으로 생성하여 응답하는 서버측 프로그램 웹 애플리케이션 서버를 직접 구현한다면 해야할 일 1. 서버 TCP/IP 연결 대기, 소켓 연결 2. 웹 브라우저가 생성한 요청 HTTP 메시지 파싱해서 읽기 3. 파싱한 데이터를 분석해서 필요한(저장) 프로세스 실행 4. 비즈니스 로직 실행 - 데이터베이스에 저장 요청 5. HTTP 응답 메시지 생성 시작 - HTTP 시작 라인 생성 - Header 생성 - 메시지 바디에 HTML 생성 후 입력 6. TCP/IP에 응답 전달, 소켓 종료 서블릿을 지원하는 WAS를 사용한다면 해야할 일 1. 비즈니스 로직 실행 - 데이터베이스에 저장 요청 서블릿 @WebServlet(name = "helloServlet", ur..