0

根据文档中的快速入门部分,somewar.war 文件位于默认配置中,部署为 localhost:8080/somewar/。

据此我所要做的就是:

package de.swt1321.servlet;

import java.io.OutputStream;
import java.io.IOException;

import javax.servlet.annotation.WebServlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(urlPatterns={"/","/index.html"}, loadOnStartup=1)
public class ServletTest extends HttpServlet {
    private static final java.nio.charset.Charset UTF8 = java.nio.charset.Charset.forName("UTF8");

    @Override
    protected void doGet(HttpServletRequest req,
                          HttpServletResponse res) throws ServletException, IOException
    {
        byte[] HTML = "<html><head><title>Hello World!</title></head><body><h1>IT WORKED!</h1></body></html>".getBytes(UTF8);
        res.setStatus(HttpServletResponse.SC_OK);
        res.setHeader("content-type","text/html;charset=utf8");
        res.setIntHeader("content-length",HTML.length);
        OutputStream os = res.getOutputStream();
        os.write(HTML);
        os.flush();
    }
}

除了他方便地从“创建类”到“部署项目”。这就是我卡住的地方——显然我做错了什么。我正在使用 buildr 将整个东西打包成一场战争,最终得到这样的结果:

ServletTest.war:
META-INF -> MANIFEST.MF
WEB-INF -> 
  classes -> 
          de ->
             swt1321 ->
                  servlet->
                      ServletTest.class
  lib -> javaee-web-api-6.0.jar

将其放入 webapps 文件夹中,我希望从我的响应中获取 html。相反,我得到一个页面,其中包含两个名为 META-INF 和 WEB-INF 的链接,它们指向 404 个页面。

恐怕我错过了我应该在这里做的事情,不幸的是,我在网上能找到的只是代码片段,这些代码片段直接跳转到“现在然后将整个东西打包为一个 Web 应用程序......”并且码头文档似乎假设我已经知道 Web 应用程序的外观(并且似乎主要关注各种配置选项,如果我真的要让该死的东西首先工作,我实际上可能会胡说八道)。

我应该怎么做才能让它工作?

编辑

更改了标题,因为虽然我最初使用 Jetty 9 进行了测试,但它也不适用于 Tomcat 7,基本上存在相同的问题 - 显然应用程序已被识别(显示在管理器中)但 servlet 似乎不起作用(如果它正在被使用)。在这一点上我很沮丧。

4

1 回答 1

1

jetty-8 和 jetty-9 支持 servlet 3.0,但您必须确保在 start.ini 中启用注释扫描,编辑该文件,将“注释”添加到 OPTIONS 行并取消注释 jetty-annotations.xml 行

你似乎在你的战争中缺少一个 web.xml 文件

我们似乎对这个问题有相当多的了解,所以我会看到默认情况下启用注释,尽管它们使启动时间比需要的长得多,因为大多数人不理会它们,所以为什么要惩罚每个人.. .我们会考虑一下。

[编辑] imo,如果您刚开始,最好学习注释背后的细节,例如如何在 web.xml 中配置 servlet ...注释只是 servlet-api 之上的一点魔法

于 2012-12-14T14:42:45.497 回答