2010-01-30 18 views
15

JAX-RS has some MVC support, nhưng tôi tự hỏi liệu JAX-RS có thực sự là một lựa chọn tốt để xây dựng ứng dụng web cho con người hay không.JAX-RS có phù hợp làm khung MVC không?

Nếu người dùng nhập thông tin sai hoặc không đầy đủ vào biểu mẫu, nó sẽ được hiển thị lại giống như Grails hoặc Wicket. Có một cách thoải mái để làm điều này với JAX-RS?

Theo như tôi biết ánh xạ URI không hoạt động chính xác, nếu không phải tất cả các thông số bắt buộc đều được đưa ra hoặc có các vấn đề về chuyển đổi (ví dụ như Date chẳng hạn). Đúng không?

Có hỗ trợ cho các mẫu được quốc tế hóa không?

Đây là số example for a simple JAX-RS based GUI application. Nhưng nó thực sự đơn giản và những thứ như i18n và xác thực không được thảo luận.

Trả lời

2

JAX-RS là khung công tác REST EE của Java. JavaServer Faces (JSF) là khung công tác Java EE MVC. Nó hỗ trợ tất cả những gì bạn đã đề cập trong câu hỏi của bạn: postback để cùng một hình thức về lỗi, i8n/l10n và nhiều hơn nhiều hơn. Để tìm hiểu thêm về JSF, hãy xem qua Java EE 6 tutorial part II chapters 4-9.

Bạn có thể làm một chút MVC với JAX-RS, nhưng nó không phải là một khuôn khổ MVC chính thức. Cùng một câu chuyện tiếp diễn mà bạn có thể làm một chút RESTful với JSF, nhưng nó không phải là một khung công tác RESTful đầy đủ.

Nếu bạn muốn tốt nhất của cả hai thế giới, tôi nghĩ bạn thực sự cần phải đi đến số Ruby on Rails hoặc Groovy on Rails.

+0

Cảm ơn. Tôi biết JSF, nhưng tôi đang tìm một thứ gì đó RESTful để xây dựng các ứng dụng GUI. – deamon

+0

Hãy tìm Ruby hoặc Groovy trên Rails. – BalusC

+0

Grails là Ruby on Rails lấy cảm hứng, nhưng không phải là một bản sao. Hai xu của tôi, BalusC :) – oligofren

1

Có rất nhiều câu hỏi trong câu hỏi này, tôi sẽ cho tôi xem hai trong số đó.

"Tôi tự hỏi liệu JAX-RS có thực sự là một lựa chọn tốt để xây dựng ứng dụng web cho con người hay không."

Dịch vụ web thường dành cho máy tương tác, mặc dù tôi cho rằng đó thường là con người phải lập trình tương tác - điều này cần phải được so sánh với SOAP, tại thời điểm này, có nhiều phạm vi hơn cho máy được tạo mã từ WSDL.

"Nếu người dùng nhập thông tin sai hoặc không đầy đủ trong một hình thức"

  • sau đó trong một dịch vụ web RESTful HTTP mà chấp nhận một đại diện hình thức html bạn nên trở lại Lỗi HTTP 400 vì khách hàng đã cung cấp một đại diện đó không phù hợp với đại diện dịch vụ của bạn mong đợi - đó là tùy thuộc vào khách hàng để đối phó với lỗi.
+1

Tôi đồng ý trả lại trạng thái 400 khi gửi dữ liệu không chính xác. Nhưng điều đó một mình sẽ không hữu ích khi dữ liệu được nhập vào một biểu mẫu. Sẽ tốt hơn nếu đánh dấu các trường biểu mẫu. – deamon

+0

jeez, bạn nghĩ điều gì đang xảy ra đằng sau hậu trường trong đường ray? bạn có nhiều lần nói rằng bạn muốn một cách RESTful để làm việc. Tôi nghĩ bạn cần phải đọc về điều đó có nghĩa là: http://en.wikipedia.org/wiki/Representational_State_Transfer#Guiding_principles_of_the_interface – oligofren

2

Hoặc tận dụng phương pháp tích hợp để tận dụng tối đa cả hai thế giới: JAX-RS + MVC.

Việc triển khai JBOSS RESTEasy của JAX-RS tích hợp với Spring MVC. Xem http://www.jboss.org/resteasy

