Reputation: 3134
I'm using Jetty 8.1.4 with Spring 3.2.4. Following is my web.xml file. I have an index.html file under WEB-INF and I want that page to be hit when I do http://myapp.com/ or simple http://myapp.com but I'm getting 404. If I do http://myapp.com/index.html it works. I'm not sure what I'm missing. Also, I'm bit confused if I must use / or /* in the url-pattern below, I tried both.
<?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>
Upvotes: 1
Views: 3545
Reputation: 169
Firstly, Your servlet mapping config of spring is not right , it will mapping all thing and link to spring , this means that *.jsp would be handled by spring. So You Should fix this flaw config. But after doing this, it still would not be right to access the welcome page. this is a character of Jetty.
I Must Say: there is some difference between tomcat and jetty. Tomcat can handle this with right behaviour but jetty not.
You can try to verify by below step.
Upvotes: 0
Reputation: 3134
I added below to my servlet.xml to make this work. Agree with @Joakim Erdfelt answer that request went to spring. But not sure how directly entering index.html in url worked.
<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>
Upvotes: 0
Reputation: 3
i think placing you welcome file at the start will help you to load the file.To be precise place it after the display tag
Upvotes: -1
Reputation: 49555
Jetty 8 is EOL (End of Life), upgrade to Jetty 9. (The answer here is provided based on how Jetty 9 operates.)
The <welcome-file-list>
is part of the DefaultServlet
handling (per servlet spec).
Your declaration of myappname
at <url-pattern>/*</url-pattern>
is effectively preventing the DefaultServlet
from doing anything.
Your configuration has basically said "send all requests to my DispatcherServlet".
This even includes static file serving, welcome-file handling, default handling, error handling, dispatching, and much much more.
As for what url pattern to choose, that's up to you.
There are many ways to use Spring, your current configuration at /*
is just as valid as others that have it at *.do
or *.dispatch
or /dispatch/*
You have to decide what is best for your webapp, and adjust your internal use of Spring to satisfy your needs (such as how you declare your RequestMapping's)
Now that you know why <welcome-file-list>
isn't working, you can make adjustments to either not use the standard servlet <welcome-file-list>
(using something internally in Spring), or adjust your dispatcher servlet url pattern to allow the servlet container (Jetty) to serve your static files and handle your declared <welcome-file-list>
.
Upvotes: 2