3

私はJerseyを使用してRestfulWebサービスを実装しています。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>

ウェルカムページを除いて、すべて正常に動作します。助けてくれてありがとう。

4

2 に答える 2

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>
于 2012-07-09T15:41:45.870 に答える
3

サーブレットマッピングはサーブレットを呼び出します。ホームページを作成する場合は、サーブレットに/ *を指定しないでください。これは、重複するためです。

URLパターンがである場合/whatever、サーブレットはで実行されlocalhost:8080/myApp/whatever、ホームページにはがありLocalhost:8080/myAppます。/*ただし、サーブレットとホームページの両方が同じ場所にあるため、URLパターンを定義する場合。したがって、サーブレットマッピングを削除するか、サーブレットマッピング以外の場所を指定してください/*

于 2012-07-09T14:36:07.067 に答える