我在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模式中使用/或/ *,我会感到困惑,我都尝试了。
<?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是EOL(寿命终止) ,升级到Jetty9。(此处的答案是根据Jetty 9的操作方式提供的。)
这<welcome-file-list>是DefaultServlet处理的一部分(根据servlet规范)。
<welcome-file-list>
DefaultServlet
您对myappnameat的声明<url-pattern>/*</url-pattern>有效地阻止了at DefaultServlet做任何事情。
myappname
<url-pattern>/*</url-pattern>
您的配置基本上说“将所有请求发送到我的DispatcherServlet”。
这甚至包括静态文件服务,欢迎文件处理,默认处理,错误处理,分派等等。
至于选择哪种网址格式,则取决于您。
有使用Spring的方法很多,在当前的配置/*是一样有效,其他人都在它*.do或*.dispatch或/dispatch/*
/*
*.do
*.dispatch
/dispatch/*
您必须确定最适合您的Web应用的内容,并调整Spring在内部的使用以满足您的需求(例如,如何声明RequestMapping)
现在您知道了为什么<welcome-file-list>不起作用,您可以进行调整以不使用标准servlet <welcome-file- list>(在Spring内部使用),或者调整分派器servlet url模式以允许servlet容器(Jetty)为您的静态文件提供服务,处理您申报的<welcome-file-list>。
<welcome-file- list>