我正在使用Jersey实现Restful Web Service。我想将index.jsp显示为欢迎页面。
<%@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>
我在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>
问题在于用户模式是这样的:
<url-pattern>/*</url-pattern>
除欢迎页面外,一切正常。我感谢任何帮助。
答案 0 :(得分:5)
我找到了另一种方法。而不是使用index.jsp,我可以使用类似的类:
@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> ";
}
在web.xml中我不需要使用:
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
它适用于:
<url-pattern>/*</url-pattern>
答案 1 :(得分:3)
servlet映射调用你的servlet。如果你想创建一个主页,那么你不应该给servlet提供/ *,因为它会重叠。
当您的网址格式为/whatever
时,您的servlet将在localhost:8080/myApp/whatever
下运行,并且主页将包含Localhost:8080/myApp
。但是,当您将网址格式定义为/*
时,您的servlet和主页都具有相同的位置。因此,请删除您的servlet映射或将其赋予/*