Sự khác biệt giữa JSF, Servlet và JSP là gì?


826

Tôi có một số câu hỏi. Đó là :

  1. JSP và Servlet liên quan với nhau như thế nào?
  2. Đây có phải là một loại Servlet không?
  3. JSP và JSF liên quan với nhau như thế nào?
  4. Có phải JSF là một loại JSP dựa trên giao diện người dùng Pre-Build như ASP.NET-MVC?

3
Trong JSF 2.0+, xml là không cần thiết.
Divyesh Kanzariya

Câu trả lời:


1229

JSP (Trang JavaServer)

JSP là một công nghệ xem Java chạy trên máy chủ cho phép bạn viết văn bản mẫu bằng các ngôn ngữ phía máy khách (như HTML, CSS, JavaScript, ect.). JSP hỗ trợ các taglib , được hỗ trợ bởi các đoạn mã Java cho phép bạn kiểm soát luồng trang hoặc đầu ra một cách linh hoạt. Một taglib nổi tiếng là JSTL . JSP cũng hỗ trợ Ngôn ngữ biểu thức , có thể được sử dụng để truy cập dữ liệu phụ trợ (thông qua các thuộc tính có sẵn trong phạm vi trang, yêu cầu, phiên và ứng dụng), chủ yếu kết hợp với taglibs.

Khi một tệp tin được yêu cầu lần đầu tiên hoặc khi ứng dụng web khởi động, bộ chứa servlet sẽ biên dịch nó thành một lớp mở rộng HttpServletvà sử dụng nó trong suốt vòng đời của ứng dụng web. Bạn có thể tìm thấy mã nguồn được tạo trong thư mục công việc của máy chủ. Ví dụ như Tomcat , đó là /workthư mục. Theo yêu cầu của JSP, bộ chứa servlet sẽ thực thi lớp JSP đã biên dịch và gửi đầu ra được tạo ra (thường chỉ là HTML / CSS / JS) thông qua máy chủ web qua mạng đến phía máy khách, từ đó hiển thị nó trong trình duyệt web.

Phục vụ

Servlet là một giao diện lập trình ứng dụng Java (API) đang chạy trên máy chủ, nó chặn các yêu cầu do máy khách thực hiện và tạo / gửi phản hồi. Một ví dụ nổi tiếng là HttpServletcung cấp các phương thức để móc nối các yêu cầu HTTP bằng các phương thức HTTP phổ biến như GETPOST. Bạn có thể định cấu hình HttpServlets để nghe một mẫu URL HTTP nhất định, có thể định cấu hình được web.xml, hoặc gần đây hơn với Java EE 6 , với @WebServletchú thích.

Khi một Servlet được yêu cầu lần đầu hoặc trong quá trình khởi động ứng dụng web, bộ chứa servlet sẽ tạo một thể hiện của nó và giữ nó trong bộ nhớ trong suốt vòng đời của ứng dụng web. Trường hợp tương tự sẽ được sử dụng lại cho mọi yêu cầu đến có URL khớp với mẫu URL của servlet. Bạn có thể truy cập dữ liệu yêu cầu bằng cách HttpServletRequestxử lý phản hồi bằng cách HttpServletResponse. Cả hai đối tượng đều có sẵn dưới dạng đối số phương thức bên trong bất kỳ phương thức được ghi đè nào HttpServlet, chẳng hạn như doGet()doPost().

JSF (Khuôn mặt JavaServer)

JSF là một khung công tác MVC dựa trên thành phần , được xây dựng dựa trên API Servlet và cung cấp các thành phần thông qua các taglib có thể được sử dụng trong JSP hoặc bất kỳ công nghệ xem dựa trên Java nào khác như Facelets . Facelets phù hợp với JSF hơn nhiều so với JSP. Nó cụ thể cung cấp các khả năng tạo khuôn mẫu tuyệt vời như các thành phần hỗn hợp , trong khi về cơ bản, JSP chỉ cung cấp khả năng<jsp:include> tạo khuôn mẫu trong JSF, do đó bạn buộc phải tạo các thành phần tùy chỉnh với mã Java thô (hơi mờ và nhiều công việc tẻ nhạt) khi bạn muốn thay thế một nhóm các thành phần lặp đi lặp lại bằng một thành phần duy nhất. Kể từ JSF 2.0, JSP đã không còn được coi là công nghệ xem có lợi cho Facelets.

