자바 7

04. MVC 프레임워크 만들기

FrontController 패턴 특징프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출입구를 하나로!공통 처리 가능프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨 이번에는 프론트 컨트롤러를 v1~v5까지 만들며 단계적으로 발전하는 형태를 보자. V1public interface ControllerV1 { void process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException;}  각 버전마다 인터페이스를 만들 것이며, 이번에는 서블릿의 형태를 띄는 인터페이스를 만들었다.각 컨트롤러..

Back-end 2023.12.26

03. 서블릿, JSP, MVC 패턴

서블릿과 JSP를 활용하여 회원 관리 웹 어플리케이션을 만들어 보자. 먼저 서블릿만 활용해보자. 서블릿을 활용한 회원관리 웹 어플리케이션 회원 도메인package hello.servlet.domain.member;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class MemberRepository { private static Map store = new HashMap(); private static long sequence = 0L; //static 사용 private static final MemberRepository instance = new M..

Back-end 2023.12.17

2. 서블릿

이번엔 스프링 부트 환경에서 서블릿을 등록하고 사용해보자.스프링은 톰캣 서버를 내장하고 있어 서블릿 코드 실행에 편리하다.따라서 Main 함수에 @ServletComponentScan를 추가하여 서블릿의 사용을 지원하도록 하자.package hello.servlet.basic;import jakarta.servlet.ServletException;import jakarta.servlet.annotation.WebServlet;import jakarta.servlet.http.HttpServlet;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import java.io.IOExcept..

Back-end 2023.11.28

01. 웹 플리케이션 이해

웹은 HTTP 기반이다.HTTP로 거의 모든 형태의 데이터 전송 가능. 웹 서버(Web Server)•  HTTP 기반으로 동작• 정적 리소스 제공, 기타 부가기능• 정적(파일) HTML, CSS, JS, 이미지, 영상• 예) NGINX, APACHE웹 애플리케이션 서버(WAS - Web Application Server)• HTTP 기반으로 동작• 웹 서버 기능 O (정적 리소스 제공 가능)• 프로그램 코드를 실행하여 애플리케이션 로직 수행   • 동적 HTML, HTTP API(JSON)   • 서블릿, JSP, 스프링 MVC• 예) 톰캣(Tomcat) Jetty, Undertow 구분은?자바는 서블릿 컨테이너 기능을 제공하면 WASWAS는 애플리케이션 코드를 실행하는데 특화.웹 서버는 정적리소스 제..

Back-end 2023.11.19

09. 빈 스코프

빈 스코프란? 지금까지 우리는 스프링 빈이 스프링 컨테이너의 시작과 함께 생성되어서 스프링 컨테이너가 종료될 때 까지 유지된다 고 학습했다.이것은 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문이다. 스코프는 번역 그대로 빈이 존재할 수 있는 범위를 뜻한다 프로토타입 스코프싱글톤 스코프는 같은 인스턴스의 스프링 빈 반환프로토타입 스코프는 새로운 인스턴스 생성해서 반환 package hello.core.scope;import org.junit.jupiter.api.Test;import org.springframework.context.annotation.AnnotationConfigApplicationContext;import org.springframework.context.annota..

Back-end 2023.11.14

08. 빈 생명주기 콜백

데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고,애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다.스프링을 통해 이러한 초기화 작업과 종료 작업을 어떻게 진행하는지 예제로 알아보자  외부 네트워크에 미리 연결하는 객체를 하나 생성한다고 가정해보자.(실제로 네트워크에 연결하는 것은 아니 고, 단순히 문자만 출력하도록 했다)이 NetworkClient 는 애플리케이션 시작 시점에 connect() 를 호출해서 연결을 맺어두어야 하고,애플리케이션이 종료되면 disConnect() 를 호출해서 연결을 끊어야 한다package hello.core.lifecycle;public class NetworkClient..

Back-end 2023.11.05

04. 스프링 컨테이너와 스프링 빈

스프링 컨테이너 생성ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);ApplicationContext 를 스프링 컨테이너라 한다.ApplicationContext 는 인터페이스이다.스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다.직전에 AppConfig 를 사용했던 방식이 애노테이션 기반의 자바 설정 클래스로 스프링 컨테이너를 만든 것스프링 컨테이너를 부를 때 BeanFactory , ApplicationContext 로 구분해서 이야기 한다는데, 이는 다음에 알아본다고 한다. 스프링 컨테이너 생성 과정 1. 스프링 컨테이너 생..

Back-end 2023.10.07