Web 44

[스프링 MVC 2편 - 백엔드 웹 개발 활용 기술] 01. 타임리프 기본기능

1. 타임리프 특징① 서버 사이드 HTML 렌더링 (SSR)- 타임리프는 백엔드 서버에서 HTML을 동적으로 렌더링 하는 용도로 사용된다. ② 네츄럴 템플릿- 타임리프는 순수 HTML을 최대한 유지하는 특징이 있다.- 타임리프로 작성한 파일은 HTML을 유지하기 때문에 웹 브라우저에서 파일을 직접 열어도 내용을 확인할 수 있고, 서버를 통해 뷰 템플릿을 거치면 동적으로 변경된 결과를 확인할 수 있다. ③ 스프링 통합 지원- 타임리프는 스프링과 자연스럽게 통합되고, 스프링의 다양한 기능을 편리하게 사용할 수 있게 지원한다. 2. 텍스트 - text, utext @GetMapping("/text-basic") public String textBasic(Model model) { mod..

Web/Spring 2025.03.01

[스프링 MVC - 백엔드 웹 개발 핵심 기술] 07. 웹 페이지 만들기

1. 상품 도메인 개발@Getter@Setter //@Data보단 필요한 애노테이션만 쓰는 것이 안전함public class Item { private Long id; private String itemName; private Integer price; private Integer quantity; public Item() { } public Item(String itemName, Integer price, Integer quantity) { this.itemName = itemName; this.price = price; this.quantity = quantity; }}@Repositorypublic class ItemR..

Web/Spring 2025.02.19

[스프링 MVC - 백엔드 웹 개발 핵심 기술] 06. 스프링 MVC 기본 기능

1. 로깅운영 시스템에서는 System.out.println()같은 시스템 콘솔을 사용해서 필요한 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용해서 로그를 출력한다.로그 라이브러리는 Logback, Log4J, Log4J2 등등 수 많은 라이브러리가 있는데, 그것을 통합해서 인터페이스로 제공하는 것이 바로 SLF4J 라이브러리다.쉽게 이야기해서 SLF4J는 인터페이스이고, 그 구현체로 Logback 같은 로그 라이브러리를 선택하면 된다.실무에서는 스프링 부트가 기본으로 제공하는 Logback을 대부분 사용한다.@Slf4j@RestControllerpublic class LogTestController { //@Slf4j과 동치 //private final Logger log = Logg..

Web/Spring 2025.02.17

[스프링 MVC - 백엔드 웹 개발 핵심 기술] 05. 스프링 MVC 구조 이해

1. 스프링 MVC 전체 구조- 스프링 MVC의 프론트 컨트롤러는 디스패처 서블릿(DispatcherServlet)이다.- DispatcherServlet은 부모 클래스에서 HttpServlet을 상속 받아서 사용하고, 서블릿으로 동작한다.- 스프링 부트는 DispatcherServlet을 서블릿으로 자동으로 등록하면서 모든 경로(urlPatterns="/")에 대해서 매핑한다.- 스프링 MVC의 큰 강점은 DispatcherServlet코드의 변경 없이, 원하는 기능을 변경하거나 확장할 수 있다는 점이다. 동작순서핸들러 조회: 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회한다.핸들러 어댑터 조회: 핸들러를 실행할 수 있는 핸들러 어댑터를 조회한다.핸들러 어댑터 실행: 핸들러 어댑터를..

Web/Spring 2025.02.13

[스프링 MVC - 백엔드 웹 개발 핵심 기술] 04. MVC 프레임워크 만들기

1. FrontController 패턴- 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음- 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출- 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨@WebServlet(name = "frontControllerServletV2", urlPatterns = "/front-controller/v2/*")public class FrontControllerServletV2 extends HttpServlet { private Map controllerMap = new HashMap(); public FrontControllerServletV2() { controllerMap.put("/front-controlle..

Web/Spring 2025.02.09

[스프링 MVC - 백엔드 웹 개발 핵심 기술] 03. 서블릿, JSP, MVC 패턴

1. 서블릿으로 회원 관리 웹 애플리케이션 만들기//회원 모델@Getter@Setterpublic class Member { private Long id; private String username; private int age; public Member() {} public Member(String username, int age) { this.username = username; this.age = age; }}//회원 저장소public class MemberRepository { private Map store = new HashMap(); private static long sequence = 0L; private stati..

Web/Spring 2025.02.07

[스프링 MVC - 백엔드 웹 개발 핵심 기술] 02. 서블릿

1. 서블릿 세팅@ServletComponentScan //서블릿 자동 등록@SpringBootApplicationpublic class ServletApplication { public static void main(String[] args) { SpringApplication.run(ServletApplication.class, args); }}- 스프링 부트는 서블릿을 직접 등록해서 사용할 수 있도록 @ServletComponentScan을 지원한다.@WebServlet(name = "helloServlet", urlPatterns = "/hello")public class HelloServlet extends HttpServlet { @Override protected void ser..

Web/Spring 2025.02.06

[스프링 MVC - 백엔드 웹 개발 핵심 기술] 01. 웹 애플리케이션 이해

1. 웹 서버, 웹 애플리케이션 서버웹 서버- 정적 리소스 제공, 기타 부가기능- 정적(파일) HTML, CSS, JS, 이미지, 영상- ex) NGINX, APACHE 웹 애플리케이션 서버 (WAS - Web Application Server)- 웹 서버 기능 포함- 프로그램 코드를 실행해서 애플리케이션 로직 수행- 동적 HTML, HTTP API(JSON), 서블릿, JSP, 스프링 MVC...- ex) 톰캣(Tomcat) Jetty, Undertow 웹 시스템 구성- 정적 리소스는 웹 서버가 처리- 웹 서버는 애플리케이션 로직같은 동적인 처리가 필요하면 WAS에 요청을 위임- WAS는 중요한 애플리케이션 로직 처리 전담- 정적 리소스가 많이 사용되면 Web 서버 증설, 애플리케이션 리소스가 많이 사..

Web/Spring 2025.02.05

[HTTP 웹 기본 지식] 06. 캐시와 조건부 요청

1. 캐시와 쿠키쿠키와 캐시는 둘 다 데이터를 임시로 저장해두어 필요할 때 사용하는 개념이지만, 그 동작 방식과 사용 용도에서 차이가 있음 캐시(Cache)쿠키(Cookie)동작 방식브라우저나 네트워크 장치에 저장되는 복사본클라이언트에 저장되는 작은 텍스트 파일 저장 내용웹 페이지의 리소스를 저장웹페이지의 사용자 상태나 동작에 대한 정보목적매번 서버에서 다운로드하지 않고 웹 페이지가 빠르게 렌더링 할 수 있도록 도와준다. 사용자를 식별하고 서버에서 필요한 정보를 제공한다.예오디오, 비디오 파일유저의 선호도(로그인 정보, 방문기록, 방문횟수) 2. 캐시 적용- 캐시 덕분에 캐시 가능 시간동안 네트워크를 사용하지 않아도 된다.- 비싼 네트워크 사용량을 줄일 수 있다.- 브라우저 로딩 속도가 매우 빠르다.- ..

Web/HTTP 2025.02.04

[HTTP 웹 기본 지식] 05. HTTP 헤더

1. 헤더 분류General 헤더: 메시지 전체에 적용되는 정보ex) Connection: close Request 헤더: 요청 정보ex) User-Agent: Mozilla/5.0 (Macintosh; ..) Response 헤더: 응답 정보ex) Server: Apache Representation 헤더: 바디 정보ex) Content-Type: text/html, Content-Length: 3423 2. 표현 (Representation)- 표현은 요청이나 응답에서 전달할 실제 데이터- 표현 헤더는 표현 데이터를 해석할 수 있는 정보 제공- 표현 헤더는 전송, 응답 둘다 사용 Content-Type: 표현 데이터의 형식Content-Encoding: 표현 데이터의 압축 방식- 데이터를 전달하는 곳..

Web/HTTP 2025.02.04