2016-09-12 5 views
1

В принципе у меня есть отображение, как /A/B/something которого отображение задается как:Spring Servlet отображение путаницы

@Controller 
@RequestMapping("/B") 
public class BController { 
... 
@RequestMapping(value = "/something", method = RequestMethod.POST) 
    public ModelAndView func1().... 

func1() вызывается. В web.xml, определение дано только для А. Так его что-то вроде:

<servlet> 
    <servlet-name>A</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>2</load-on-startup> 
</servlet> 
    <servlet-mapping> 
    <servlet-name>A</servlet-name> 
    <url-pattern>/A/*</url-pattern> 
</servlet-mapping> 

В applicationContext.xml, есть компонент сканирования для этого BController.

<context:component-scan base-package="BController" /> 

Итак, мой вопрос:

  • Как сервлет знать, чтобы перейти от 's отображение в /B' /A отображения s. Как is func1() вызов?
  • Если applicationContext.xml непосредственно принимает /B в внимание, почему func1() не вызывался после того как я удалить /A из вызова (если я называю /B/something из моего приложения, он выдает ошибку.)?

Любая помощь приветствуется. Спасибо :)

ответ

2

Весна DispatcherServlet является центральным компонентом, который отправляет все запросы зарегистрированным обработчикам (контроллерам). В вашем случае, это было сопоставлено с/относительным путем:

<url-pattern>/A/*</url-pattern> 

Линия выше в основном говорит веб-контейнер, что каждый запрос, который начинается с/A по отношению к хозяину должен быть обработан весна Диспетчер. С этого момента, вплоть до Spring, нужно обрабатывать сопоставления.

@RequestMapping("/B") 

Линия выше добавляет к DispatcherServlet, поэтому на данный момент он отображает до/A/B

@RequestMapping(value = "/something") 

Аналогично предыдущему отображению запроса, строка выше добавляет до уровня класса , поэтому метод func1, наконец, будет вызываться по следующему вызову:

POST <yourhost>/A/B/something 

Надеюсь, что это поможет.

Смежные вопросы