0

私は経験豊富な j2ee 開発者ではないので、完全に基本的なものや明白なものが欠けている場合は、あらかじめご容赦ください。

私は Tomcat 7 を使用しています。プロジェクトは、tomcat7-maven-pluginプラグインとredeployゴールを使用して tomcat インスタンスにデプロイされpom.xmlます。ビルドはエラーなしで動作します。唯一の奇妙な点は、名前#の末尾に..warmytest#.war

サーブレット コードは非常に単純です。デバッグ情報を出力し、GET 要求に対して文字列で応答するだけです。

初期部分は正常に動作します。次のマッピング情報を出力します(正しいと思います):

Path=/mytest/                      //this is context path
StupidServlet[/stupid]             //this line and following ones are registrations
jsp[*.jsp, *.jspx]
default[/]

ただし、リクエストしようとするとhttp://localhost:8080/mytest/stupid、Tomcat から 404 メッセージが表示されます。Index.jsp も 404 であり、ルートは無効なリダイレクトを返します (少なくとも firefox はそれを伝えます)。

私のweb.xmlファイルは、Servlet 3.0標準に対応するために、ここのいくつかの回答から取られています:

<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"/>

サーブレット コード:

@WebServlet(name = "StupidServlet", loadOnStartup = 1, urlPatterns = {"/stupid"})
public class StupidServlet extends javax.servlet.http.HttpServlet {

    @Override
    public void init() throws ServletException {
        super.init();
        System.out.print("This is STUPID INIT FROM SERVLET!!!!");
        Map servlets =  getServletContext().getServletRegistrations();
        System.out.println("\n===REGISTRATIONS==="+getServletContext().getServletContextName());
        System.out.println("Path="+getServletContext().getContextPath());

        for(String key:servlets.keySet()){
            ServletRegistration servlet = servlets.get(key);
            System.out.println(""+key+servlet.getMappings());
        }
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("STUPID REQUEST IS DONE");
        super.doGet(req, resp);
        resp.getOutputStream().println("My name is Stupid Servlet");
        resp.flushBuffer();

    }
}
4

1 に答える 1

0

答えを見つける前に、私は一歩あきらめたようです。

このデバッグ出力行

Path=/mytest/                     //this is context path

説明を保留します。コンテキスト パスは、末尾の で終わってはなりません/ これも配備された戦争の最後に署名する理由です#(ファイル名でサポートされていない記号は # に変換されるようです)。ただし、末尾/が無視されない理由はわかりません。私には欠陥のように見えます。

だから私はtomcat7-maven-plugin構成を変更し、次のように置き換え/mytest/ました/mytest:

<configuration>
    <url>http://localhost:8080/manager/text</url>
    <server>tomcat7</server>
    <path>/mytest</path>
</configuration>

そして、マッピングの問題を修正しました。

コンテキストパスを印刷すると、

Path=/mytest                     //this is context path

405@BalusC のおかげで、構成の変更後に受け取ったものに対処する方法がわかりました。

于 2013-10-10T15:15:52.723 に答える