URL-маршрутизация в Java - PullRequest
6 голосов
/ 31 мая 2010

Исходя из других веб-фреймворков, я привык сопоставлять части URL-адреса с параметрами метода. Я знаю, что web.xml предоставляет способ сопоставления всего URL-адреса с сервлетом, но есть ли способ извлечь из этого больше возможностей, например сопоставить части URL-адреса с параметрами метода?

Ответы [ 4 ]

6 голосов
/ 31 мая 2010

Использование Spring (MVC) излишне для этого. Если вам не нужно вводить зависимости, вы будете довольны фильтром перенаправления .

4 голосов
/ 31 мая 2010

На самом деле большинство MVC-фреймворков поддерживают действия RESTful (т.е. позволяют сопоставлять URL-адреса с методами действий): Spring MVC, Stripes , Struts 2 с плагином REST .

Если вы не используете ни одного из них, вы можете добиться этого с помощью перезаписи URL. UrlRewriteFilter довольно известен и позволяет реализовывать такие вещи. Из документации о вызове метода :

Стандартное отображение сервлета, которое сделано через web.xml довольно ограниченно. Только .xxx или / xxxx / , без возможности есть какие-то умные соответствия. С помощью UrlRewriteFilter любое правило при совпадении может быть установлен для запуска метода (ов) на класс.

Вызов сервлета напрямую

<rule>
<from>^/products/purchase$</from>
<run class="com.blah.web.MyServlet" method="doGet" />
</rule>

Это вызовет doGet (запрос HttpServletRequest, HttpServletResponse ответ), когда "от" сопоставляется по запросу. (помните, этот метод должен быть общественность!)

Используйте его, чтобы делегировать методы

<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>
2 голосов
/ 04 апреля 2011

Я написал библиотеку под названием jurlmap , которая помимо всего прочего делает то, что вы просите.

1 голос
/ 31 мая 2010

Вы можете делать такие вещи с помощью Spring Web MVC. API-интерфейс их контроллера может отображать части URL-адреса на конкретные вызовы на стороне сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...