我正在使用 Jetty 8.1.4 和 Spring 3.2.4。以下是我的 web.xml 文件。我在 WEB-INF 下有一个 index.html 文件,我希望在执行 http://myapp.com/ 时点击该页面。或简单http://myapp.com但我得到了 404。如果我这样做 http://myapp.com/index.html有用。我不确定我错过了什么。另外,我有点困惑是否必须在下面的 url 模式中使用/或/*,我都尝试了。
<?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>
最佳答案
Jetty 8 is EOL (End of Life) ,升级到Jetty 9。(这里的答案是根据Jetty 9的运行方式提供的。)
<welcome-file-list>
是 DefaultServlet
的一部分处理(根据 servlet 规范)。
您的myappname
声明在<url-pattern>/*</url-pattern>
有效防止 DefaultServlet
不做任何事。
您的配置基本上是“将所有请求发送到我的 DispatcherServlet”。
这甚至包括静态文件服务、欢迎文件处理、默认处理、错误处理、调度等等。
至于选择哪种 url 模式,由您决定。
使用Spring的方式有很多种,你当前的配置在/*
与 *.do
中的其他人一样有效或*.dispatch
或/dispatch/*
您必须决定什么最适合您的网络应用程序,并调整 Spring 的内部使用以满足您的需求(例如如何声明您的 RequestMapping)
现在你知道为什么了 <welcome-file-list>
不起作用,您可以进行调整以不使用标准 servlet <welcome-file-list>
(在 Spring 内部使用某些内容),或者调整您的调度程序 servlet url 模式以允许 servlet 容器 (Jetty) 为您的静态文件提供服务并处理您声明的 <welcome-file-list>
.
关于java - 欢迎文件列表在 jetty + Spring 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28459947/