Thymeleaf(타임리프)란 ? 타임리프는 JSP, Freemarker와 같은 템플릿 엔진의 일종으로 다음과 같은 특징을 갖고 있습니다. 서버 사이드 HTML 렌더링 (SSR) 백엔드 서버에서 HTML을 동적으로 렌더링 하는 용도로 사용합니다. 네츄럴 템플릿 타임리프는 순수 HTML을 최대한 유지하는 특징을 가지기 때문에, 타임리프로 작성한 파일은 HTML을 유지해서 웹 브라우저에서 파일을 직접 열어도 내용을 확인할 수 있고, 서버를 통해 뷰 템플릿을 거치면 동적으로 변경된 결과를 확인할 수도 있습니다. 이렇게 순수 HTML을 그대로 유지하면서 뷰 템플릿도 사용할 수 있는 타임리프의 특징을 네츄럴 템플릿 (natural templates)이라고 합니다. 스프링 통합 지원 스프링과 통합되어 있어, 스프링..
PRG(Post-Redirect-Get) 웹 개발 패턴 중 자주 사용되는 패턴으로 HTTP POST 요청에 대한 응답이 GET 요청을 위한 URI로 리다이렉트되는 것 입니다. PRG 패턴을 사용하는 이유를 사용하는 이유는 사용하지 않았을 경우 다음과 같은 문제점이 있기 때문입니다. PRG패턴을 사용하지 않았을 경우 문제점 1. 새로고침으로 인해 동일한 요청을 연속적으로 보내지는 이슈 발생 웹 브라우저의 새로 고침은 마지막에 서버에 전송한 데이터를 다시 전송하게 됩니다. 그래서 만약 결제 같은 중요한 로직을 POST 방식으로 구현을 했다면, 마지막으로 서버에 전송한 데이터가 POST 요청에 대한 응답 결과물이기 때문에 새로고침을 한다면 계속 중복 결제가 되는 심각한 문제점이 발생하게 됩니다. 2. POST..
HTTP 응답 방법 3가지 스프링에서 응답 데이터를 만드는 방법은 크게 3가지가 있습니다. 정적 리소스 스프링 부트는 클래스 패스의 아래 디렉토리에 있는 정적 리소스를 제공합니다. /static , /public , /resources , /META-INF/resources src/main/resources는 리소스를 보관하는 곳이고, 또는 클래스패스의 시작 경로입니다. 스프링은 정적 리소스를 담을 다음과 같은 경로를 제공하고, 이 디렉토리에 리소스를 넣어두면 스프링 부트가 정적 리소스로 서비스를 제공합니다. src/main/resources/static 만약 src/main/resources/static/test/index.html 경로에 파일이 들어있으면 웹 브라우저에서 다음과 같이 실행하면 정정 파..
HTTP 요청 방법 3가지 스프링 HTTP 요청 방법 3가지는 다음과 같이 이뤄져있습니다. GET 방식 메시지 바디 없이, URL의 “쿼리 파라미터”를 사용해 데이터를 전달합니다. ( EX : 검색, 필터, 페이징 등에서 많이 사용 ) 쿼리 파라미터는 URL에 다음과 같이 ? 를 시작으로 보낼 수 있습니다. 추가 파라미터는 & 로 구분합니다. http://localhost:8080/request-param?username=hello&age=2 POST 방식 - HTML Form HTML의 Form을 사용해서 클라이언트에서 서버로 데이터를 전송하는 방식으로 , 주로 회원 가입, 상품 주문 등에서 사용합니다. 컨텐츠 타입은 다음과 같으며 application/x-www-form-urlencoded 메시지 바..
클라이언트가 서버에 요청을 할 때 다음과 같은 동작 과정이 있습니다. 클라이언트가 WAS에 요청 서버는 TCP/IP 커넥션 연결 후 서블릿을 호출 그런데 이 서블릿 객체는 누가 호출하는 걸 까요?? 이 서블릿 객체는 바로 Tread(쓰레드)가 호출합니다. Tread (쓰레드) 자바 Main 메서드를 실행하면 main이라는 이름의 쓰레드가 실행되는 것을 볼 수 있는데, 애플리케이션 코드를 하나하나 순차적으로 실행하는 것을 쓰레드라고 볼 수 있습니다. 만약 쓰레드가 없다면 자바 애플리케이션이 실행이 불가능합니다. 쓰레드는 한번에 하나의 코드 라인만 수행하며 동시 처리가 필요하면 쓰레드를 추가로 생성하게 됩니다. 단일 요청 - 쓰레드 하나 사용 시 WAS는 요청이 오면 쓰레드를 할당하고 그 쓰레드가 서블릿을 ..
Web Server (웹 서버)웹 서버란, HTTP 프로토콜을 기반으로 동작하는 서버로,동작하는 방식은 클라이언트가 웹 서버에 HTTP 요청을 보내면 웹 서버는 HTTP로 응답하여 정적 리소스를 제공합니다. 대표적인 웹 서버- Nginx- Apache WAS - Web Application Server (웹 어플리케이션 서버)WAS도 Web 서버처럼 HTTP 프로토콜을 기반으로 동작하고 웹 서버 기능을 포함하여 동적 리소스도 제공 할 수 있는 Application 서버입니다.WAS는 서블릿 컨테이너 또는 웹 컨테이너를 제공하고 컨테이너를 통해 프로그램 코드를 실행해 애플리케이션 로직을 수행하거나 DB 조회 등.. 동적 리소스를 제공합니다. 대표적인 WAS- Tomcat (톰캣)- Jetty- Undert..