2010-04-20 33 views
5

Tôi đang thiếu thời gian để giải quyết các URL bằng Spring 3.0 MVC. Tôi chỉ đang xây dựng một HelloWorld để thử làm thế nào để xây dựng một webapp RESTful trong Spring, không có gì phức tạp về mặt lý thuyết.Làm cách nào để tạo ứng dụng web Spring 3 + Tiles 2 bằng cách sử dụng URL REST-ful?

Tất cả các ví dụ tôi có thể tìm được dựa trên cấu hình chú ý đến phần mở rộng tệp ("* .htm" hoặc "* .do"), bao gồm tiền tố tên thư mục nhân tạo ("/ foo") hoặc thậm chí các đường dẫn tiền tố có dấu chấm (xấu xí), tất cả các phương pháp tiếp cận sử dụng một số mẫu regex nhân tạo làm tín hiệu cho trình giải quyết. Đối với một phương pháp REST tôi muốn tránh tất cả những điều đó và chỉ sử dụng các mẫu URL tự nhiên của ứng dụng của tôi. Tôi sẽ giả định (có lẽ không chính xác) rằng trong web.xml tôi sẽ thiết lập một mẫu url của "/ *" và chuyển mọi thứ tới DispatcherServlet để giải quyết, sau đó chỉ dựa vào các mẫu URL trong bộ điều khiển của tôi.

Tôi không thể nhận được (các) trình phân giải của mình một cách đáng tin cậy để nắm bắt các mẫu URL và trong tất cả các thử nghiệm của mình, kết quả là lỗi không tìm thấy tài nguyên, tràn ngăn xếp (vòng lặp) hoặc một số loại ServletException Spring 3 mờ stack trace — một trong những nỗi thất vọng liên tục của tôi với Spring nói chung là các thông báo lỗi thường không hữu ích.

Tôi muốn làm việc với trình phân giải Bảng 2. Tôi đã đặt các tệp * .jsp của tôi trong WEB-INF/views/và có một tệp index.jsp dòng đơn tại gốc ứng dụng chuyển hướng đến tệp chỉ mục do tệp layout.xml của tôi đặt (Trình cấu hình Gạch 2).

Tôi làm tất cả những bình thường cấu hình Spring 3 cấp cao:

<mvc:annotation-driven /> 

<mvc:view-controller path="/" view-name="index"/> 

<context:component-scan base-package="com.acme.web.controller" /> 

... Tiếp theo tất cả các loại kết hợp và cấu hình của UrlBasedViewResolver, InternalResourceViewResolver, UrlFilenameViewController vv với tất cả các cách thức của variantions trong tôi Gạch 2 tập tin cấu hình. Sau đó, trong bộ điều khiển của tôi, tôi đã cố gắng để lấy mẫu URL của tôi. Vấn đề là, tôi thậm chí không thể tin được ngay cả người giải quyết để bắt các mẫu gửi đến bộ điều khiển của tôi.

Điều này hiện đã kéo dài đến nhiều ngày mà không có tiến bộ thực sự về điều tôi nghĩ sẽ rất đơn giản để triển khai. Tôi có lẽ đang cố gắng làm quá nhiều cùng một lúc, mặc dù tôi nghĩ rằng đây sẽ là một cấu hình đơn giản (gần như là mặc định). Tôi chỉ đang cố gắng tạo một ứng dụng kiểu HelloWorld đơn giản, tôi không ngờ đây là khoa học tên lửa.

Thay vì tôi đăng cấu hình của riêng mình (đã thay đổi trên toàn bộ bản đồ), có ai biết một ví dụ trực tuyến hay không: hiển thị ứng dụng web Spring MVC + Tiles 2 đơn giản sử dụng URL REST-ful (ví dụ: tránh các mẫu URL bắt buộc như phần mở rộng tệp, thêm tên thư mục hoặc dấu chấm) và chỉ dựa vào mã/chú thích Spring 3 (tức là, không có gì ngoài chính Spring MVC) để thực hiện việc này? Có cách nào dễ dàng để thực hiện việc này không?

Cảm ơn rất nhiều vì đã giúp đỡ.

+0

tôi cũng đang cố gắng để sử dụng Spring MVC 3 Web với Apache gạch sử dụng URL RESTful Spring. Tôi có thể nhận được một trang để render, nhưng tôi nhận được đệ quy vô hạn từ Tomcat mà tôi nghi ngờ là từ bản đồ servlet gốc '/'. –

Trả lời

0

Ứng dụng mẫu mùa xuân: Petcare có các mối liên kết được xác định một cách yên tĩnh. Bạn có thể tải xuống các thông tin này từ: https://src.springframework.org/svn/spring-samples/ Các bước là: 1.Xác định cấu hình đậu gạch (cấu hình tập tin xml)

<!-- Initializes the Apache Tiles CompositeView system --> 
    <beans:bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> 
     <beans:property name="definitions"> 
      <beans:value> 
       /WEB-INF/**/tiles.xml 
      </beans:value> 
     </beans:property> 
     <beans:property name="checkRefresh" value="true" /> 
    </beans:bean> 
  1. Xác định gạch xem lớp resolver lồng trong UrlBasedViewResolver

    giá trị

    = "org.springframework.web.servlet.view.tiles2. TilesView "/>

  2. Xác định tệp định nghĩa tiles.xml cho từng bố cục/trang, v.v.

1
<bean id="tilesviewResolver" class="org.springframework.web.servlet.view.tiles2.TilesViewResolver" 
      p:order="0"/> 

<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> 
     <property name="definitions"> 
      <list> 
       <value>/WEB-INF/tiles-defs/tilesConfig.xml</value> 
      </list> 
     </property> 
</bean> 

Xem TilesViewResolver

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