Spring MVC BeanNameUrlHandlerMapping example
In Spring MVC, BeanNameUrlHandlerMapping is the default handler mapping mechanism, which maps URL requests to the name of the beans. For example,
<beans ...> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <bean name="/welcome.htm" class="com.mkyong.common.controller.WelcomeController" /> <bean name="/streetName.htm" class="com.mkyong.common.controller.StreetNameController" /> <bean name="/process*.htm" class="com.mkyong.common.controller.ProcessController" /> </beans>
In above example, If URI pattern
- /welcome.htm is requested, DispatcherServlet will forward the request to the “
WelcomeController“. - /streetName.htm is requested, DispatcherServlet will forward the request to the “
StreetNameController“. - /processCreditCard.htm or /process{any thing}.htm is requested, DispatcherServlet will forward the request to the “
ProcessController“.
Additionally, this mapping is support Ant style regex pattern match, see this AntPathMatcher javadoc for details.
Actually, declare BeanNameUrlHandlerMapping is optional, by default, if Spring can’t found handler mapping, the DispatcherServlet will creates a BeanNameUrlHandlerMapping automatically.
So, the above web.xml file is equivalence to the following web.xml:
<beans ...> <bean name="/welcome.htm" class="com.mkyong.common.controller.WelcomeController" /> <bean name="/streetName.htm" class="com.mkyong.common.controller.StreetNameController" /> <bean name="/process*.htm" class="com.mkyong.common.controller.ProcessController" /> </beans>
If you encounter an error saying “error: package javax.servlet.http does not exist”
please try put following dependency in your pom.xml
[...] a @Controller annotation.Handler Mapping – No more declaration for the handler mapping like BeanNameUrlHandlerMapping, ControllerClassNameHandlerMapping or SimpleUrlHandlerMapping, all are replaced with a standard [...]
[...] DispatcherServlet will creates a BeanNameUrlHandlerMapping automatically. See this article – BeanNameUrlHandlerMapping example for [...]