본문 바로가기

Spring MVC28

[스프링 MVC - 백엔드 웹 개발 기술] HttpServletResponse와 HTTP 응답 방식 - TEXT, HTML, API JSON 01. HttpServletResponse - 기본 사용법01-1. HttpServletResponse 역할개발자가 일일이 HTTP 응답 메시지를 생성하기에는 힘들다서블릿은 HTTP 응답 메시지 생성하는 역할을 담당HTTP 응답코드 지정헤더 생성바디 생성편의 기능 제공Content-Type쿠키Redirect01-2. HttpServletResponse - 기본 사용법package hello.servlet.basic.response;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServle.. 2023. 8. 13.
[스프링 MVC - 백엔드 웹 개발 기술] HTTP 요청 방식 - GET, POST, HTTP API 01. HTTP 요청 데이터 - 개요HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법을 알아보자.즉, 데이터를 전달하는 방식에 대해 숙지 한다.01-1. 주로 다음 3가지 방법을 사용GET, POST, HTTP APIGET - 쿼리 파라미터/url?username=hello&age=20메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달예) 검색, 필터, 페이지등에서 많이 사용하는 방식POST - HTML Formcontent-type: application/x-www-form-urlencoded메시지 바디에 쿼리 파라미터 형식으로 전달 username=hello&age=20예) 회원 가입, 상품 주문, HTML Form 사용HTTP message body에 데이터를.. 2023. 5. 14.
[스프링 MVC - 백엔드 웹 개발 기술] HttpServletRequest 개요와 기본 사용법 01. HttpServletRequest의 개요01-1. HttpServletRequest 역할HTTP 요청 메시지를 개발자가 직접 파싱해도 되지만, 매우 불편하다서블릿은 개발자가 HTTP 요청 메시지를 편리하게 사용할 수 있도록 HTTP 요청 메시지를 파싱한다결과는 HttpServletRequest 객체에 담아서 제공한다ex) protected void service(HttpServletRequest request, HttpServletResponse response) { }HttpServletRequest를 사용하면 HTTP Body의 내용을 편리하게 사용 가능01-2. HTTP 요청 메시지POST /save HTTP/1.1 # 시작 라인Host: localhost:8080 # 헤더 정보Conten.. 2023. 5. 7.
[스프링 MVC - 백엔드 웹 개발 기술] 서블릿 생성 해보기 01. Hello 서블릿이번 시간에는 스프링 부트 환경에서 서블릿을 등록하고 사용하는 시간을 갖는다Spring F/W 만으로 등록하는 환경 역시 가능하지만 손이 많이 가기에 Spring Boot 사용서블릿은 톰캣 같은 WAS 서버를 직접 설치해야 함이렇게 설치 된 WAS 위에 서블릿 코드를 클래스 파일로 빌드해서 올려야함톰캣 서버를 실행(이미 구동 중인 경우 재실행) 해주면 된다하지만 Spring Boot는 이미 내부 모듈에 내장 WAS(Tomcat, Undertow, Netty)를 가지고 있기 때문에 Spring Boot를 기반으로 하여 WAS를 구성한다01-1. 스프링 부트 서블릿 환경 구성?package hello.servlet;import org.springframework.boot.SpringA.. 2023. 5. 7.
[스프링 MVC - 백엔드 웹 개발 기술] Spring Boot MVC 프로젝트 생성 01. 프로젝트 생성https://start.spring.io/스프링 MVC 환경을 구성하기 위해 프로젝트 생성특정 경로에 프로젝트를 이동 시킨 후 IDE(Intellij)를 통해 Openbuild.gradle의 plugins의 id가 war로 설정되어 있는지 확인서버를 실행하여 Tomcat 동작 확인프로젝트 생성 과정의 상세한 내용은 기재하지 않았습니다 2023. 5. 7.
[스프링 MVC - 백엔드 웹 개발 기술] HTML, HTTP API, CSR, SSR, 자바 백엔드 기술 웹 역사 이번 시간에는 Client(Browser)와 Server 간의 통신 방법의 종류에 대해 알아볼 것이다. 대표적인 케이스는 아래와 같다.정적 리소스동적 페이지(JSP, Thymleaf)HTTP API 요청위 키워드를 잠시 보고 다음 글을 읽어주시면 감사하겠습니다.01. 데이터를 주고받는 방식01-1. 정적 리소스 반환정적 리소스 제공시에는 고정된 HTML 파일, CSS, JS, 이미지, 영상 등을 제공주로 웹 브라우저에서 Web Server(Apache, Nginx)에 요청을 한다Web Server(Apache, Nginx)는 특정 경로에 있는 리소스를 반환Web Server는 DB 작업이나, 애플리케이션 로직 수행 요청이 아닌 경우 직접 처리 후 반환01-2. 동적 HTML 페이지(템플릿 엔진) 반환We.. 2023. 4. 30.
[스프링 MVC - 백엔드 웹 개발 기술] 동시 요청 - 멀티 쓰레드 01. 동시 요청 - 멀티 쓰레드01-1. 쓰레드애플리케이션 코드를 하나하나 순차적으로 실행하는 것은 쓰레드자바 메인 메서드 실행 → main 이라는 이름의 쓰레드 실행됨쓰레드가 없다면 자바 애플리케이션 실행 불가능쓰레드는 한 번에 하나의 코드 라인만 수행동시 처리가 필요하면 쓰레드를 추가로 생성01-2. 단일 요청 쓰레드 하나 사용 WAS 내의 쓰레드는 현재 요청을 받지 않기에 휴식 단계Client 요청 시 연결(Connection)이 수행되고 해당 연결에 쓰레드가 할당된다이렇게 연결된 쓰레드가 서블릿(Servlet)을 호출한다요청 처리를 다 하면 Client에게 응답(Response)을 하고 쓰레드는 다시 휴식에 들어간다01-3. 다중 요청 쓰레드 하나 사용Client 01번이 WAS에 요청을 수행하.. 2023. 4. 26.
[스프링 MVC - 백엔드 웹 개발 기술] 웹서버(Web Server), 웹 애플리케이션 서버(WAS) 그리고 서블릿 01. 웹서버, 웹 애플리케이션 서버01-1. 웹 - HTTP 기반웹은 HTTP 기반으로 통신을 한다클라이언트 요청 → 인터넷 → 서버(HTML 생성) 값 반환01-2. 웹 서버(Web Server)HTTP 기반 동작정적 리소스 제공, 기타 부가기능 제공정적(파일) HTML, CSS, JS, 이미지, 영상예) Nginx, Apache01-3. 웹 애플리케이션 서버(WAS - Web Application Server)HTTP 기반 동작웹 서버 기능 포함 + (정적 리소스 제공 가능)애플리케이션 로직 수행동적 HTML, HTTP API(JSON)서블릿, JSP, 스프링 MVC예) 톰캣(Tomcat) Jetty, Undertow01-4. 웹 서버, 웹 어플리케이션 서버(WAS) 차이점👉🏼 H/W 관점에서의.. 2023. 4. 25.
[Spring MVC - 핵심 원리 기본] 빈 스코프 01. 빈 스코프란?지금까지 우리는 스프링 빈이 “스프링 컨테이너의 시작”과 함께 생성되어서 “스프링 컨테이너가 종료” 될 때까지 유지된다고 학습 하였다이것은 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문이다스코프는 번역 그대로 빈이 존재할 수 있는 범위를 뜻함01-1. 스프링이 지원하는 다양한 스코프싱글톤기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 스코프프로토타입스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여, 더는 관리하지 않는 매우 짧은 범위의 스코프웹 관련 스코프request : 웹 요청이 들어오고 나갈때 까지 유지되는 스코프session : 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는.. 2023. 4. 25.
[Spring MVC - 핵심 원리 기본] 빈 생명주기 콜백 01. 빈 생명주기 콜백 시작📌 스프링 빈이 생성 되거나 소멸 되기 직전에 Bean 안에 메서드를 호출하는 빈 라이프사이클스프링 빈 생성 및 소멸 전 Bean 안에 메서드 호출 기능데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다. 이번 시간에는 스프링을 통해 이러한 초기화 작업과 종료 작업을 어떻게 진행하는지 알아본다간단하게 외부 네트워크에 미리 연결하는 객체를 하나 생성한다고 가정애플리케이션 시작 시점에 네트워크 연결 : connect() 호출애플리케이션 종료 시점에 네트워크 종료 : disconnect() 호출01-1. NetworkClientp.. 2023. 4. 25.
[Spring MVC - 핵심 원리 기본] 의존관계 자동 주입 01. 다양한 의존관계 주입 방법의존 관계 주입에는 4가지 방식이 존재생성자 주입Setter 주입필드 주입일반 메서드 주입01-1. 생성자 주입생성자를 통해 의존 관계를 주입지금까지 진행한 방식이 생성자 주입특징불변, 필수 의존관계에 사용생성자 호출시점에 딱 1번만 호출 보장생성자 주입이 발생되는 시점은 스프링이 빈을 등록하면서 의존 관계 주입도 같이 발생한다. 즉 스프링도 new OrderServiceImpl(memberRepository, discountPolicy)를 호출해서 의존 관계 주입을 실행 한다@Componentpublic class OrderServiceImpl implements OrderService { private final MemberRepository memberRepos.. 2023. 4. 25.
[Spring MVC - 핵심 원리 기본]컴포넌트 스캔과 의존관계 자동 주입 01. 컴포넌트 스캔과 의존관계 자동 주입 시작하기지금까지 스프링 빈을 등록할 때는 자바 코드의 @Bean이나 XML의 등을 통해 스프링 빈을 등록만약 이렇게 등록해야 할 빈이 수백개인 경우 누락이 되는 문제가 발생함스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능 제공또한 의존 관계도 자동으로 주입하는 @Autowired 기능도 제공01-1. AutoAppConfig 생성@ComponentScan( excludeFilters = @ComponentScan.Filter( type = FilterType.ANNOTATION, classes = Configuration.class ))@Confi.. 2023. 4. 25.