Lưu ý : Bản thân JSP KHÔNG bị phản đối, chỉ có sự kết hợp của JSF với JSP là không dùng nữa.

Lưu ý : JSP có khả năng tạo khuôn mẫu tuyệt vời bằng các Taglib, đặc biệt là biến thể ( Tệp thẻ ). Tạo khuôn mẫu kết hợp với JSF là điều còn thiếu.

Là một khung công tác MVC ( Model-View-Controller ), JSF cung cấp bộ điều khiểnFacesServlet đáp ứng yêu cầu duy nhất . Nó nhận tất cả các công việc yêu cầu / phản hồi HTTP tiêu chuẩn và tẻ nhạt từ tay bạn, chẳng hạn như thu thập dữ liệu nhập của người dùng, xác thực / chuyển đổi chúng, đưa chúng vào các đối tượng mô hình, gọi các hành động và hiển thị phản hồi. Theo cách này, về cơ bản, bạn sẽ kết thúc với trang JSP hoặc Facelets (XHTML) cho Chế độ xem và lớp JavaBean dưới dạng Mô hình . Các thành phần JSF được sử dụng để liên kết khung nhìn với mô hình (chẳng hạn như điều khiển web ASP.NET của bạn) và sử dụng cây thành phần JSF để thực hiện tất cả công việc.FacesServlet

Câu hỏi liên quan


8
@Shashank: Không hoàn toàn. Chỉ có <c:forEach>thẻ là từ JSTL. Xem thêm stackoverflow.com/tags/jstl/info
BalusC

1
Đúng. <mytag:doesSomething/>trông giống như một thẻ tùy chỉnh và <jsp:attribute>, một thẻ jsp.
Shashank Kadne

3
Vì đây là một câu trả lời cực kỳ phổ biến, tôi muốn thêm một bit rất quan trọng đó là các tệp thẻ JSP cho phép tạo thẻ tùy chỉnh cho bố cục và bố cục trang mà không cần viết mã Java. Tính năng này cực kỳ hữu ích và là một phần của tiêu chuẩn trong nhiều năm nhưng vẫn chưa được sử dụng đúng mức.
nhộn

1
@johnny Facelets là công nghệ xem được ưa thích kể từ khi Java EE 6 được phát hành năm 2009 ( docs.oracle.com/javaee/6/tutorial/doc/giepx.html ). Nhóm công nghệ tối thiểu để phát triển ứng dụng web Java không cao hơn hầu hết các ngôn ngữ khác, nhưng có nhiều tùy chọn và đối thủ cạnh tranh hơn, gây nhầm lẫn cho người mới. Phát triển web trong Ruby? Sự lựa chọn đầu tiên là hiển nhiên.
DavidS

1
@BalusC +1 để được giải thích chi tiết. Câu trả lời yêu thích của tôi.
Anish B.

84

Xem http://www.oracle.com/technetwork/java/faq-137059.html

Công nghệ JSP là một phần của gia đình công nghệ Java. Các trang JSP được biên dịch thành các servlet và có thể gọi các thành phần JavaBeans (bean) hoặc Enterprise JavaBeans (bean doanh nghiệp) để thực hiện xử lý trên máy chủ. Như vậy, công nghệ JSP là thành phần chính trong kiến ​​trúc có khả năng mở rộng cao cho các ứng dụng dựa trên web.

Xem https://jcp.org/en/int sinhtion / faq

Trả lời: Công nghệ JavaServer Faces là một khung để xây dựng giao diện người dùng cho các ứng dụng web. Công nghệ JavaServer Faces bao gồm:

Một bộ API dành cho: đại diện cho các thành phần UI và quản lý trạng thái của chúng, xử lý các sự kiện và xác thực đầu vào, xác định điều hướng trang và hỗ trợ quốc tế hóa và khả năng truy cập.

Thư viện thẻ tùy chỉnh JavaServer Pages (JSP) để thể hiện giao diện JavaServer Faces trong trang JSP.

JSP là một loại servlet chuyên dụng.

JSF là một tập hợp các thẻ mà bạn có thể sử dụng với JSP.


