Reputation: 9994
I am implementing a Restful Web Service using Jersey. I want to show index.jsp as welcome page.
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Rest Page</title>
</head>
<body>
<h1>Rest is working!</h1>
</body>
</html>
It works fine when I use this code in my web.xml:
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/whatever/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
The problem is when the user-pattern is like this:
<url-pattern>/*</url-pattern>
Everything works fine except welcome page. I appreciate Any help.
Upvotes: 3
Views: 7654
Reputation: 9994
I found an alternative way to do this. instead of using index.jsp, I can use a class like:
@Path("/")
public class Hello {
// This method is called if HTML is request
@GET
@Produces(MediaType.TEXT_HTML)
public String sayHtmlHello() {
return "<html> " + "<title>" + "Rest Page" + "</title>"
+ "<body><h1>" + "REST is Working!" + "</body></h1>" + "</html> ";
}
In web.xml I do not need to use:
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
And it works fine with:
<url-pattern>/*</url-pattern>
Upvotes: 5
Reputation: 6487
Well servlet mapping calls your servlet. If you want to create a homepage then you should not give /* to the servlet because it will overlap.
When your url pattern is /whatever
your servlet will run under localhost:8080/myApp/whatever
and and homepage will have Localhost:8080/myApp
. However whn you define your url pattern as /*
both your servlet and home page have tha same place. So remove your servlet mapping or give it a different place other than /*
Upvotes: 3