Titel sagt alles wirklich. Ich habe ein kleines Spring-Web-Projekt, das beim Start in meinem Browser redirect.jsp
öffnen soll. Dies sollte mich durch einen Standardcontroller zu home.jsp
schicken. Das Problem ist, es tut es nicht. Stattdessen öffnet es automatisch eine Standardindexseite in meinem Browser. Die angezeigte Indexseite existiert in meinem Projekt nicht, hat den Titel "Starting Page" und zeigt nur eine Kopfzeile mit "Hello World". Seltsamerweise ist die URL in meinem Browser nur localhost:port/projectrootfolder
und nicht localhost:port/projectrootfolder/home.htm
oder etwas ähnliches.Warum lädt mein Spring-Webprojekt beim Start nicht die richtige Seite?
Meine Projektstruktur
root
|...
|Web pages
| |WEB-INF
| | |jsp
| | | |home.jsp
| |dispatcher-servlet.xml
| |web.xml
|redirect.jsp
Mein Dispatcher-servlet.xml
<?xml version='1.0' encoding='UTF-8' ?>
<!-- was: <?xml version="1.0" encoding="UTF-8"?> -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
<!-- Specify that this dispatcher works with by spring annotations-->
<mvc:annotation-driven conversion-service="conversionService"/>
<context:component-scan base-package="com.exevan.ipweb.controller" />
<!-- Spring bean that maps url's to controllers -->
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="home.htm">homeController</prop>
</props>
</property>
</bean>
<!-- Spring bean that converts logical view name to view location -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/"
p:suffix=".jsp" />
<!-- Index controller -->
<bean name="homeController" class="org.springframework.web.servlet.mvc.ParameterizableViewController"
p:viewName="home" />
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean id="dateToStringConverter" class="com.exevan.ipweb.converter.DateToStringConverter"/>
<bean id="stringToDateConverter" class="com.exevan.ipweb.converter.StringToDateConverter"/>
<bean id="idToPublisherConverter" class="com.exevan.ipweb.converter.IdToPublisherConverter"/>
</list>
</property>
</bean>
</beans>
Mein web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" 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">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.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>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>redirect.jsp</welcome-file>
</welcome-file-list>
</web-app>
Mein redirect.jsp
<%--
Views should be stored under the WEB-INF folder so that
they are not accessible except through controller process.
This JSP is here to provide a redirect to the dispatcher
servlet but should be the only JSP outside of WEB-INF.
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<% response.sendRedirect("/home.htm"); %>
Ihre Umleitung auf myredorect.jsp ist home.htm – LearningPhase
Es sollte/home – LearningPhase
Sollte sein/home sein, wie der Controller die Zuordnung es zu umleiten haben würde to home.jsp – LearningPhase