JSF, Servlet 및 JSP의 차이점은 무엇입니까?


826

질문이 몇 개 있습니다. 이것들은 :

  1. JSP와 서블릿은 어떻게 관련되어 있습니까?
  2. JSP는 일종의 서블릿입니까?
  3. JSP와 JSF는 서로 어떻게 관련되어 있습니까?
  4. JSF 는 ASP.NET-MVC와 같은 일종의 사전 빌드 UI 기반 JSP 입니까?

3
JSF 2.0 이상에서는 xml이 필요하지 않습니다.
Divyesh Kanzariya

답변:


1229

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 과, 주석.GETPOSTHttpServletweb.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 구성 요소 트리 를 사용하여 모든 작업을 수행합니다.

관련 질문


8
@Shashank : 전부는 아닙니다. <c:forEach>태그 만 JSTL에서 가져온 것입니다. 또한 참조 stackoverflow.com/tags/jstl/info
BalusC

1
예. <mytag:doesSomething/>사용자 정의 태그 및 <jsp:attribute>jsp 태그 처럼 보입니다 .
Shashank Kadne

3
이것은 매우 인기있는 답변이므로 Java 코드를 작성하지 않고도 페이지 구성 및 레이아웃을위한 사용자 정의 태그 생성을 허용하는 JSP 태그 파일 인 매우 중요한 비트를 추가하고 싶습니다 . 이 기능은 매우 유용하며 몇 년 동안 표준의 일부 였지만 여전히 활용률이 낮습니다.
jiggy

1
@johnny Facelets는 2009 년 Java EE 6 ( docs.oracle.com/javaee/6/tutorial/doc/giepx.html ) 이 출시 된 이후 선호되는 뷰 기술이었습니다 . Java 웹 앱을 개발하기위한 최소 기술은 다른 대부분의 언어보다 높지 않지만, 더 많은 옵션과 경쟁 업체가 있으므로 새로 온 사람에게는 혼란을줍니다. 루비에서 웹 개발? 첫 번째 선택은 분명합니다.
DavidS

1
자세한 설명은 @BalusC +1입니다. 내가 가장 좋아하는 답변.
Anish B.

84

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와 함께 사용할 수있는 태그 세트입니다.


6
"JSP는 특화된 서블릿입니다. JSF는 JSP와 함께 사용할 수있는 태그 세트입니다." 이 진술은 세 사람의 관계를 가장 잘 설명합니다!
lfree

34

브라우저 / 클라이언트 관점에서

JSP와 JSF는 동일하게 보입니다. 애플리케이션 요구 사항에 따라 JSP는 요청-응답 기반 애플리케이션에 더 적합합니다.

JSF는보다 풍부한 이벤트 기반 웹 응용 프로그램을 대상으로합니다. 요청 / 응답보다 훨씬 세분화 된 이벤트를 봅니다.

서버 관점에서

JSP 페이지는 서블릿으로 변환되며 최소한의 동작 만합니다.

JSF 페이지는 컴포넌트 트리 (특화된 FacesServlet에 의해)로 변환되며 스펙에 의해 정의 된 컴포넌트 라이프 사이클을 따릅니다.


23

서블릿 :

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 ]


3
그것은 내가 아니었지만, 당신이 단지 기본적으로 책에서 답을 복사하여 붙여 넣었 기 때문이라고 생각합니다.
mawburn

7
@Oberon : 답장을 보내 주셔서 감사합니다. 정확한 단어를 찾아서 책을 찾아가는 데 시간이 걸렸습니다. 그것이 적절하지 않다면, 당신이나 다른 사람이 저에게 답을 쓰라고 제안 할 수 있습니다. 기쁘겠습니다.
Kishor Prakash

18

JSF보다 JSP를 선호 할 수있는 상황도 있습니다. 응용 특성은 기술을 선택하는 결정 요인이어야합니다.

풍부한 GUI 상호 작용과 많은 Java 스크립팅이 필요한 경우 JSF를 선호하십시오. 기본적으로 GUI 응용 프로그램 아키텍처가 구성 요소 지향적이며 심지어 스윙처럼 구동되는 경우 JSF가 가장 좋습니다.

응용 프로그램이 단순한 양식 제출이며 GUI 상호 작용이 많이 필요하지 않은 경우 새로운 기술을 배우는 것이 오버 헤드이고 복잡한 프레임 워크가 필요하지 않으면 JSP가 잘 수행 할 수 있습니다.


13

서블릿-자바 서버 측 레이어입니다.

  • JSP-HTML을 사용하는 서블릿
  • JSF-태그 라이브러리에 기반한 컴포넌트
  • JSP-서버가 요청을 받으면 한 번 서블릿으로 변환됩니다.

2
서버가 요청을 받으면 JSP가 한 번 서블릿으로 변환됩니다.
cackle

... 서버가 FIRST 요청을 받았을 때. 마음 캐싱.
dbalakirev

10

즉, JSP는 실행 시점에 서블릿으로 변환되며 JSF는 모든 프로그래밍 구조를 태그 형식으로 작성할 수 있기 때문에 웹 페이지를 더 읽기 쉽게하기 위해 완전히 새로운 것입니다.


6

서블릿과 JSP의 기본적인 차이점은 서블릿에서 우리는 자바 코드를 작성하고 HTML 코드를 포함하고 JSP와 반대의 경우가 있다는 것입니다. JSP에서는 HTML 코드를 작성하고 JSP에서 제공하는 태그를 사용하여 Java 코드를 임베드합니다.


5