6
"JSP là một loại servlet chuyên dụng. JSF là một tập hợp các thẻ bạn có thể sử dụng với JSP." Câu nói này mô tả đúng nhất mối quan hệ giữa ba người!
miễn phí

34

Từ góc độ Trình duyệt / Máy khách

Cả JSP và JSF đều trông giống nhau, theo yêu cầu của ứng dụng, JSP phù hợp hơn cho các ứng dụng dựa trên yêu cầu đáp ứng.

JSF được nhắm mục tiêu cho các ứng dụng Web dựa trên sự kiện phong phú hơn. Tôi thấy sự kiện chi tiết hơn nhiều so với yêu cầu / phản hồi.

Từ góc nhìn máy chủ

Trang JSP được chuyển đổi thành servlet và nó chỉ có hành vi tối thiểu.

Trang JSF được chuyển đổi thành cây thành phần (bởi FacesServlet chuyên dụng) và nó tuân theo vòng đời thành phần được xác định bởi spec.


23

Phục vụ:

API Servlet Java cho phép các nhà phát triển Java viết mã phía máy chủ để phân phối nội dung Web động. Giống như các API máy chủ Web độc quyền khác, API Servlet Java cung cấp hiệu suất được cải thiện so với CGI; tuy nhiên, nó có một số lợi thế bổ sung quan trọng. Vì các servlet được mã hóa bằng Java, chúng cung cấp cách tiếp cận thiết kế hướng đối tượng (OO) và quan trọng hơn là có thể chạy trên bất kỳ nền tảng nào. Do đó, cùng một mã đã được chuyển đến bất kỳ máy chủ nào hỗ trợ Java. Các Servlets đóng góp rất lớn vào sự phổ biến của Java, vì nó trở thành một công nghệ được sử dụng rộng rãi để phát triển ứng dụng Web phía máy chủ.

JSP:

JSP được xây dựng trên đầu máy chủ và cung cấp một giải pháp dựa trên trang đơn giản hơn để tạo ra một lượng lớn nội dung HTML động cho giao diện người dùng Web. Các trang JavaServer cho phép các nhà phát triển và thiết kế web chỉ cần chỉnh sửa các trang HTML bằng các thẻ đặc biệt cho các phần Java động. Các trang JavaServer hoạt động bằng cách có một servlet đặc biệt được gọi là bộ chứa JSP, được cài đặt trên máy chủ Web và xử lý tất cả các yêu cầu xem trang của JSP. Bộ chứa JSP dịch một mã được yêu cầu thành mã servlet sau đó được biên dịch và thực thi ngay lập tức. Các yêu cầu tiếp theo đến cùng một trang chỉ cần gọi servlet thời gian chạy cho trang. Nếu một thay đổi được thực hiện đối với JSP trên máy chủ, một yêu cầu xem nó sẽ kích hoạt một bản dịch, biên dịch và khởi động lại servlet thời gian chạy khác.

JSF:

JavaServer Faces là một khung Java tiêu chuẩn để xây dựng giao diện người dùng cho các ứng dụng Web. Quan trọng nhất, nó đơn giản hóa việc phát triển giao diện người dùng, thường là một trong những phần khó khăn và tẻ nhạt hơn trong phát triển ứng dụng Web.
Mặc dù có thể xây dựng giao diện người dùng bằng cách sử dụng các công nghệ Web Java nền tảng (như Java servlets và JavaServer Pages) mà không có khung toàn diện được thiết kế để phát triển ứng dụng Web cho doanh nghiệp, những công nghệ cốt lõi này thường có thể dẫn đến các vấn đề về phát triển và bảo trì. Quan trọng hơn, vào thời điểm các nhà phát triển đạt được giải pháp chất lượng sản xuất, cùng một bộ vấn đề được giải quyết bởi JSF sẽ được giải quyết theo cách không chuẩn. JavaServer Faces được thiết kế để đơn giản hóa việc phát triển giao diện người dùng cho các ứng dụng Web Java theo các cách sau:
• Nó cung cấp cách tiếp cận phát triển độc lập, tập trung vào khách hàng để xây dựng giao diện người dùng Web, do đó cải thiện năng suất của nhà phát triển và dễ sử dụng.
• Nó đơn giản hóa việc truy cập và quản lý dữ liệu ứng dụng từ giao diện người dùng Web.
• Nó tự động quản lý trạng thái giao diện người dùng giữa nhiều yêu cầu và nhiều khách hàng một cách đơn giản và không phô trương.
• Nó cung cấp một khung phát triển thân thiện với đối tượng nhà phát triển đa dạng với các bộ kỹ năng khác nhau.
• Nó mô tả một tập hợp các mẫu kiến ​​trúc tiêu chuẩn cho một ứng dụng web.

