2013-04-05 2 views
3

Надеюсь, вы сможете помочь, потому что, насколько я вижу, это правильно настроено (но, пожалуйста, подтвердите, что я ошибаюсь).Spring MVC 3 Файл приветствия Web.xml (index.jsp) не отображается 404

У меня есть моя весна 3 MVC проект настроен следующим образом:

web.xml

<servlet> 
    <servlet-name>myServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>myServlet</servlet-name> 
    <url-pattern>/frontPage</url-pattern> 
</servlet-mapping> 

<welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/myServlet-service.xml</param-value> 
</context-param> 

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

И myServlet-servlet.xml

<mvc:annotation-driven /> 
<context:component-scan base-package="my.path.to.controllers" /> 

<bean 
    class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" /> 
<bean 
    class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> 

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

У меня есть index.jsp в пределах WEB -INF (не WEB-INF/views), который делает не что иное, как «Hello» (изначально я пытался его переслать в/frontPage).

Теперь, если я набираю url для контроллеров (localhost: 8080/myServlet/frontPage), контроллер работает, и представление отображается, однако при первом запуске я получаю 404 вместо index.jsp стр. Я попытался добавить ведущую косую черту index.jsp, но это не имеет никакого значения.

Я, должно быть, что-то сделал ошибку школьника, но я не могу, чтобы жизнь меня видна где. Может ли кто-нибудь указать мне на это?

Spring MVC 3.2 Tomcat 6 работает в STS 2.9.1 сервлет 2.5

Большое спасибо.

+0

btw Неправильно поставить переднюю (или конечную) косую черту '/' перед (или после) элементом списка файлов приветствия. См. Этот ответ для получения дополнительной информации об определении списка файлов приветствия: http://stackoverflow.com/a/15533844/814702 – informatik01

ответ

11

Папка WEB-INF недоступна публично. Таким образом, вы должны поставить свой index.jsp где-то доступный, например, в корневую папку веб-приложения.

/mywebapp 
    /WEB-INF/ 
    /index.jsp 
+0

О, мое слово! Не могу поверить, что я был таким глупым! Сказал, что это была ошибка школьника (есть несколько часов в моей жизни, я не вернусь). Я шел так скрещенными глазами, что не заметил, где это. Я попытался проголосовать за ваш ответ, но у меня недостаточно очков (извините). Большое спасибо. – Scribe74

+0

, пожалуйста, рассмотрите вопрос о ответе как принятом. – Dani

+0

@ Scribe74 Здесь вы идете. Теперь у вас достаточно очков)) – informatik01

0

В случае конфигурации Java вы можете переопределить два метода в классе, который расширяет WebMvcConfigurerAdapter

@Override 
public void addViewControllers(ViewControllerRegistry registry) { 
    registry.addViewController("/").setViewName("/index"); 
} 

@Override 
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
    configurer.enable(); 
} 

Если вы хотите служить index.html в явном виде, превратить его в ресурс переопределить метод в том же классе как показано ниже:

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    registry.addResourceHandler("/index.html").addResourceLocations("/WEB-INF/views/index.html"); 
} 

конечно addResourceLocations обязательно следует папку Выбирается для хранения ваших взглядов.

См these samples

-1

Это самое происходит, когда вы только начинаете. Просто поставьте index.html (или что-то еще, что может приветствовать файл) в WEB-INF. Это можно сделать легко с помощью простого перетаскивания. Когда вы расширяете папки в STS, может показаться, что файлы приветствия перечислены в разделе WEB-INF, пока они на самом деле нет. enter image description here

Смежные вопросы