java - Spring MVC default controller -
i have temporary solution , i'll explain bellow, i'm looking if there's better solution.
i have basic spring 4 mvc app web.xml configurations (no maven). web.xml follows:
<?xml version="1.0" encoding="utf-8"?> <web-app ...> <context-param> <param-name>contextconfiglocation</param-name> <param-value>/web-inf/applicationcontext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.contextloaderlistener</listener-class> </listener> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.dispatcherservlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> <welcome-file-list> <welcome-file>redirect.jsp</welcome-file> </welcome-file-list> </web-app> and dispatcher-servlet.xml:
<?xml version='1.0' encoding='utf-8' ?> <beans ...> <bean class="org.springframework.web.servlet.mvc.support.controllerclassnamehandlermapping"/> <bean class="controllers.controller"></bean> <bean class="controllers.homecontroller"></bean> <bean id="viewresolver" class="org.springframework.web.servlet.view.internalresourceviewresolver" p:prefix="/web-inf/jsp/" p:suffix=".jsp" /> </beans> i deleted part create simple in-xml (urlmapping) controller index view, because index page needs backend work done well.
currently / requests handled controller class, while /home/ requests handled homecontroller class (because spring, default, makes path controller name primary url path, right?)
my question is, possible , if yes, how can make homecontroller class default controller. don't have have controller class.
for familiar asp.net mvc, want how whether go site.com/home/index or site.com, both times reference same controller.
i want create spring automatically connects site.com route in homecontroller class.
i hope i'm clear enough. i'll answer unclear questions , welcome answers or documentations! thanks!
i haven't tried this, think should work.
create new class extends controllerclassnamehandlermapping, , override generatepathmappings method if controller annotated @requestmapping use annotation's value path instead of controller's name.
public class mycontrollerclassnamehandlermapping extends controllerclassnamehandlermapping { @override protected string[] generatepathmappings(class<?> beanclass) { if (beanclass.isannotationpresent(requestmapping.class)) { requestmapping mapping = beanclass.getannotation(requestmapping.class); return mapping.value(); } return super.generatepathmappings(beanclass); } } annotate homecontroller @ class level (not method level) @requestmapping({"/", "/home"}).
in bean definitions of dispatcher-servlet.xml, replace spring's controllerclassnamehandler mycontrollerclassnamehandler.
Comments
Post a Comment