[ Nguồn: Tham khảo đầy đủ: JSF ]


3
Đó không phải là tôi, nhưng tôi tưởng tượng đó là vì bạn chỉ cần sao chép và dán câu trả lời từ một cuốn sách.
mawburn

7
@Oberon: Cảm ơn bạn đã trả lời. Phải mất một thời gian để tôi tìm thấy những từ chính xác vì vậy đã đi cho cuốn sách. Nếu nó không phù hợp, thì bạn hoặc bất kỳ ai có thể đề nghị tôi gỡ xuống câu trả lời. Tôi sẽ rất vui khi làm điều đó.
Kishor Prakash

18

Cũng có những tình huống mà bạn có thể ủng hộ JSP hơn JSF. Bản chất ứng dụng nên là yếu tố quyết định để lựa chọn công nghệ.

Nếu bạn có một tương tác GUI phong phú và nhiều kịch bản Java cần thiết thì hãy ưu tiên JSF. Về cơ bản nếu kiến ​​trúc ứng dụng GUI của bạn giống như Thành phần được định hướng & thậm chí được điều khiển như Swing thì JSF là tốt nhất.

Nếu ứng dụng chỉ là một hình thức đơn giản, không cần nhiều tương tác GUI, thì JSP có thể làm tốt nếu việc học một công nghệ mới là một chi phí chung và cũng không cần thiết phải có khung phức tạp.


13

Servlet - đó là lớp máy chủ java.

  • JSP - đó là Servlet với html
  • JSF - đó là các thành phần dựa trên libs thẻ
  • JSP - nó được chuyển đổi thành servlet một lần khi máy chủ nhận được yêu cầu.

2
JSP được chuyển đổi thành servlet một lần khi máy chủ nhận được yêu cầu.
cackle

... Khi máy chủ nhận được yêu cầu ĐẦU TIÊN. Tâm nhớ đệm.
dbalakirev

10

đúng là JSP được chuyển đổi thành servlet tại thời điểm thực thi và JSF là điều hoàn toàn mới để làm cho trang web dễ đọc hơn vì JSF cho phép viết tất cả các cấu trúc lập trình dưới dạng thẻ.


6

Sự khác biệt cơ bản giữa Servlets và JSP là trong Servlets chúng ta viết mã java và trong đó chúng ta nhúng mã HTML và chỉ có trường hợp ngược lại với JSP. Trong JSP, chúng tôi viết mã HTML và trong đó chúng tôi nhúng mã java bằng cách sử dụng các thẻ được cung cấp bởi JSP.


5

Java Server Pages (JSP) là công nghệ java cho phép các nhà phát triển và thiết kế web phát triển nhanh chóng và dễ dàng duy trì các trang web động, giàu thông tin, tận dụng các hệ thống kinh doanh hiện có. Công nghệ JSP tách giao diện người dùng khỏi việc tạo nội dung, cho phép các nhà thiết kế thay đổi bố cục trang tổng thể mà không thay đổi nội dung động bên dưới.

Facelets là ngôn ngữ khai báo trang không phải là trang đầu tiên được thiết kế cho JSF (Java Server Faces) , cung cấp một mô hình lập trình đơn giản và mạnh mẽ hơn cho các nhà phát triển JSF so với JSP. Nó giải quyết các vấn đề khác nhau xảy ra trong JSP để phát triển ứng dụng web.

Dưới đây là bảng so sánh các tính năng của tập lệnh và facelets:

nhập mô tả hình ảnh ở đây Nguồn


0
JSP:means HTML+Java Code:

JSP có vòng đời riêng của nó jsp_init () jsp_service () jsp_destroy

Sau khi yêu cầu đầu tiên, chuyển đổi thành tập tin .java. Có ba loại thẻ chúng tôi đang sử dụng
1.) Scriptless

<%  %>

Tại đây, nhà phát triển có thể khai báo tất cả những điều mà nhà phát triển muốn lấy dữ liệu

