I had created the simple spring MVC controller, when i tried to execute i am getting the error.
Error Message:
org.springframework.beans.factory.CannotLoadBeanCl assException: Cannot find class [SpringApp.web.java.HelloController] for bean with name ‘Redirect.jsp’ defined in ServletContext resource [/WEB-INF/springapp-servlet.xml]; nested exception is java.lang.ClassNotFoundException: SpringApp.web.java.HelloController
This is my application structure.
SpringApp
----Web Pages
----META-INF
----WEB-INF
----springapp-servlet.xml
----web.xml
----Redirect.jsp
----index1.jsp
----Source Packages
----java
----HelloController.java
web.xml
--------
<?xml version="1.0" encoding="UTF-8"?>
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<web-app 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" >
<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>
index1.jsp
</welcome-file>
</welcome-file-list>
</web-app>
springapp-servlet.xml
----------------------
<?xml version="1.0" encoding="UTF-8"?>
<!--
1. This file will be used up by the DispatcherServlet and which contains the bean definition
2. The file will be picked up by the specification in the WEB-INF/web.xml using <servlet>spring</servlet>
3. hello controller is responsible for handling the request for the particular page of the website and known
as the page controller.
-->
<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="Redirect.jsp" class="SpringApp.web.java.HelloController"/>
</beans>
index1.jsp
---------
<%--
Document : index
Created on : Nov 23, 2012, 11:55:53 AM
Author : gopc
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
Redirect.jsp
------------
<%--
Document : index
Created on : Nov 23, 2012, 11:55:53 AM
Author : gopc
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello Controller redirect</title>
</head>
<body>
<h1>This is redirect from the HelloController!</h1>
</body>
</html>
HelloController.java
-------------------
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package java;
/**
*
* @author gopc
*/
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 HelloController implements Controller {
protected final Log logger = LogFactory.getLog(getClass());
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
logger.info("Returning hello view");
System.out.println("hi this handlerequest");
return new ModelAndView("Redirect.jsp");
}
}
You say:
This means Spring is expecting to find your controller in the package
SpringApp.web.java. You’ve put it in the packagejava.Change the
packagestatement in your controller to beSpringApp.web.java, and move the source file to the appropriate directorySpringApp/web/java.Note also that the package
javais reserved for the Java platform, so you shouldn’t be using it anyway.