정적 컨텐츠를 제공하는 서버이다.
동적 컨텐츠를 제공하기 위해 만들어진 애플리케이션 로직을 실행하는 서버
package javax.servlet;
웹 서버 내에서 실행되는 작은 Java 프로그램입니다.
서블릿(Servlet)은 특정 유형의 네트워크 요청에 응답하는 클래스 (일반적으로 HTTP)
서블릿은 네트워킹 측면(예: HTTP 요청 구문 분석, 연결 처리 등)을 처리하는 서블릿 컨테이너에서 실행됩니다. 가장 잘 알려진 오픈 소스 서블릿 컨테이너 중 하나는 Tomcat입니다.
서블릿의 라이프 사이클(life cycle)을 관리합니다.
요청마다 쓰레드 생성의 단점 보완
필요한 쓰레드를 쓰레드 풀에 보관하고 관리한다.
쓰레드가 필요하면, 이미 생성되어 있는 쓰레드를 쓰레드 풀에서 꺼내서 사용한다.
사용을 종료하면 쓰레드 풀에 해당 쓰레드를 반납한다.
쓰레드가 모두 사용중이라면 기다리는 요청은 거절하거나 특정 숫자만큼 대기 하도록 설정가능
쓰레드가 미리 생성되어 있으므로, 쓰레드를 생성하고 종료하는 비용이 절약되고 응답시간이 빠르다.
생성 가능한 쓰레드의 최대치가 있으므로 너무 많은 요청이 들어와도 기존 요청은 안전하게 처리할 수 있다.
서버에서 최종 HTML을 생성해서 클라이언트에 전달
HTML 결과를 자바스크립트를 사용해 웹 브라우저에서 동적으로 생성해서 적용
Html을 동적으로 생성
HTTP 규약은 GET과 POST를 포함하여 모든 HTTP 메서드를 유연하게 사용할 수 있도록 설계되어 있습니다.
따라서, GET 메서드에서도 요청 본문을 사용하거나, POST 메서드에서도 URL에 데이터를 포함하여 요청을 보낼 수 있습니다.
그렇지만, HTTP 규약에서는 GET과 POST 메서드의 기본적인 용도와 차이점이 정의되어 있으며, 이러한 기본적인 용도와 차이점을 고려하여 HTTP 메서드를 사용하는 것이 권장됩니다.
GET은 주로 서버로부터 리소스를 요청하고, POST는 주로 서버에 데이터를 제출하는 데 사용됩니다.
CGLIB는 바이트코드를 조작해서 동적으로 클래스를 생성하는 기술을 제공하는 라이브러리이다.
CGLIB를 사용하면 인터페이스가 없어도 구체 클래스만 가지고 동적 프록시를 만들어낼 수 있다.
우리가 CGLIB를 직접 사용하는 경우는 거의 없다. 이후에 설명할 스프링의 ProxyFactory 라는 것에 쓰이기 때문에 CGLIB가 무엇인지 대략 개념만 잡으면 된다.
서블릿으로 개발할 때는 뷰(View)화면을 위한 HTML을 만드는 작업이 자바 코드에 섞여서 지저분하고 복잡하다.
JSP를 코드의 상위 절반은 회원을 저장하기 위한 비즈니스 로직이고, 나머지 하위 절반은 결과를 HTML로 보여주기 위한 View영역이다.
JSP에 비즈니스 코드가 노출되어 있다.
dispatcher.forward() : 다른 서블릿이나 JSP로 이동할 수 있는 기능이다. 서버 내부에서 다시 호출이 발생한다.
리다이렉트는 실제 클라이언트(웹 브라우저)에 응답이 나갔다가, 클라이언트가 redirect 경로로 다시
요청한다. 따라서 클라이언트가 인지할 수 있고, URL 경로도 실제로 변경된다. 반면에 포워드는 서버
내부에서 일어나는 호출이기 때문에 클라이언트가 전혀 인지하지 못한다.
PowerGenerator