질문이 몇 개 있습니다. 이것들은 :
- JSP와 서블릿은 어떻게 관련되어 있습니까?
- JSP는 일종의 서블릿입니까?
- JSP와 JSF는 서로 어떻게 관련되어 있습니까?
- JSF 는 ASP.NET-MVC와 같은 일종의 사전 빌드 UI 기반 JSP 입니까?
답변
JSP (JavaServer Pages)
JSP는 서버 시스템에서 실행 되는 Java보기 기술 로 HTML, CSS, JavaScript 등과 같은 클라이언트 측 언어로 템플릿 텍스트를 작성할 수 있습니다. JSP는 taglibs를 지원 하는데, 이는 페이지 플로우를 제어하거나 출력을 동적으로 제어 할 수있는 Java 코드로 지원됩니다. 잘 알려진 taglib은 JSTL 입니다. JSP는 또한 Expression Language를 지원 하는데, 이는 주로 taglib와 함께 백엔드 데이터 (페이지, 요청, 세션 및 응용 프로그램 범위에서 사용 가능한 속성을 통해)에 액세스하는 데 사용할 수 있습니다.
JSP가 처음 요청되거나 웹 앱이 시작될 때 서블릿 컨테이너는이를 확장하는 클래스로 컴파일 HttpServlet
하여 웹 앱 수명 동안 사용합니다. 생성 된 소스 코드는 서버의 작업 디렉토리에서 찾을 수 있습니다. 예를 들어 Tomcat 에서는 /work
디렉토리입니다. JSP 요청에서, 서블릿 컨테이너는 컴파일 된 JSP 클래스를 실행하고 네트워크를 통해 웹 서버를 통해 생성 된 출력 (일반적으로 HTML / CSS / JS)을 클라이언트 측으로 전송하여 웹 브라우저에 표시합니다.
서블릿
서블릿은 서버 시스템에서 실행 되는 Java API (application programming interface) 로, 클라이언트의 요청을 가로 채고 응답을 생성 / 전송합니다. 잘 알려진 예는 and와 같은 널리 사용되는 HTTP 메소드를 사용하여 HTTP 요청 HttpServlet
을 후크하는 메소드를 제공하는 예제입니다 . 당신은 구성 할 수 있습니다 구성에 특정 HTTP의 URL 패턴을 듣들 최근에, 또는 자바 EE 6 과, 주석.GET
POST
HttpServlet
web.xml
@WebServlet
서블릿이 처음 요청되거나 웹 앱 시작 중에 서블릿 컨테이너는 해당 인스턴스를 생성하고 웹 앱 수명 동안 메모리에 보관합니다. URL이 서블릿의 URL 패턴과 일치하는 모든 수신 요청에 대해 동일한 인스턴스가 재사용됩니다. 로 요청 데이터에 액세스 HttpServletRequest
하고로 응답을 처리 할 수 있습니다 HttpServletResponse
. 두 객체의 오버라이드 (override) 방법 중 내부 메소드 인자로 사용할 수 있습니다 HttpServlet
같은, doGet()
그리고 doPost()
.
JSF (JavaServer Faces)
JSF는 Servlet API를 기반 으로하는 컴포넌트 기반 MVC 프레임 워크 이며 taglibs를 통해 컴포넌트 를 제공합니다. taglib는 JSP 또는 Facelets 와 같은 다른 Java 기반 뷰 기술에서 사용할 수 있습니다 . Facelets는 JSP보다 JSF에 훨씬 적합합니다. 즉 , composite components 와 같은 훌륭한 템플릿 기능을 제공 하는 반면 JSP는 기본적으로 JSF의 템플릿 만을 제공 하므로 원시 Java 코드 (약간 불투명하고 많은 지루한 작업)가있는 사용자 정의 컴포넌트를 작성해야합니다. 반복되는 구성 요소 그룹을 단일 구성 요소로 바꾸려고합니다. JSF 2.0부터 JSP는 Facelets를 선호하는 뷰 기술로 사용되지 않습니다. <jsp:include>
참고 : JSP 자체는 더 이상 사용되지 않으며 JSF와 JSP의 조합은 더 이상 사용되지 않습니다.
참고 : JSP에는 Taglib, 특히 ( Tag File ) 변형 을 통해 훌륭한 템플릿 기능이 있습니다. JSF와 결합 된 JSP 템플릿은 부족합니다.
MVC ( Model-View-Controller ) 프레임 워크 인 JSF는 FacesServlet
유일한 요청-응답 컨트롤러 로 제공합니다 . 사용자 입력 수집, 유효성 검증 / 변환, 모델 오브젝트에 입력, 조치 호출 및 응답 렌더링과 같은 모든 표준적이고 지루한 HTTP 요청 / 응답 작업이 필요합니다. 이렇게하면 기본적으로 View 용 JSP 또는 Facelets (XHTML) 페이지 와 JavaBean 클래스가 Model 로 끝납니다 . JSF 구성 요소는 ASP.NET 웹 컨트롤과 같이 모델과 뷰를 바인딩하는 데 FacesServlet
사용되며 JSF 구성 요소 트리 를 사용하여 모든 작업을 수행합니다.
관련 질문
답변
http://www.oracle.com/technetwork/java/faq-137059.html을 참조하십시오 .
JSP 기술은 Java 기술 제품군의 일부입니다. JSP 페이지는 서블릿으로 컴파일되며 서버에서 처리를 수행하기 위해 JavaBeans 컴포넌트 (beans) 또는 Enterprise JavaBeans 컴포넌트 (enterprise bean)를 호출 할 수 있습니다. 따라서 JSP 기술은 웹 기반 응용 프로그램을위한 확장 성이 뛰어난 아키텍처의 핵심 구성 요소입니다.
참조 https://jcp.org/en/introduction/faq를
A : JavaServer Faces 기술은 웹 응용 프로그램을위한 사용자 인터페이스를 구축하기위한 프레임 워크입니다. JavaServer Faces 기술에는 다음이 포함됩니다.
UI 구성 요소 표시 및 상태 관리, 이벤트 및 입력 검증 처리, 페이지 탐색 정의, 국제화 및 액세스 가능성 지원을위한 API 세트.
JSP 페이지 내에서 JavaServer Faces 인터페이스를 표현하기위한 JSP (JavaServer Pages) 사용자 정의 태그 라이브러리.
JSP는 전문화 된 서블릿입니다.
JSF는 JSP와 함께 사용할 수있는 태그 세트입니다.
답변
브라우저 / 클라이언트 관점에서
JSP와 JSF는 동일하게 보입니다. 애플리케이션 요구 사항에 따라 JSP는 요청-응답 기반 애플리케이션에 더 적합합니다.
JSF는보다 풍부한 이벤트 기반 웹 응용 프로그램을 대상으로합니다. 요청 / 응답보다 훨씬 세분화 된 이벤트를 봅니다.
서버 관점에서
JSP 페이지는 서블릿으로 변환되며 최소한의 동작 만합니다.
JSF 페이지는 컴포넌트 트리 (특화된 FacesServlet에 의해)로 변환되며 스펙에 의해 정의 된 컴포넌트 라이프 사이클을 따릅니다.
답변
서블릿 :
Java 개발자는 Java Servlet API를 사용하여 동적 웹 컨텐츠를 제공하기위한 서버 측 코드를 작성할 수 있습니다. 다른 독점 웹 서버 API와 마찬가지로 Java Servlet API는 CGI보다 향상된 성능을 제공했습니다. 그러나 몇 가지 중요한 추가 이점이 있습니다. 서블릿은 Java로 코딩되었으므로 객체 지향 (OO) 설계 접근 방식을 제공하며 더 중요한 것은 모든 플랫폼에서 실행될 수 있습니다. 따라서 동일한 코드는 Java를 지원하는 모든 호스트에 이식 가능했습니다. 서블릿은 서버 측 웹 응용 프로그램 개발에 널리 사용되는 기술이 되었기 때문에 Java의 인기에 크게 기여했습니다.
JSP :
JSP는 서블릿을 기반으로 구축되었으며 웹 사용자 인터페이스를 위해 대량의 동적 HTML 컨텐츠를 생성 할 수있는 더 간단한 페이지 기반 솔루션을 제공합니다. JavaServer Pages는 웹 개발자와 디자이너가 동적 Java 부분에 대한 특수 태그를 사용하여 HTML 페이지를 간단히 편집 할 수 있도록합니다. JavaServer Pages는 웹 서버에 설치되고 모든 JSP 페이지보기 요청을 처리하는 JSP 컨테이너라고하는 특수 서블릿을 사용하여 작동합니다. JSP 컨테이너는 요청 된 JSP를 서블릿 코드로 변환 한 다음 컴파일되어 즉시 실행됩니다. 동일한 페이지에 대한 후속 요청은 단순히 페이지의 런타임 서블릿을 호출합니다. 서버에서 JSP를 변경 한 경우이를 보도록 요청하면 런타임 서블릿의 다른 변환, 컴파일 및 재시작이 트리거됩니다.
JSF :
JavaServer Faces는 웹 응용 프로그램의 사용자 인터페이스를 구축하기위한 표준 Java 프레임 워크입니다. 가장 중요한 것은 사용자 인터페이스의 개발을 단순화하는데, 이는 종종 웹 응용 프로그램 개발에서 더 어렵고 지루한 부분 중 하나입니다.
엔터프라이즈 웹 응용 프로그램 개발을 위해 설계된 포괄적 인 프레임 워크없이 기본 Java 웹 기술 (예 : Java 서블릿 및 JavaServer Pages)을 사용하여 사용자 인터페이스를 구축 할 수 있지만 이러한 핵심 기술로 인해 다양한 개발 및 유지 관리 문제가 발생할 수 있습니다. 더 중요한 것은 개발자가 생산 품질 솔루션을 달성 할 때까지 JSF가 해결 한 것과 동일한 일련의 문제가 비표준 방식으로 해결되었을 것입니다. JavaServer Faces는 다음과 같은 방법으로 Java 웹 응용 프로그램의 사용자 인터페이스 개발을 단순화하도록 설계되었습니다.
• 웹 사용자 인터페이스를 구축하기위한 구성 요소 중심의 클라이언트 독립적 개발 방식을 제공하므로 개발자 생산성과 사용 편의성이 향상됩니다.
• 웹 사용자 인터페이스에서 응용 프로그램 데이터의 액세스 및 관리를 단순화합니다.
• 간단하고 눈에 띄지 않게 여러 요청과 여러 클라이언트 간의 사용자 인터페이스 상태를 자동으로 관리합니다.
• 다양한 기술을 가진 다양한 개발자 청중에게 친숙한 개발 프레임 워크를 제공합니다.
• 웹 응용 프로그램의 표준 아키텍처 패턴 세트에 대해 설명합니다.
[ 출처 : 완전한 참조 : JSF ]
답변
JSF보다 JSP를 선호 할 수있는 상황도 있습니다. 응용 특성은 기술을 선택하는 결정 요인이어야합니다.
풍부한 GUI 상호 작용과 많은 Java 스크립팅이 필요한 경우 JSF를 선호하십시오. 기본적으로 GUI 응용 프로그램 아키텍처가 구성 요소 지향적이며 심지어 스윙처럼 구동되는 경우 JSF가 가장 좋습니다.
응용 프로그램이 단순한 양식 제출이며 GUI 상호 작용이 많이 필요하지 않은 경우 새로운 기술을 배우는 것이 오버 헤드이고 복잡한 프레임 워크가 필요하지 않으면 JSP가 잘 수행 할 수 있습니다.
답변
서블릿-자바 서버 측 레이어입니다.
- JSP-HTML을 사용하는 서블릿
- JSF-태그 라이브러리에 기반한 컴포넌트
- JSP-서버가 요청을 받으면 한 번 서블릿으로 변환됩니다.
답변
즉, JSP는 실행 시점에 서블릿으로 변환되며 JSF는 모든 프로그래밍 구조를 태그 형식으로 작성할 수 있기 때문에 웹 페이지를 더 읽기 쉽게하기 위해 완전히 새로운 것입니다.