DefaultAnnotationHandlerMapping для портлетов против сервлетов

Я развивался с Весенним MVC в окружающей среде Сервлета в течение достаточно долгого времени, главным образом на Весне 3.1.x и 3.2.x, но недавно переместил рабочие места в компанию, которая использует смесь Портлетов и Сервлетов, использующих Весну 3.0.6.

Кулак, там, кажется, две версии DefaultAnnotationHandlerMapping, один для Портлеты и один для Сервлеты. Мои ограниченные знания Портлетов убеждают мне, они - просто протяженность Сервлетов, таким образом, я могу неопределенно понять потребность иметь два отдельных HandlerMappings, один, чтобы обращаться с универсальными Сервлетами, другой, чтобы обращаться со специфическими особенностями к Portlest. То, что бросает меня, - то, как каждый из них, кажется, ведет себя по-другому с regaurds к тому, как они обращаются с @RequestMapping аннотациями, и как мой новый работодатель принял решение настроить вещи.

В моем прошлом у меня был один DispatchHandler для целого приложения. Я знаю, что у вас может быть многократный DispatchHandlers, но я никогда не видел выгоды прошлая сегрегация подконтекста XMLs. Во всяком случае в прошлом мне нанесли бы на карту DispatchHandler к "/", и затем каждый Диспетчер установил отображение на вершине, используя @RequestMapping ("/someUrl") и затем другой @RequestMapping на каждом методе обработчиков, далее расширяющем отображение URL. Так, от браузера я получил бы что-то как:

http://somehost.com/myWar/myController/myMethod

где первый "/myWar" нанесен на карту к ВОЕННОМУ развертыванию, следующее "/" нанесено на карту к DispatchServlet, "/myController" - отображение Диспетчера, и что-либо после соответствует некоторому методу, используя комбинацию подписи URL, метода запроса, параметров, и т.д.

Теперь позволяет, оценивают то, что я вижу в своей новой фирме. Во-первых, каждый Диспетчер получает его собственный DispatchServlet, таким образом, там похож на определенный 20-30 DispatchServlets, все с различным основным нанесенным на карту URIs, некоторые с тем же самым основным Прикладным Контекстом XML, некоторые с различными, все использующие тот же самый Прикладной Контекст от ContextLoaderListener. Каждый путь последующего DispatchServlet совпадает с @RequestMapping на их "нанесенном на карту" Диспетчере, таким образом, в вышеупомянутом примере у DispatchServlet был бы путь "/myController", и у Диспетчера будет @RequestMapping ("/myController"). Вдобавок ко всему, на уровне метода Диспетчера стоимость, определенная на @RequestMapping, кажется, полностью игнорирует любой дополнительный pathing, относился к нему.

Так, например, если у меня есть Диспетчер с @RequestMapping ("/myController"), сопровождаемый методом с @RequestMapping ("/редактируют"), поражая URL http://somehost.com/myWar/myContoller/edit дает мне 404. Однако, если я изменяю уровень метода @RequestMapping на @RequestMapping (параметр = "actionMethod=edit"), и URL к http://somehost.com/myWar/myController? actionMethod=edit, это наносит на карту очень хорошо, и я получаю свою страницу. Далее, если я изменяю свой уровень метода @RequestMapping на @RequestMapping (стоимость = "/edit", params = "actionMethod=view") ни один http://somehost.com/myWar/myController? actionMethod=edit ни http://somehost.com/myWar/myController/edit? actionMethod=edit работа вообще. Проблема, которая должна теперь добраться до чего-нибудь помимо отображения по умолчанию на уровне метода, требует, чтобы я взял"? actionMethod=edit", вместо того, чтобы просто расширить URI с добавленными путями. Кроме того, это препятствует тому, чтобы я использовал УСПОКОИТЕЛЬНЫЙ подход, так как теперь я не могу определить что-то как @RequestMapping ("/somePath/{id} ").

У меня есть так много беспорядка в моем мозгу, как то, почему DispatchServlet наносит на карту в web.xml перекрывание на Диспетчеров @RequestMapping, и почему @RequestMapping на уровне метода Диспетчера не работающий, когда я установил собственность стоимости в действительное отображение URI, но хорошо работаю, когда я установил некоторое отображение параметра?

О, и жаль о долгой регистрации. Я просто хочу получить лучшее понимание того, что происходит здесь, таким образом, я могу или иметь дело с ним с интеллектуальным подходом, или вернуться к своей новой группе и сказать, что "это должно быть изменено, и это то, почему". Я могу расширить этот долгий вопрос с некоторыми упрощенными примерами кода, если это помогает.

1
nl ja de
Spring Framework and more
Spring Framework and more
839 участник(ов)

чат о spring framework и связанных с ним технологиях. We're discussing: job, tech questions, beer meet up/networking: tech review ,LinkedIn skills, SOF q/a raise up& etc. languages: russian,java,eng.