根据文档中的快速入门部分,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 似乎不起作用(如果它正在被使用)。在这一点上我很沮丧。