0

ドキュメントのクイックスタート セクションによると、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 を取得することを期待します。代わりに、404 ページにつながる META-INF と WEB-INF という 2 つのリンクを含むページを取得します。

残念ながら、ここでやるべきことを見逃しています。残念ながら、オンラインで見つけることができるのは、「すべてをWebアプリケーションとしてパッケージ化する...」にジャンプするコードスニペットだけであり、jettyのドキュメントは私はすでに Web アプリケーションがどのように見えるかを知っていると仮定します (そして、さまざまな構成オプションに主に関心があるようです。そもそも実際に機能するようになった場合、実際にはがらくたを与えるかもしれません)。

それを機能させるために何をすべきですか?

編集

最初に Jetty 9 でこれをテストしましたが、Tomcat 7 でも動作せず、本質的に同じ問題が発生したため、タイトルを変更しました。アプリケーションは認識されているようですが (マネージャーに表示されます)、サーブレットは動作していないようです (まったく使用されている場合)。この時点でかなりイライラしています。

4

1 に答える 1

1

jetty-8 と jetty-9 はサーブレット 3.0 をサポートしていますが、start.ini で注釈スキャンが有効になっていることを確認し、そのファイルを編集して、OPTIONS 行に「annotations」を追加し、jetty-annotations.xml 行のコメントを解除する必要があります。

また、戦争で web.xml ファイルが欠落しているようです

私たちはこの質問をかなり受けているようですので、デフォルトで注釈を有効にすることについて見ていきます. .ちょっと考えてみます。

[編集] もしあなたが始めたばかりなら、web.xml でサーブレットを設定する方法のような注釈の背後にある詳細を学ぶ方が良いでしょう...注釈は servlet-api の上にあるちょっとした魔法です

于 2012-12-14T14:42:45.497 に答える