Servlet ?Java Servlet은 자바를 사용하여 웹 페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양. 흔히 Servlet이라고 부른다.Java Servlet은 웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종이다.❗JSP와 Servlet의
Servlet의 단점출력을 하기 위해 HTML 코드를 만드는 부분을 문자열로 작성하다보면 들여쓰기나 속성 설정 등 복잡해진다.Servlet은 자바 코드를 이용해서 작업을 처리하기에는 좋지만 HTML, CSS, JS 코드를 작성하기에는 너무 불편하다.JSP (Jakart
EL (Expression Language) EL은 표현을 위한 언어로 JSP 스크립트의 표현식을 대신하여 속성 값을 쉽게 출력하도록 고안된 language 이다. 즉, 표현식 ()를 대체할 수 있다. EL 표현식에서 도트 연산자 왼쪽은 반드시 java.util.Ma
Framework비즈니스 로직이 빠진 반제품 상태의 애플리케이션더 쉬운 이해를 위한 예시일상 생활 속에서 발표 자료를 만들 때 파워포인트를 찾는다. 하지만 우리가 파워 포인트가 없다고 해서 발표자료를 못 만드는 것은 아니다.직접 그릴 수도 있고, 메모장으로 만들 수도
Spring Application의 구성 요소POJO + 메타 정보 + 스프링 프레임워크 (IoC Container) 로 구성된다. \- POJO : 비즈니스 로직을 가짐. \- 메타 정보 : 애플리케이션 구성 정보를 가짐. \- 위 둘을 IoC Con
의존성을 가지고 있다는 것의존성을 가지고 있다는 것은 자바에서 has a 관계에 있다는 것이다.우리가 만약 멀리 떨어져잇는 사람들과 통화(business logic)를 한다고 하자. 이 때, 우리는 당연하게도 전화기를 가져야 (has a) 한다.이 때, ‘전화기는 우리
Spring Framework는 DI를 어떻게 처리할까 ? 개발자는 비즈니스 로직을 담은 Bean 들을 POJO 형태로 작성한다. 개발자는 각 Bean들을 어떻게 생성하고 has-a 관계를 맺어줄지에 대한 설명서인 메타정보를 작성해서 전달한다. Spring Contai
명시적 DI이전 포스트에서 @Configuration과 @Bean을 이용해서 명시적인 Bean을 선언하는 방법을 봤다.명시적 DI의 경우 비즈니스 로직과 Bean 관리 로직이 잘 분리되어 관심사의 분리가 잘 되어 있다.하지만 이 명시적 DI는 Bean을 만들 때 마다
횡단 관심사의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임예를 들어, 음식 배달 서비스를 들어보자.음식 배달의 핵심은 음식을 조리하는 것이다. 핵심 관심사 하지만 수익을 내야 하니 주문을 받고 배달을 하는 등의 역할 또한 수행해야 한다.
TestAspect는 aspect를 담고 있는 Bean으로 구성하기 위해 @Component 와 @Aspect를 선언일반적으로 Aspect 안에 있는 메서드 하나가 advice를 의미한다.advice는 advice 타입과 advice 코드로 구성된다.@Before은 a
advice를 적용할 target의 메서드를 결정하는 메서드 선정 알고리즘@Before 등 애너테이션의 value 값이다.pointcut을 작성할 때는 execution, within, bean 등 지정자와 함께 사용한다.execution에 작성하는 메서드의 패턴은 위
advice는 실행되는 시점에 따라 여러가지 타입으로 작성할 수 있다.advice가 동작하기 위해서는 어떤 시점에 advice를 실행할 것 인가를 결정해야 한다. Spring에서는 총 5가지 annotation으로 이 시점을 설정할 수 있다.@Before가 선언된 ad
Spring MVC 는 Front Controller 패턴을 적용한 웹 애플리케이션 개발 프로젝트 이다. Spring MVC의 구성 요소 > DispatcherServlet Spring MVC는 스프링을 통해서 웹 MVC 애플리케이션을 개발하기 위한 아키텍처로 F
웹 서버는 정적 컨텐츠(HTML, CSS, JS, 이미지 등)를 제공하는 역할을 수행한다. 동적 컨텐츠 요청 시 요청을 WAS로 전달할 수도 있다. 대표적인 웹 서버로는 Apache, Nginx 등이 있다.WAS는 서블릿 컨테이너 기능을 제공하고, 동적 컨텐츠를 생성하
Record는 Java 16에서 정식 출시된 특별한 유형의 클래스로 불변성을 기본으로 한다. 기존의 클래스와 달리 모든 필드가 final 키워드로 선언되며, 객체 생성 후 변경할 수 없다. 또한 필드 선언만으로 자동으로 생성자, getter, equals(), hash
다중 서버 환경에서 세션 기반 인증 방식을 사용하는 경우에는 세션 불일치 문제가 발생할 수 있다. 우리가 만약 서버 A,B를 관리하고 있을 때, 로드밸런서는 사용자의 요청을 상황에 맞게 A와 B 중 한 곳으로 전달한다.유효한 로그인 요청이 A 서버로 처음 도착하면 사용