2016-05-17 17 views
0

Hier ist die web.xml laden:Unable Standardindexseite im Frühjahr mvc

<?xml version="1.0" encoding="UTF-8"?> 

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
     version="3.1"> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 

    <display-name>BulkSMS2</display-name> 
    <welcome-file-list> 
     <welcome-file>index.jsp</welcome-file> 
     <welcome-file>index.html</welcome-file> 
    </welcome-file-list> 

    <servlet> 
     <servlet-name>BulkSMS2</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value> 
       /WEB-INF/BulkSMS2-servlet.xml 
      </param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>BulkSMS2</servlet-name> 
     <url-pattern>/*</url-pattern> 
    </servlet-mapping> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/BulkSMS2-servlet.xml</param-value> 
    </context-param> 

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

Dispatcher-servlet.xml:

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

    <context:component-scan base-package="com.nt.beans" /> 
    <mvc:annotation-driven /> 

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

Und wenn ich die app laufen lasse, erhalte ich 404-Fehler . Ich habe die index.jsp Datei innerhalb WEB-INF/pages/index.jsp Ordner platziert, aber immer noch bekomme ich den gleichen Fehler. Ich habe alle Konfigurationen überprüft und bin mir nicht sicher, warum es die Seite nicht findet.

+0

Wie greifen Sie auf die Indexseite zu? Geht die Anfrage über einen Controller? Wenn dies der Fall ist, geben Sie den Controller-Code ein. –

+0

@ekemchitsiga Es ist eine statische Seite – Satyadev

+0

Wenn Sie eine Indexseite wollen, muss es direkt zugänglich sein. Alles unter WEB-INF ist nicht zugänglich. Sie müssen das 'index.jsp' direkt in das Stammverzeichnis Ihrer Web-App einfügen. Auch ein kurzer Tipp, dass Sie Ihre Anwendung im Grunde zweimal laden (sowohl der ContextLoaderListener als auch der DispatcherServlet laden die gleiche Konfiguration, laden grundsätzlich alles zweimal). –

Antwort

0

Es gibt ein paar Konfigurationsprobleme mit Ihrer Anwendung hinzufügen. Erstens, wie Sie Ihren Anwendungskontext spezifizieren. Aus Ihrer Konfiguration scheint es, dass Sie einen Anwendungskontext BulkSMS2-servlet.xml haben. Daher benötigen Sie den Stammanwendungskontext nicht. So entfernen Sie diesen Abschnitt in Ihrem web.xml

<context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/BulkSMS2-servlet.xml</param-value> 
    </context-param> 

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

Zweite Ausgabe ist mit Ihrem URL-Mapping/*. Es überschreibt alle Servlet-Mappings, einschließlich der jsp-Behandlung, die vom Container bereitgestellt wird. Dies bedeutet, dass alle Anfragen einschließlich Anfragen für jsps von Ihrem DispatcherServlet bearbeitet werden. Ändern Sie diesen Teil

BulkSMS2 /*

Um BulkSMS2 /

Dieser den Container Standard-Servlet-Handler überschreibt aber außer Kraft setzen keine speziellen Behälter Servlets. So behandeln statische Ressourcen, um die folgende Zeile in BulkSMS2-servlet.xml hinzufügen

<mvc:default-servlet-handler/> 

Um Ihre index.jsp Zugriff als statische Ressource, die Sie benötigen sie im Root-Webapp Ordner außerhalb der WEB-INF-Ordner zu setzen. Allerdings, wenn Sie von einer Steuerung gehandhabt werden sie in WEB-INF-Ordner dann Ihre Anfrage

@RequestMapping("/") 
public class HomeController{ 

    @RequestMapping() 
    public String showHomePage(){ 
    return "index"; 
    } 
} 
+0

, so kann ich auch interne Sicht Resolver entfernen? dieser Teil: ' /WEB-INF/pages/ .jsp ' – Satyadev

0

Versuchen unter Methode in Ihrem Controller

@RequestMapping(value = "/", method = RequestMethod.GET) 
    public String indexPage(ModelMap model) { 

     return "index"; 

    } 
0

Ok, ordnen Sie die DispatcherServlet zu /* so wird es erhalten die leere Servlet-Pfad / behalten wollen soll.

Die einfachste Möglichkeit (IMHO) besteht darin, den Block <welcome-file-list> in der Datei web.xml zu entfernen, um einfach einen leeren Servlet-Pfad als Standardadresse zu übergeben: er wird von Spring-MVC verarbeitet.

Dann fügen Sie einfach ein SimpleUrlHandlerMapping hinzu, um die Standard-URL einem ParameterizedViewController zuzuordnen, der nur Ihre Ansicht anzeigt.

So in der Dispatcher-Servlet-Kontext, fügen Sie die folgenden Bohnen:

<bean id="indexController" p:viewName="index" 
    class="org.springframework.web.servlet.mvc.ParameterizableViewController"/> 
<bean id="simpleUrlHandlerMapping" 
     class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
    <property name="mappings"> 
     <value> 
      /=indexController 
     </value> 
    </property> 
</bean> 

Aber Sie haben ein Problem in der web.xml-Datei. Sie verwenden dieselbe Datei zum Initialisieren des Stammkontexts (oberste Ebene <context-param> Block) und DispatcherServlet eine (<servlet><init-param> Block).Sie enden also mit zwei verschiedenen Instanzen jeder einzelnen Bean, zuerst im Root-Kontext, später im ersten. Das kann zu seltsamen und schwer zu erkennenden Problemen führen ... Kurzgeschichte: tue das nicht.