요약하면 JSP는 HTML 문서 안에 Java 코드를 삽입하는 방식으로 동적인 웹 페이지를 생성하는 기술이며, 주로 프레젠테이션 로직에 사용된다. 반면에 Servlet은 자바 기반의 클래스로, 클라이언트의 요청에 대해 동적으로 처리하고 응답을 생성하는 기술로, 주로 비즈니스 로직을 처리하는 데 사용된다.
하지만 Servlet은 웹 애플리케이션의 개발과 유지보수를 어렵게 만드는 몇 가지 단점을 갖고있다보니 요즘 웹 개발에서는 URL 매핑하는 용도로만 사용하는 경우가 많다. (Spring 같은 프레임워크의 등장으로 대체되면서..)
1. 복잡한 코드 구조: 비즈니스 로직과 뷰(프레젠테이션) 로직이 함께 섞이게 되다보니 코드의 유지보수와 가독성이 저하될 수 있다.
2. 확장성의 한계: 서블릿은 Java 코드로 작성되어 있어서 웹 애플리케이션의 기능을 확장하거나 변경하기 어려울 수 있다.
3. 스레드 관리: 서블릿은 요청마다 새로운 스레드를 생성하여 처리하는데, 이로 인해 많은 동시 요청이 발생하면 서버의 성능이 저하될 수 있다.
이러한 문제를 해결하고 개발 생산서을 높이기 위해 스프링과 같은 웹 프레임워크가 등장하게 된 것. 스프링은 서블릿을 기반으로 한 프레임워크로, 서블릿의 단점을 보완하고 좀 더 효율적인 웹 개발을 할 수 있도록 지원한다.
호호 JSP가 더 좋아요.