user2171262
user2171262

Reputation: 123

No mapping found for HTTP request with URI [/Spring4MVCHelloWorld/hello/] in DispatcherServlet with name 'dispatcher'

I tried SpringMVC example mentioned here- http://javahash.com/spring-4-mvc-hello-world-tutorial-full-example/. I have customised the web.xml and the dispatcher servlet and not getting the results.

I am getting the error page as configured under error page tag when I hit the URL-/Spring4MVCHelloWorld/hello/?name=JavaHash

However, if I hit the URL - /Spring4MVCHelloWorld/ I am getting the page as specified in the welcome file list, that is the index.jsp page.

The expected behaviour is that helloworld.jsp should be loaded when the user hits the first URL. It was working but I changed something in my dispatcher servlet and the web.xml file.

Here is my web.xml file -

<web-app id="WebApp_ID" version="2.4"
  xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
         http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<display-name>Web Application</display-name>

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

<context-param>
     <param-name>contextConfigLocation</param-name>
     <param-value>/WEB-INF/dispatcher-servlet.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>1</load-on-startup>
 </servlet>

 <servlet-mapping>
     <servlet-name>dispatcher</servlet-name>
     <url-pattern>/</url-pattern>
 </servlet-mapping>

 <error-page>
    <error-code>404</error-code>
    <location>/WEB-INF/errors/404.jsp</location>
</error-page>

Here is my dispatcher-servlet file -

<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:context="http://www.springframework.org/schema/context"
   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-3.0.xsd
         http://www.springframework.org/schema/context
         http://www.springframework.org/schema/context/spring-context-3.0.xsd">

 <context:component-scan base-package="com.javahash.spring.controller" />
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
     <property name="prefix">
        <value>/WEB-INF/views/</value>
     </property>
     <property name="suffix">
        <value>.jsp</value>
     </property>
 </bean>

Here is the controller file -

@Controller
 public class HelloWorldController { 

@RequestMapping("/hello")
public String hello(@RequestParam(value="name", required=false, defaultValue="World") String name, Model model) {
    model.addAttribute("name", name);
    return "helloworld";
}
}

The helloWorld.jsp has the following contents -

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"      "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <title>Spring4 MVC -HelloWorld</title>
</head>
<body>
   <h1>Hello : ${name}</h1> 
 </body>
 </html>

Upvotes: 0

Views: 2948

Answers (1)

Prasad
Prasad

Reputation: 3795

If your viewName is helloWorld.jsp, your controller method hello should return "helloWorld". View name is case sensitive.

Upvotes: 1

Related Questions