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

  1. /welcome.htm is requested, DispatcherServlet will forward the request to the “WelcomeController“.
  2. /streetName.htm is requested, DispatcherServlet will forward the request to the “StreetNameController“.
  3. /processCreditCard.htm or /process{any thing}.htm is requested, DispatcherServlet will forward the request to the “ProcessController“.
Note
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>

Download Source Code

References

  1. BeanNameUrlHandlerMapping javadoc
  2. AntPathMatcher javadoc

About the Author

author image
mkyong
Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter, or befriend him on Facebook or Google Plus. If you like my tutorials, consider make a donation to these charities.

Comments

Leave a Reply

avatar
newest oldest most voted
trackback
Spring MVC Tutorial

[…] BeanNameUrlHandlerMapping example Maps the requested URL to the name of the cocntroller. […]

Dyleen
Guest
Dyleen

Hi, it’s very useful to me, and i think there is something wrong with the code. there will be a error like this ” no adapter for handler does your handler implement a supported interface like controller” when i run it. then i resolved the problem only added a “bean” in mvc-dispatcher-servlet.xml which name is “org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter”. so if i was wrong, please tell me.

Fateme
Guest
Fateme

Configuration for BeanNameUrlHandlerMapping must be in Spring Configuration file (EX: mvc-dispatcher-servlet.xml) not in web.xml.

Nagendra
Guest
Nagendra

You are correct.

Kingnand
Guest
Kingnand

Absolutely agree with you, it must be application context, not be in web context

Preetam
Guest
Preetam

Amazing content in such a simple and concise form. Keep up the good work.

Richard
Guest
Richard

If you encounter an error saying “error: package javax.servlet.http does not exist”

please try put following dependency in your pom.xml

<dependency>
    		<groupId>org.apache.tomcat</groupId>
    		<artifactId>servlet-api</artifactId>
    		<version>6.0.35</version>
    		<scope>provided</scope>
    	</dependency>

Guest
Guest
Guest

hey the above one is not web.xml

Raja
Guest
Raja

whats this ans man..

trackback
Spring MVC hello world annotation example

[…] a @Controller annotation.Handler Mapping – No more declaration for the handler mapping like BeanNameUrlHandlerMapping, ControllerClassNameHandlerMapping or SimpleUrlHandlerMapping, all are replaced with a standard […]

trackback
Spring MVC hello world example

[…] DispatcherServlet will creates a BeanNameUrlHandlerMapping automatically. See this article – BeanNameUrlHandlerMapping example for […]