Ramas
Ramas

Reputation: 41

Spring MVC Tutorial issue - The DispatcherServlet configuration needs to include a HandlerAdapter that supports this handler

I am trying out the basic Spring MVC tutorial and am encountering the following error -

javax.servlet.ServletException: No adapter for handler [com.srs.springapp.web.BasicController@e0fd2a]: The DispatcherServlet configuration needs to include a HandlerAdapter that supports this handler
    org.springframework.web.servlet.DispatcherServlet.getHandlerAdapter(DispatcherServlet.java:1163)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

The "web.xml" file is as below:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xmlns="http://java.sun.com/xml/ns/javaee"     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
    <display-name>SpringWebApp</display-name>

    <servlet>
        <servlet-name>springapp</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>springapp</servlet-name>
        <url-pattern>*.htm</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

The "springapp-servlet.xml" file is as below:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

  <!-- the application context definition for the springapp DispatcherServlet -->
  <bean name="/hello.htm" class="com.srs.springapp.web.BasicController"/></beans>

Here is the code for the controller class named as BasicController.java:

package com.srs.springapp.web;

import org.springframework.web.servlet.mvc.Controller;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.io.IOException;

public class BasicController {
    protected final Log logger = LogFactory.getLog(getClass());

    public ModelAndView handleRequest(HttpServletRequest request,     HttpServletResponse response)
        throws ServletException, IOException {

    logger.info("Returning hello view");

    return new ModelAndView("hello.htm");
    }
}

I checked similar posts in this forum but was unable to get the correct solution. Any inputs are greatly appreciated. I am using the following versions of software -

  1. Java v1.8.0_512
  2. Spring Framework v 4.2.2
  3. Apache Tomcat v 7.0.64

Any help is greatly appreciated.

Thanks,

Ramas.

Upvotes: 2

Views: 5006

Answers (1)

Ramas
Ramas

Reputation: 41

Thanks for the response. I identified my mistake - the "BasicController" class needs to implement the "Controller" interface in the java code as displayed in this posting.

Upvotes: 2

Related Questions