Dưới đây là một chút hướng dẫn về RESTEasy + Spring MVC: http://java.dzone.com/articles/resteasy-spring

+0

Cảm ơn bạn đã chia sẻ liên kết đến bài viết thú vị này! – deamon

5

Có bạn có thể, nhưng bạn phải đầu óc của bạn của trang bài cũ mô hình và bắt đầu suy nghĩ của ứng dụng của bạn như một giao diện người dùng bị ngắt kết nối giao tiếp với một SOA RESTful. Khi dữ liệu biểu mẫu được nhập, nó sẽ đăng lên điểm cuối dịch vụ nếu dữ liệu không chính xác, sau đó bạn phản hồi lại với lỗi và giao diện người dùng xử lý lỗi đó. Bạn không đăng các biểu mẫu lên máy chủ trong mô hình trang bài đăng truyền thống mà đúng hơn là bạn tạo RPC như các cuộc gọi đến hệ thống đầu cuối của bạn.Xem của bạn trở nên hoàn toàn tách ra khỏi phần còn lại của MVC stack. Điều này làm cho việc thay thế chế độ xem bằng hệ thống IVR hoặc thiết bị di động tùy chỉnh vô cùng đơn giản.

Nếu người dùng nhập thông tin sai hoặc không đầy đủ vào biểu mẫu, nó sẽ được hiển thị lại giống như Grails hoặc Wicket. Có một cách thoải mái để làm điều này với JAX-RS?

Với ứng dụng internet phong phú, bạn không phải điền lại dữ liệu vì bạn không bao giờ rời khỏi trang, cuộc gọi XHR được gửi tới máy chủ và 200 thành công được gửi lại hoặc lỗi. Giao diện người dùng sau đó quyết định phải làm gì dựa trên phản hồi đó, nhưng trang vẫn còn nguyên vẹn vì cuộc gọi đã hết băng từ chuỗi giao diện người dùng chính.

+1

Điều đó ngụ ý việc sử dụng JavaScript cho hầu như tất cả các giao tiếp với máy chủ, phải không? – deamon

+0

Vâng, đó là một trong những khái niệm cốt lõi, máy chủ bao gồm hai phần, máy chủ web cung cấp HTML tĩnh và máy chủ ứng dụng là một loạt các điểm cuối REST cho dữ liệu và logic nghiệp vụ. Từ trình duyệt, bạn thực hiện cuộc gọi XHR để nhận dữ liệu và xử lý biểu mẫu, logic nghiệp vụ. Phần tốt đẹp là điều này cung cấp cho bạn kiểm soát hạt rất tốt. Ví dụ: bạn có thể muốn xác thực biểu mẫu sau khi tất cả thông tin được nhập nhưng bạn cũng có thể kiểm tra xem tên người dùng có được đưa vào điểm mà họ nhập hay không. Bằng cách thực hiện cả hai cuộc gọi XHR/JAX-RS, bạn có một kiến ​​trúc chung. – kls

+0

Để làm rõ ngay cả suy nghĩ máy chủ bao gồm hai phần họ thể chất có thể là cùng một máy chủ nó chỉ giúp hình dung chúng như hai thực thể riêng biệt. Đồng thời, cá nhân tôi sử dụng CMS có thể xuất HTML tĩnh sang máy chủ web. Điều này cung cấp templating không phụ thuộc vào thời gian chạy. Tôi không sử dụng JSP mà là xây dựng giao diện người dùng bằng HTML, CSS và JavaScript thuần túy. – kls

1

Hãy xem ReXSL - đó là khung MVC, trên đầu trang của JAX-RS. Vì vậy, câu trả lời là - có, JAX-RS là hoàn toàn phù hợp cho thiết kế MVC.

0

Câu trả lời ngắn: .

Nó đóng vai trò là cơ sở để triển khai MVC (MVC 1.0 - JSR 371) cho JAVA EE 8. Controller sẽ là hạt JAX-RS có chú thích @Controller (trên lớp hoặc phương pháp).

Để biết thông tin mor xem: MVC 1.0 (JSR 371)

Nếu bạn mất con đường mà lúc của bạn, bạn đã thực hiện một quyết định thực sự tốt, nó nên làm cho nó dễ dàng hơn cho bạn để nâng cấp và sử dụng Java EE 8 kiến ​​trúc MVC mới.

Các vấn đề liên quan