سؤال

My project worked very well before i add a controller which extends the AbstractController, then I always get the famous 404 page when i try to open the "/" root page. I integrated spring-security in my project so i must see the login form automatically when i open "/" page or see the index if i have already loged in.

this is my dispatcher servlet:

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



    <context:component-scan base-package="gestion.delegation.controller" />
    <mvc:annotation-driven />

 <bean class="org.springframework.web.servlet.view.XmlViewResolver">
       <property name="location">
           <value>/WEB-INF/spring-pdf-views.xml</value>
       </property>
       <property name="order" value="0" />
    </bean>

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



</beans>    

here is the controller :

import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.ServletRequestUtils;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

public class RevenueReportController extends AbstractController{

    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest request,
        HttpServletResponse response) throws Exception {

        String output =
            ServletRequestUtils.getStringParameter(request, "output");



        if(output ==null || "".equals(output)){
            //return normal view
            return new ModelAndView("RevenueSummary");

        }else if("PDF".equals(output.toUpperCase())){
            //return excel view
            return new ModelAndView("PdfRevenueSummary");

        }else{
            //return normal view
            return new ModelAndView("RevenueSummary");

        }   
    }   
}

Web.xml

<?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>GestionPersonnel</display-name>
  <!-- Spring MVC -->

    <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>

    <servlet>
        <servlet-name>default</servlet-name>

        <servlet-class>
            org.apache.catalina.servlets.DefaultServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>

    </servlet>

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.css</url-pattern>
    <url-pattern>*.png</url-pattern>
     <url-pattern>*.gif</url-pattern>
    <url-pattern>*.js</url-pattern>
     <url-pattern>*.htm</url-pattern>
</servlet-mapping>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/Dispatcher-servlet.xml,
            /WEB-INF/spring-datasource.xml,
            /WEB-INF/spring-security.xml,
            /WEB-INF/spring-service.xml
        </param-value>
    </context-param>

    <!-- Spring Security -->
    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>



</web-app>

also i can never get the page mapped by this abstactController. please is my dispatcher file correct ?? I want to do the same as what said in this question : genereate a pdf ... but i don't know where is the error .please help..........

هل كانت مفيدة؟

المحلول

Don't extend AbstractController, just annotate using org.springframework.stereotype.controller

eg :

@Controller
@RequestMapping(value = "/")
public class RevenueReportController
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top