我在Spring 3.2.4中使用Jetty 8.1.4。以下是我的web.xml文件。我在WEB-INF下有一个index.html文件,我希望在我http://myapp.com/或简单http://myapp.com时点击该页面,但我得到404.如果我http://myapp.com/index.html它作品。我不确定我错过了什么。另外,如果我必须在下面的url-pattern中使用/或/ *,我有点困惑,我试过了。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
id="DOMAINAPPROVALGUI" version="2.4"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>myapp-ui</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/myapp-servlet.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<session-config>
<session-timeout>10</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>myappname</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>myappname</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
答案 0 :(得分:2)
Jetty 8 is EOL (End of Life),升级到Jetty 9.(这里的答案是根据Jetty 9的运作方式提供的。)
<welcome-file-list>
是DefaultServlet
处理(每个servlet规范)的一部分。
您myappname
<url-pattern>/*</url-pattern>
的声明有效阻止DefaultServlet
做任何事情。
您的配置基本上已经说“将所有请求发送到我的DispatcherServlet”。
这甚至包括静态文件服务,欢迎文件处理,默认处理,错误处理,调度等等。
至于选择哪种网址模式,这取决于你。
使用Spring的方法有很多,/*
的当前配置与*.do
或*.dispatch
或/dispatch/*
您必须决定什么是最适合您的webapp,并调整您对Spring的内部使用以满足您的需求(例如您如何声明RequestMapping)
既然你知道为什么<welcome-file-list>
不起作用,你可以调整不使用标准servlet <welcome-file-list>
(在Spring内部使用某些东西),或者调整你的调度程序servlet url模式允许servlet容器(Jetty)提供静态文件并处理声明的<welcome-file-list>
。
答案 1 :(得分:0)
我在下面添加到我的servlet.xml中以使其工作。同意@Joakim Erdfelt回答该请求到了春天。但不确定如何直接在url中输入index.html。
<mvc:view-controller path=”/” view-name=”index” />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/" />
<property name="suffix" value=".html" />
</bean>
答案 2 :(得分:0)
首先,您的spring的servlet映射配置不正确,它将映射所有内容并链接到spring,这意味着* .jsp将由spring处理。因此,您应该修复此缺陷配置。但是这样做之后,仍然无法访问欢迎页面。这是码头的特征。
我必须说:Tomcat和码头之间有一些区别。 Tomcat可以通过正确的行为来处理此问题,但跳船则不能。
您可以尝试通过以下步骤进行验证。
答案 3 :(得分:-1)
我认为在开始时放置欢迎文件将帮助您加载文件。准确地将它放在显示标记之后