Spring : Spring MVC Quick Start

This page last changed on Apr 17, 2006 by Kees de Kooter

web.xml modifications:

<servlet>
    <servlet-name>spring-dispatcher</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>spring-dispatcher</servlet-name>
    <url-pattern>*.action</url-pattern>
</servlet-mapping>

This servlet finds its configuration in the following bean configuration file: WEB-INF/spring-dispatcher-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC
    "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>

    <bean id="simpleUrlMapping"
        class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/search.action">searchController</prop>
            </props>
        </property>
    </bean>

    <bean id="searchController"
        class="nl.quel.view.SearchController">
        <property name="objectFinder" ref="objectFinder"/>
        <property name="commandClass" value="nl..command.QueryCommand"/>
        <property name="queryFactory" ref="queryFactory"/>
    </bean>

</beans>

We are using a CommandContoller is this example. Spring MVC tries to put all posted (form)variables in the object specified by the commandClass property.

public class SearchController extends AbstractCommandController {

    private Logger logger = LoggerFactory.getLogger(getClass());
    private ObjectFinder objectFinder;
    private QueryFactory queryFactory;

    @Override
    protected ModelAndView handle(HttpServletRequest request, 
            HttpServletResponse response, Object object, 
            BindException bindException) throws Exception {

        QueryCommand queryCommand = (QueryCommand)object;

        if (queryCommand.getQuery() != null) {

            Query query = queryFactory.createQuery(queryCommand.getType(), 
                    queryCommand.getQuery());

            SearchResult searchResult = objectFinder.find(query,
                    queryCommand.getCurrentPageNumber(), 
                    queryCommand.getHitsPerPage());

            request.setAttribute("searchResult", searchResult);
        } else {
            queryCommand = new QueryCommand();
        }

        request.setAttribute("queryCommand", queryCommand);

        return new ModelAndView("/WEB-INF/jsp/search-result.jsp");
    }

    public void setObjectFinder(ObjectFinder objectFinder) {
        this.objectFinder = objectFinder;
    }

    public void setQueryFactory(QueryFactory queryFactory) {
        this.queryFactory = queryFactory;
    }

}