Как настроить контроллер Spring 3 MVC для сопоставления с любым URI, кроме тех, которые начинаются с css /, js / или img / - PullRequest
0 голосов
/ 10 февраля 2012

В моем текущем проекте мы используем Spring 3 MVC и у нас есть требование для реализации чистых URL - что-то вроде / category / subcategory / id. Поэтому мы сопоставили DispatchServlet с любым URL-адресом, подобным следующему:

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

Мы бы хотели, чтобы все запросы к этому приложению проходили пока один метод одного контроллера. Таким образом, этот метод в качестве аннотации типа:

@RequestMapping("/**")

Однако это буквально отображает все (конечно), включая запросы на то, что должно быть статическими ресурсами, такими как вещи в img /, js / и css /. Есть ли способ, которым мы можем исключить эти статические ресурсы, содержащие каталоги, при захвате чего-либо еще с одной аннотацией @RequestMapping?

Ответы [ 2 ]

0 голосов
/ 13 февраля 2012

Решение оказалось в том, чтобы переместить аннотацию @RequestMapping на уровень класса, в отличие от метода. Затем был создан Controller для реализации Controller, и логика контроллера была перенесена на требуемый метод handleRequest.

По какой-то причине это работает нормально. Я пока недостаточно разбираюсь во внутренней логике Spring MVC, чтобы понять, почему она работает, но работает. Я надеялся, что будет более прозрачный и «весенний» способ сделать это.

0 голосов
/ 11 февраля 2012

Я не уверен, что это будет работать, но вы можете попробовать добавить что-то подобное для каждого типа файлов (* .js, * .css и т.

...