Xuất phát từ các khung công tác web khác, tôi được sử dụng để có thể ánh xạ các phần của URL thành các tham số phương thức. Tôi biết rằng web.xml cung cấp một cách để ánh xạ toàn bộ một URL tới một Servlet nhưng có cách nào để có được nhiều tính năng hơn trong số này, chẳng hạn như ánh xạ các phần của URL tới các tham số phương thức?Định tuyến URL trong Java
Trả lời
Sử dụng Spring (MVC) là quá mức cần thiết cho việc này. Nếu bạn không cần tiêm phụ thuộc, bạn sẽ hài lòng với redirect filter.
Bạn có thể làm những việc như vậy với Spring web MVC. API điều khiển của họ có thể ánh xạ các phần của URL đến các cuộc gọi cụ thể ở mặt sau.
Thực ra, hầu hết các khung MVC đều hỗ trợ các hành động RESTful (ví dụ: cho phép ánh xạ URL trên các phương thức hành động): Spring MVC, Stripes, Struts 2 với REST plugin.
Nếu bạn không sử dụng bất kỳ thiết bị nào trong số đó, bạn có thể đạt được điều này bằng cách viết lại URL. Các UrlRewriteFilter là khá nổi tiếng và cho phép để thực hiện những điều như vậy. Từ tài liệu về Method Invocation:
Ánh xạ servlet tiêu chuẩn là được thực hiện qua web.xml là khá hạn chế. Chỉ .xxx hoặc/xxxx/, không vi phạm đến có bất kỳ loại kết hợp thông minh nào. Sử dụng UrlRewriteFilter bất kỳ quy tắc nào khi kết hợp có thể được đặt để chạy (các) phương thức trên lớp .
Gọi một servlet trực tiếp
<rule> <from>^/products/purchase$</from> <run class="com.blah.web.MyServlet" method="doGet" /> </rule>
này sẽ gọi doGet (HttpServletRequest yêu cầu, HttpServletResponse phản ứng) khi "từ" được kết hợp trên một yêu cầu. (hãy nhớ phương pháp này cần phải được công cộng!)
Sử dụng nó để ủy sạch để phương pháp của bạn
<rule> <from>^/pref-editor/addresses$</from> <run class="com.blah.web.PrefsServlet" method="runAddresses" /> </rule> <rule> <from>^/pref-editor/phone-nums$</from> <run class="com.blah.web.PrefsServlet" method="runPhoneNums" /> </rule>
Tôi đã viết một thư viện gọi jurlmap mà trong số những thứ khác làm những gì bạn đang yêu cầu cho.
- 1. Định tuyến trong Rails. Chấm trong URL
- 2. Định tuyến ngược/tạo URL trong Clojure?
- 3. Xác định url cơ sở trong bộ định tuyến Backbone.js
- 4. Symfony2 dịch URL và định tuyến
- 5. Cách triển khai định tuyến URL trong PHP
- 6. Định tuyến: Cách ẩn tên hành động trong url?
- 7. Nội tuyến trong Java
- 8. Java - định nghĩa lớp nội tuyến
- 9. Định tuyến Backbone.js mà không thay đổi url
- 10. ASP.NET MVC: định tuyến url và chuỗi truy vấn
- 11. Định tuyến URL giống như Django cho PHP
- 12. Định tuyến Url để viết thường là như thế nào?
- 13. django-cms không định tuyến chính xác đến url tĩnh?
- 14. Định tuyến Ember.js: kết thúc khớp của url
- 15. Cách bỏ qua tuyến đường trong định dạng url asp.net định dạng
- 16. Định tuyến URL ASP.NET MVC với nhiều giá trị tuyến đường
- 17. Java HttpServletRequest nhận URL trong trình duyệt URL bar
- 18. Bỏ quaĐịnh tuyến với webservice - Loại trừ các URL asmx khỏi định tuyến
- 19. Đường dẫn URL Flask: Định tuyến Một số URL đến cùng chức năng
- 20. Định tuyến URL ASP.NET MVC không cung cấp cho tôi URL đẹp
- 21. Định tuyến URL trên ASP.net, cần lấy thông số từ url
- 22. Url Unescape trong java
- 23. C# MVC định tuyến - nhiều tuyến đường
- 24. Định tuyến Javascript regex
- 25. Nhiều bộ điều khiển trong định tuyến
- 26. Tạo URL cho các tuyến đường trong Express
- 27. Có thể bản địa hóa URL/định tuyến trong ASP.NET MVC không?
- 28. Yêu cầu ứng dụng định tuyến (ARR) IIS 7 Spaces trong URL
- 29. Làm cách nào để định tuyến URL bằng chuỗi truy vấn trong ASP.NET MVC?
- 30. Cung cấp hình ảnh từ cùng một đường dẫn URL được định tuyến trong ASP.NET MVC
Thật thú vị khi sử dụng! Cảm ơn cho lib này! – dajood
Ah, máy chủ của bạn bị hỏng. Nó là tốt hơn để chia sẻ các dự án trên Github. –
Tôi có nó trên github: https://github.com/mtomis/jurlmap, nhưng tôi không chắc nó hữu ích như thế nào. – mtomis