而不是web.xml中的servlet映射,我正在尝试使用注释将servlet映射到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中声明了servlet的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中映射servlet,它就可以工作。我究竟做错了什么? GAE仍然不支持3.0规格吗?
答案 0 :(得分:5)
GAE / J
不支持Servlet 3.0规范它仍然在路线图上:https://developers.google.com/appengine/docs/features#roadmap_features
您可以解决此问题,以帮助显示您对此功能的支持:https://code.google.com/p/googleappengine/issues/detail?id=3091
这张票已经开了一段时间了。
答案 1 :(得分: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 主要== 2 次要== 5 JSP版本是2.1
你可以自己运行它。
答案 2 :(得分:0)
AppEngine现在支持Servlet 3.1。
...除了支持更新的JDK和带有Servlet 3.1规范的Jetty 9 ......
公告: https://cloudplatform.googleblog.com/2017/06/Google-App-Engine-standard-now-supports-Java-8.html