如何部署Web应用程序?

时间:2012-12-13 22:38:50

标签: java-ee tomcat jetty java-ee-6

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

根据this,我所要做的就是:

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。相反,我得到一个页面,其中包含2个名为META-INF和WEB-INF的链接,这些链接将导致404页。

我担心我错过了一些我应该在这里做的事情,遗憾的是我在网上找到的所有内容都是代码片段,这些代码片段直接跳到“现在将整个内容打包为Web应用程序......”和码头文档似乎假设我已经知道一个Web应用程序是什么样子的(并且似乎主要关注各种配置选项,如果我真的得到了该死的东西,我实际上可能会给你一个废话。)< / p>

我应该做些什么才能让它发挥作用?

修改

更改了标题,因为虽然我最初使用Jetty 9进行了测试,但它也无法与Tomcat 7一起使用,但问题基本相同 - 显然应用程序已被识别(显示在管理器中)但是servlet看起来并不像工作(如果它被使用)。我现在非常沮丧。

1 个答案:

答案 0 :(得分:1)

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

你似乎也错过了战争中的web.xml文件

我们似乎得到了相当多的问题,所以我会看到默认情况下启用注释,虽然它们使启动时间长得多,但需要的是因为大多数人都不打扰它们似乎为什么惩罚大家......我们会考虑一下。

[edit] imo如果你刚开始,你最好学习一下注释背后的细节,比如如何在web.xml中配置servlet ...注释只是在servlet-api之上有点神奇了/ p>