Gopal
Gopal

Reputation: 795

Spring Controller servlet redirect not happends

i had created a simple Spring framework, where controller (springapp dispatcherservlet redirect to the view) but it does not redirecting to the view..

i am getting the view of index1.jsp , could not able to get the view of Redirect.htm/jsp

here is my code..

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.htm" class="HelloController"/>

</beans>

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>

Redirect.hml

<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE html>
<html>
    <head>
        <title>Hello Controller redirect</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <div>This is redirect from the HelloController!</div>
    </body>
</html>

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>

HelloController.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @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("inside controller");
        return new ModelAndView("Redirect.jsp");
    }

}

Upvotes: 0

Views: 1520

Answers (1)

Raju Rudru
Raju Rudru

Reputation: 1132

First I'll answer the question why you are getting index1.jsp as view. It will show you the view of index1.jsp when you run the application, why because you have specified index1.jsp in your welcome file list in web.xml. You will not be able to get Redirect.jsp, because you did not configure a view resolver in your SpringApp-servlet.xml. Add following bean to your SpringApp-servlet.xml

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
   <property name="prefix" value="/WEB-INF/jsp/"/>
   <property name="suffix" value=".jsp"/>
</bean>

In prefix property you have to give the path where your Redirect.jsp file is located (I am assuming in /WEB-INF/jsp folder). In suffix property you have to specify the extension of the view to be resolved.

Change the statement

return new ModelAndView("Redirect.jsp"); 

to

return new ModelAndView("Redirect");

Run your application and access your application with request /Redirect.htm

It should work now. Hope this helps.

Be sure to read the spring reference manual at http://static.springsource.org/spring/docs/2.5.x/reference/view.html

Upvotes: 1

Related Questions