2.) Thẻ biểu thức

<%=  %>

Ở đây nhà phát triển có thể sử dụng một số dữ liệu liên quan đến in

3.) Tuyên bố

<!% %>

Ở đây nhà phát triển có thể khai báo một số dữ liệu liên quan đến phương pháp.

Servlet:

Servlet có vòng đời riêng của nó.

init()
service()
destroy()

Sau khi bộ chứa yêu cầu đầu tiên sẽ đọc dữ liệu từ tệp web.xml, sau đó, phần chào mừng sẽ được hiển thị.
Bây giờ trở đi sau khi thực hiện hành động, nó sẽ tìm kiếm url và sau quá trình này, nó sẽ tự tìm kiếm một servlet cụ thể ở đó. hoạt động dịch vụ sẽ thực hiện.

JSF:

JSF có ui của riêng nó và vòng đời của nó có thể thực hiện theo sáu cách,

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

Đối với ui ở đây cho bảng ở đây, chúng tôi đang sử dụng bảng điều khiển và có các mặt khác nhau cho điều này.

Rich Faces
Prime Faces.

-1

JSP là thành phần View của MVC (Model View Controller). Bộ điều khiển nhận yêu cầu đến và chuyển nó đến Model, có thể là một bean có quyền truy cập cơ sở dữ liệu. Sau đó, JSP định dạng đầu ra bằng HTML, CSS và JavaScript và đầu ra sau đó được gửi lại cho người yêu cầu.


-1

JSF là một khung công tác nâng cao trong đó kiến ​​trúc dựa trên Model-View-Controller (MVC) rất dễ thực hiện cho các dự án. Ưu điểm chính của JSF so với JSP là kết xuất động dễ dàng các thành phần trên trình duyệt dựa trên các điều kiện và tích hợp dễ dàng các sự kiện ajax.

Mặt trước của ứng dụng JSF tức là các tệp xhtml là các tệp được hiển thị cho người dùng thông qua trình duyệt. Các tệp xhtml này gọi bên trong các bean được quản lý, ví dụ các bộ điều khiển trong đó logic ứng dụng thực tế được viết.

Các bộ điều khiển gọi nội bộ các dịch vụ khác nhau giao tiếp với cơ sở dữ liệu (sử dụng API Hibernate hoặc JPA). Đây là cách dòng chảy xảy ra trong ngắn hạn.

JSF cũng được sử dụng kết hợp với RichFaces, một khung để mang lại giao diện phong phú cho ứng dụng web của bạn.

JSF + RichFaces + Hibernate / JPA là một công nghệ tốt để học chắc chắn!


-2

Jsp cũng đang có mã servlet được xây dựng mà không cần bất kỳ trình biên dịch bên ngoài nào, nó có thể được chạy trực tiếp. Các thay đổi sẽ có hiệu lực trong jsp trực tiếp trong trình duyệt.

Servlet cần được biên dịch (tức là nó sẽ có lớp tạo cụ thể)

Jsf là một thành phần xem của MVC Framework


-2

JSP là viết tắt của TRANG JAVA SERVER ........ jsp không phải là một servlet. Jsp sử dụng cả mã và thẻ HTML, bạn không cần phải tạo HTML và một servlet riêng biệt. Spsp đang đóng vai trò tuyệt vời trong ứng dụng web. Servlet là một lớp java đóng vai trò làm cho trang HTML của bạn từ tĩnh thành động.


2
Các tệp thực sự được chuyển đổi thành các thành phần Servlet. "Các tệp tin được dịch sang các máy chủ trong thời gian chạy". Nguồn: en.wikipedia.org/wiki/JavaServer_Pages
dbalakirev

-2

Servlets là các chương trình java phía máy chủ thực thi bên trong bộ chứa web. Mục tiêu chính của servlet là xử lý các yêu cầu nhận được từ máy khách.

Trang máy chủ Java được sử dụng để tạo các trang web động. Jsp's đã được giới thiệu để viết java cộng với mã html trong một tệp duy nhất không dễ thực hiện trong chương trình servlets. Và một tệp jsp được chuyển đổi thành java servlet khi nó được dịch.

Java Server Faces là một khung web MVC giúp đơn giản hóa việc phát triển UI.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.