본문 바로가기

TIL/Spring

(19)
HTML, HTTP API, CSR, SSR 정적 리소스 고정된 HTML 파일, CSS, JS, 이미지, 영상 등을 제공 주로 웹 브라우저 HTML 페이지 동적으로 필요한 HTML 파일을 생성해서 전달 웹 브라우저 : HTML 해석 HTTP API 주로 JSON 형태로 데이터 통신 UI 클라이언트 접점 서버 to 서버 SSR - 서버 사이드 렌더링 HTML 최종 결과를 서버에서 만들어서 웹 브라우저에 전달 주로 정적인 화면에 사용 관련 기술 : JSP, 타임리프 -> 백엔드 개발자 CSR - 클라이언트 사이드 렌더링 HTML 결과를 자바스크립트를 사용해 웹 브라우저에서 동적으로 생성해서 적용 주로 동적인 화면에 사용, 웹 환경을 마치 앱처럼 필요한 부분만 변경할 수 있음 Ex) 구글 지도, Gmail, 구글 캘린더 관련기술 : React, Vue...
동시 요청 - 멀티 쓰레드 쓰레드 애플리케이션 코드를 하나하나 순차적으로 실행하는 것은 쓰레드 자바 메인 메서드를 처음 실행하면 main이라는 이름의 쓰레드가 실행 쓰레드가 없다면 자바 애플리케이션 실행이 불가능 쓰레드는 한 번에 하나의 코드 라인만 수행 동시 처리가 필요하면 쓰레드를 추가로 생성 요청마다 쓰레드 생성 1. 장점 동시 요청을 처리할 수 있다 리소스(CPU, 메모리)가 허용할 때까지 처리 가능 하나의 쓰레드가 지연되어도, 나머지 쓰레드는 정상 동작한다 2. 단점 쓰레드의 생성 비용은 매우 비싸다 고객의 요청일 올 때마다 쓰레드를 생성하면, 응답 속도가 늦어진다 쓰레드는 컨텍스트 스위칭 비용이 발생한다 쓰레드 생성에 제한이 없다 고객 요청이 너무 많이 오면 CPU, 메모리가 임계점을 넘어서 서버가 죽을 수 있다 쓰레드..
Spring MVC Servlet urlPatterns(ex: /hello)의 URL이 호출되면 서블릿 코드가 실행 HTTP 요청 정보를 편리하게 사용할 수 있는 HttpServletRequest HTTP 응답 정보를 편리하게 제공할 수 있는 HttpServletResponse 개발자는 HTTP 스펙을 매우 편리하게 사용한다 HTTP 요청 시 WAS는 Request, Response 객체를 새로 만들어서 서블릿 객체 호출 개발자는 Request 객체에서 HTTP 요청 정보를 편리하게 꺼내서 사용 개발자는 Response 객체에 HTTP 응답 정보를 편리하게 입력 WAS는 Response 객체에 담겨있는 내용으로 HTTP 응답 정보를 생성 서블릿 컨테이너 톰캣처럼 서블릿을 지원하는 WAS를 서블릿 컨테이너라고 한다 서블릿 컨테이너는 서블릿..
Spring MVC HTTP WAS - 웹 애플리케이션 서버 웹 서버는 정적 리소스(파일), WAS는 애플리케이션 로직 사실은 둘의 용어도 경계도 모호함 웹 서버도 프로그램을 실행하는 기능을 포함하기도 함 웹 에플리케이션 서버도 웹 서버의 기능을 제공함 자바는 서블릿 컨테이너 기능을 제공하면 WAS 서블릿 없이 자바코드를 실행하는 서버 프레임워크도 있음 WAS는 애플리케이션 코드를 실행하는데 더 특화되어 있음 WAS, DB 만으로 시스템 구성 가능 WAS는 정적 리소스, 애플리케이션 로직 모두 제공 가능 WAS가 너무 많은 역할을 담당, 서버 과부하 우려 가장 비싼 애플리케이션 로직이 정적 리소스 때문에 수행이 어려울 수 있음 WAS 장애시 오류 화면도 노출 불가능 정적 리소스는 웹 서버가 처리 웹 서버는 애플리케이션 로직 같은 동..
리다이렉트 & 인터셉터 # Redirect - 지금의 페이지에서 특정 페이지로 전환하는 기능 # Interceptor - 리다이렉트를 사용해야 하는 경우가 많은 경우 HandlerInterceptor를 이용할 수 있다 - preHandle로 지정을 해준다 (가장 많이 사용한다) - Spring에서 제공하는 인터페이스 (HandlerInterceptorAdapter)를 상속받는 클래스를 만들고 입맛에 맞게 변형 예시) 후에 컨테이너에 등록
세션 & 쿠키 # Session & Cookie - Connetionless Protocol 웹 서비스는 HTTP 프로토콜을 기반으로 하는데, HTTP 프로토콜은 클라이언트와 서버의 관계를 유지하지 않는 특징이 있다 (서버의 과부화를 피하기 위해서 한번 연결하고 끊는다) 서버의 부하를 줄일 수 있는 장점은 있으나, 클라이언트의 요청 시마다 서버와 매번 새로운 연결이 생성되기 때문에 일반적인 로그인 상태 유지, 장바구니 등의 기능을 구현하기 어렵다 이러한 Connectionless Protocol의 불편함을 해결하기 위해서 세션과 쿠키를 이용한다 세션과 쿠키는 클라이언트와 서버의 연결 상태를 유지해주는 방법으로, 세션은 서버에서 연결 정보를 관리하는 반면 쿠키는 클라이언트에서 연결 정보를 관리하는데 차이가 있다 스프링 ..
Controller 객체 구현 # 웹 애플리케이션 준비 # @RequestMapping을 이용한 URL맵핑 # 커멘드 객체를 이용한 HTTP전송 정보 얻기 @ModelAttribute를 이용하면 커멘드 객체의 이름을 변경할 수 있고, 이렇게 변경된 이름은 뷰에서 커멘드 객체를 참조할 때 사용된다 # Model & ModelAndView 컨트롤러에서 뷰에 데이터를 전달하기 위해 사용되는 객체로 Model과 ModelAndView가 있다 두 객체의 차이점은 Model은 뷰에 데이터만을 전달하기 위한 객체이고, ModelAndView는 데이터와 뷰의 이름을 함께 전달하는 객체이다
Service & Dao 객체 구현 # 웹 애플리케이션의 일반적인 프로그램 구조 # 한글 처리 # 서비스 객체 구현 # DAO 객체 구현