http://stackoverflow.com/questions/2095397/what-is-the-difference-between-jsf-servlet-and-jsp
Q: JSF, Servlet, JSP의 차이점이 무엇인가요?
(질문자: Cheung Tat Ming )
A:
JSP (JavaServer Pages)
JSP는 Java View 기술로서, 특정 양식(클라이언트 사이드 언어, 즉 HTML, CSS, JavaScript 등)의 텍스트를 출력하는 역할을 하는, 서버에서 동작하는 기술입니다.
JSP는 taglibs를 지원하는데, 이것은 페이지 흐름이나 출력을 동적으로 제어할 수 있는 자바코드입니다. 잘 알려진 tablibs에는 JSTL이 있습니다. JSP는 Expression Language도 지원하는데, 이것은 백엔드 데이터 (페이지 내에서 유효한 변수, request, 어플리케이션 스코프에서의 세션)을 이용할 수 있게 해주며, 주로 taglibs와 혼합되어 이용됩니다.
JSP가 처음 실행되는 경우이거나, 웹앱이 시작될 때, 서블릿 컨테이너가 JSP파일을 HttpServlet
을 상속받는 클래스로 변환해 주고, 웹앱이 동작하는 동안 계속 이용합니다. 서버의 작업 디렉토리에서 컴파일 된 결과 파일을 볼 수 있습니다. 예를 들어 Tomcat 서버에서, /work 디렉토리를 보면 컴파일 결과파일을 확인할 수 있습니다. JSP request에서, 서블릿 컨테이너가 컴파일 된 JSP클래스를 실행하며 생성된 결과물 (일반적으로는 단순한 HTML/CSS/JS)을 서버에서 클라이언트로로 전송하며, 클라이언트 웹 브라우저에서 화면으로 출력됩니다.
Servlets
서블릿은 Java application programming interface (API)이며 서버에서 동작하는데, 클라이언트에서 요청한 request를 가로챈 뒤, response를 만들고 다시 클라이언트로 반환합니다. 잘 알려진 예로는 HttpServlet이 있는데, GET
과 POST같은 HTTP methods를 이용하는 HTTP 요청을 가로채는 메소드를 제공합니다. 당신은 특정 URL 패턴에 대해 동작하도록 HttpServlet을 설정할 수 있는데, web.xml파일이나 Java EE 6에서는 @WebServlet어노테이션을 이용하여 설정할 수 있습니다.
서블릿이 처음으로 요청을 받거나 웹앱이 처음 시작할 때, 서블릿 컨테이너는 자신의 인스턴스를 하나 생성하며, 웹 앱이 실행되는 동안 이것을 메모리에 유지합니다. 동일한 URL 요청에 대해, 동일한 인스턴스가 다시 재사용되는 방식으로 실행됩니다. request 데이터는 HttpServletRequest
으로 처리하고, response는 HttpServletResponse
으로 처리할 수 있습니다. HttpServlet의 메소드가 오버라이드 된 메소드 내에서, 앞에서 언급한 두 오브젝트를 이용할 수 있는데, 예를 들면 doGet()이나 doPost()에서 쓸 수 있습니다.
JSF (JavaServer Faces)
JSF는 Servlet API 위에서 구현된 component based MVC framework인데, taglibs를 통해 components 를 제공하고, 이것은 다시 JSP 또는 다른 Java를 이용하는 기술에서 이용될 수 있는데, 예를 들면 Facelets같은 것이 있습니다. Facelets는 JSP보다는 JSF에 훨씬 적합합니다. 이 기술은 composite components등의 templating capabilities을 명시적으로 지원하는데 반해, JSP는 단순히<jsp:include>
만을 템플릿으로 제공하고, 만약 계속 반복되는 컴포넌트 그룹을 하나의 컴포넌트로 대체하고 싶다면 JSP에서는 기나긴 자바코드를 작성해야 합니다. (이 작업은 JSF에서는 불투명하고 오랜 시간이 걸리는 작업입니다) JSF 2.0부터는, JSP는 Facelets 에서는 더 이상 이용하지 말 것이 권고되고 있습니다.
MVC (Model-View-Controller) 프레임워크로서, JSF는 FacesServlet
을 유일한 request-response 컨트롤러로 제공합니다. 이를 통해 모든 표준, 그리고 느린 HTTP request / response 작업을 직접 할 필요가 없게 되었는데, 예를 들면 이용자 입력을 받는 부분, 그것을 검증하고 변환하는 부분, 그것을 모델 오브젝트에 넣고, 액션을 시작하고, response를 렌더링하는 작업 등입니다. 이 방법으로 당신은 JSP나 Facelet (XHTML) 페이지를 View로 이용하고, Javabean 클래스를 Model로 이용할 수 있습니다. JSF 컴포넌트는 view를 model에 할당할 때 이용되며 (ASP.NET 웹 컨트롤 처럼) FacesServlet은 JSF 컴포넌트 트리를 다른 모든 작업을 수행할 때 이용합니다.
연관된 질문:
- What is the main-stream Java alternative to ASP.NET / PHP?
- Java EE web development, what skills do I need?
- How do servlets work? Instantiation, session variables and multithreading
- What is a Javabean and where are they used?
- How to avoid Java code in JSP files?
- What components are MVC in JSF MVC framework?
- What is the need of JSF. When UI can be achieved from css html javascript jQuery?
(답변자: BalusC)
_
_
813 | JSP (JavaServer Pages)JSP is a Java view technology running on the server machine which allows you to write template text in (the client side languages like HTML, CSS, JavaScript and so on). JSP supports taglibs, which are backed by pieces of Java code that let you control the page flow or output dynamically. A well known taglib is JSTL. JSP also supports Expression Language, which can be used to access backend data (via attributes available in page, request, session and application scopes), mostly in combination with taglibs. When a JSP is requested for the first time or when the webapp starts up, the servlet container will compile it into a class extending ServletsServlet is an Java application programming interface (API) running on the server machine, which intercepts requests made by the client and generates/sends a response. A well known example is the When a Servlet is first requested or during webapp startup, the servlet container will create an instance of it and keep it in memory during the webapp's lifetime. The same instance will be reused for every incoming request whose URL matches the servlet's URL pattern. You can access the request data by JSF (JavaServer Faces)JSF is a component based MVC framework which is built on top of the Servlet API, and providescomponents via taglibs which can be used in JSP or any other Java based view technology such asFacelets. Facelets is much more suited to JSF than JSP. It namely provides great templating capabilities such as composite components, while JSP basically only offers the As being a MVC (Model-View-Controller) framework, JSF provides the Related questions
|
'StackOverflow ' 카테고리의 다른 글
[Android] Receiver에 리모트 프로세스(process =“:remote”)를 해줘야 할 이유가 있나요? (0) | 2016.04.06 |
---|---|
[Android, Python] 안드로이드에서 파이썬을 이용할 수 있나요? (0) | 2016.03.10 |
[Android] R cannot be resolved 에러가 나옵니다. 어떻게 해결해야 하나요? (0) | 2016.02.23 |
[Android] Q: Android instrumented test의 결과는 어디에서 확인할 수 있나요? (1) | 2016.02.03 |
StackOverflow의 Reputation에 대해 알아봅시다 (0) | 2016.01.19 |