답변:
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는 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 구성 요소 트리 를 사용하여 모든 작업을 수행합니다.
<c:forEach>
태그 만 JSTL에서 가져온 것입니다. 또한 참조 stackoverflow.com/tags/jstl/info
<mytag:doesSomething/>
사용자 정의 태그 및 <jsp:attribute>
jsp 태그 처럼 보입니다 .
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와 함께 사용할 수있는 태그 세트입니다.
서블릿 :
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 ]
서블릿-자바 서버 측 레이어입니다.
JSP (Java Server Pages) 는 웹 개발자와 디자이너가 기존 비즈니스 시스템을 활용하는 정보가 풍부한 동적 웹 페이지를 신속하게 개발하고 쉽게 유지 관리 할 수 있도록하는 Java 기술입니다. JSP 기술은 사용자 인터페이스와 컨텐츠 생성을 분리하여 설계자가 기본 동적 컨텐츠를 변경하지 않고 전체 페이지 레이아웃을 변경할 수 있도록합니다.
Facelets 는 JSF (Java Server Faces) 를 위해 설계된 최초의 비 JSP 페이지 선언 언어 로 JSP와 비교하여 JSF 개발자에게보다 단순하고 강력한 프로그래밍 모델을 제공했습니다. 웹 애플리케이션 개발을 위해 JSP에서 발생하는 다양한 문제를 해결합니다.
다음은 스크립틀릿과 페이스 렛의 기능을 비교 한 표입니다.
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.
JSF는 프로젝트를 위해 MVC (Model-View-Controller) 기반 아키텍처를 구현하기 매우 쉬운 고급 프레임 워크입니다. JSP에 비해 JSF의 주요 장점은 조건에 따라 브라우저에서 컴포넌트를 쉽게 동적으로 렌더링하고 아약스 이벤트를 쉽게 통합 할 수 있다는 것입니다.
JSF 애플리케이션의 프론트 엔드, 즉 xhtml 파일은 브라우저를 통해 사용자에게 표시되는 것입니다. 이 xhtml 파일은 내부적으로 관리 Bean을 호출합니다 (예 : 실제 응용 프로그램 로직이 작성된 컨트롤러).
컨트롤러는 내부적으로 데이터베이스와 통신하는 다양한 서비스를 호출합니다 (Hibernate 또는 JPA API 사용). 이것이 흐름이 짧게 일어나는 방식입니다.
JSF는 또한 웹 애플리케이션에 풍부한 모양과 느낌을주기위한 프레임 워크 인 RichFaces와 함께 사용됩니다.
JSF + RichFaces + Hibernate / JPA는 확실히 배울 수있는 좋은 기술입니다!
Jsp는 또한 직접 실행할 수있는 외부 컴파일이 필요없는 내장 서블릿 코드를 가지고 있습니다. 변경 사항은 jsp에서 브라우저로 직접 적용됩니다.
서블릿을 컴파일해야합니다 (즉, 특정 클래스 작성이 필요함)
JSF는 MVC Framework의 뷰 구성 요소입니다
JSP는 JAVA SERVER PAGE의 약자입니다. .jsp는 서블릿이 아닙니다. Jsp는 코드와 HTML 태그를 자체적으로 사용하므로 HTML과 서블릿을 따로 만들 필요가 없습니다 .Jsp는 웹 응용 프로그램에서 큰 역할을하고 있습니다. 서블릿은 HTML 페이지를 정적에서 동적으로 만드는 Java 클래스 역할을합니다.