0

web.xml でのサーブレット マッピングの代わりに、次のように注釈を使用してサーブレットを URL にマップしようとしています。

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "GuestbookServlet", urlPatterns = "/guestbook")
public class GuestbookServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws IOException {
        resp.setContentType("text/plain");
        resp.getWriter().println("Hello, world");
    }
}

また、web.xml でサーブレットの 3.0 仕様を宣言しました。

<?xml version="1.0" encoding="UTF-8"?>
<web-app
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0"
    metadata-complete="false">

</web-app>

ただし、ローカル環境で実行すると、返される応答は 404 です。

ただし、web.xml でサーブレットをマップするだけで機能します。私は何を間違っていますか?GAE はまだ 3.0 仕様をサポートしていませんか?

4

3 に答える 3

5

サーブレット 3.0 仕様は GAE/J でサポートされていません

まだロードマップにあります: https://developers.google.com/appengine/docs/features#roadmap_features

この機能へのサポートを示すために、この問題にスターを付けることができます: https://code.google.com/p/googleappengine/issues/detail?id=3091

ただし、このチケットは長い間開かれています。

于 2013-06-22T06:20:40.993 に答える
0

次の JSP コードを実行すると、

Server info == <%=application.getServerInfo()%><br/>
Major==<%=application.getMajorVersion()%><br/>
Minor==<%=application.getMinorVersion()%><br/>
JSP version is <%= JspFactory.getDefaultFactory().getEngineInfo().getSpecificationVersion()%><br/>

そうですか

サーバー情報 == Google App Engine/Google App Engine/1.8.1 Major==2 Minor==5 JSP バージョンは 2.1

自分で実行できます。

于 2013-06-22T03:42:10.267 に答える
0

AppEngine で Servlet 3.1 がサポートされるようになりました。

...更新された JDK と Jetty 9 と Servlet 3.1 仕様のサポートに加えて...

お知らせ: https://cloudplatform.googleblog.com/2017/06/Google-App-Engine-standard-now-supports-Java-8.html

これがコード例です

于 2017-11-04T22:24:29.477 に答える