JSP (Java Server Pages) 는 웹 개발자와 디자이너가 기존 비즈니스 시스템을 활용하는 정보가 풍부한 동적 웹 페이지를 신속하게 개발하고 쉽게 유지 관리 할 수 ​​있도록하는 Java 기술입니다. JSP 기술은 사용자 인터페이스와 컨텐츠 생성을 분리하여 설계자가 기본 동적 컨텐츠를 변경하지 않고 전체 페이지 레이아웃을 변경할 수 있도록합니다.

FaceletsJSF (Java Server Faces) 를 위해 설계된 최초의 비 JSP 페이지 선언 언어 로 JSP와 비교하여 JSF 개발자에게보다 단순하고 강력한 프로그래밍 모델을 제공했습니다. 웹 애플리케이션 개발을 위해 JSP에서 발생하는 다양한 문제를 해결합니다.

다음은 스크립틀릿과 페이스 렛의 기능을 비교 한 표입니다.

여기에 이미지 설명을 입력하십시오 출처


0
JSP:means HTML+Java Code:

JSP에는 자체 라이프 사이클이 있습니다. jsp_init () jsp_service () jsp_destroy

첫 번째 요청 후 JSP는 .java 파일로 변환합니다. 우리가 사용하는 태그에는 세 가지 유형이 있습니다
.

<%  %>

여기서 개발자는 개발자가 데이터를 취하고 자하는 모든 것을 선언 할 수 있습니다

2.) 표현 태그

<%=  %>

여기서 개발자는 인쇄 관련 데이터를 사용할 수 있습니다

3) 선언

<!% %>

여기서 개발자는 메소드 관련 데이터를 선언 할 수 있습니다.

Servlet:

서블릿에는 자체 수명주기가 있습니다.

init()
service()
destroy()

첫 번째 요청 컨테이너는 web.xml 파일에서 데이터를 읽은 후 환영 채우기가 표시됩니다.
이제 조치를 수행 한 후 URL을 검색하고이 프로세스 후에 특정 서블릿을 자체 검색합니다. 서비스 작업이 수행됩니다.

JSF:

JSF는 자체 UI를 가지고 있으며 수명주기는 6 가지 방식으로 수행 할 수 있습니다.

A)Restore view phase
B)Apply request values phase
C)Process validations phase
D)Update model values phase
E)Invoke application phase
F)Render response phase

여기 표에 대한 UI의 경우 패널 그리드를 사용하고 있으며 이에 대한 다른면이 있습니다.

Rich Faces
Prime Faces.

-1

JSP는 MVC (Model View Controller)의 View 구성 요소입니다. 컨트롤러는 들어오는 요청을 가져 와서 데이터베이스에 액세스하는 Bean 일 수있는 모델로 전달합니다. 그런 다음 JSP는 HTML, CSS 및 JavaScript를 사용하여 출력을 형식화 한 다음 출력을 요청자에게 다시 보냅니다.


-1

JSF는 프로젝트를 위해 MVC (Model-View-Controller) 기반 아키텍처를 구현하기 매우 쉬운 고급 프레임 워크입니다. JSP에 비해 JSF의 주요 장점은 조건에 따라 브라우저에서 컴포넌트를 쉽게 동적으로 렌더링하고 아약스 이벤트를 쉽게 통합 할 수 있다는 것입니다.

JSF 애플리케이션의 프론트 엔드, 즉 xhtml 파일은 브라우저를 통해 사용자에게 표시되는 것입니다. 이 xhtml 파일은 내부적으로 관리 Bean을 호출합니다 (예 : 실제 응용 프로그램 로직이 작성된 컨트롤러).

컨트롤러는 내부적으로 데이터베이스와 통신하는 다양한 서비스를 호출합니다 (Hibernate 또는 JPA API 사용). 이것이 흐름이 짧게 일어나는 방식입니다.

JSF는 또한 웹 애플리케이션에 풍부한 모양과 느낌을주기위한 프레임 워크 인 RichFaces와 함께 사용됩니다.

JSF + RichFaces + Hibernate / JPA는 확실히 배울 수있는 좋은 기술입니다!


-2

Jsp는 또한 직접 실행할 수있는 외부 컴파일이 필요없는 내장 서블릿 코드를 가지고 있습니다. 변경 사항은 jsp에서 브라우저로 직접 적용됩니다.

서블릿을 컴파일해야합니다 (즉, 특정 클래스 작성이 필요함)

JSF는 MVC Framework의 뷰 구성 요소입니다


-2

JSP는 JAVA SERVER PAGE의 약자입니다. .jsp는 서블릿이 아닙니다. Jsp는 코드와 HTML 태그를 자체적으로 사용하므로 HTML과 서블릿을 따로 만들 필요가 없습니다 .Jsp는 웹 응용 프로그램에서 큰 역할을하고 있습니다. 서블릿은 HTML 페이지를 정적에서 동적으로 만드는 Java 클래스 역할을합니다.


2
JSP는 실제로 서블릿 컴포넌트로 변환됩니다. "JSP는 런타임시 서블릿으로 변환됩니다." 출처 : en.wikipedia.org/wiki/JavaServer_Pages
dbalakirev

-2

서블릿 은 웹 컨테이너 내에서 실행되는 서버 측 Java 프로그램입니다. 서블릿의 주요 목표는 클라이언트로부터받은 요청을 처리하는 것입니다.

Java 서버 페이지 는 동적 웹 페이지를 작성하는 데 사용됩니다. Jsp는 서블릿 프로그램에서 수행하기 쉽지 않은 단일 파일로 java plus html 코드를 작성하기 위해 도입되었습니다. 그리고 jsp 파일은 변환 될 때 Java 서블릿으로 변환됩니다.

Java Server Faces 는 UI 개발을 단순화하는 MVC 웹 프레임 워크입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.