Eclipse wikiで説明されているように、「JettyとMavenを使用した標準WebApp」を正確に作成するための指示に従いました: http:// wiki.Eclipse.org/Jetty/Tutorial/Jetty_and_Maven_HelloWorld#Developing_a_Standard_WebApp_with_Jetty_and_Maven
しかし、webapp(mvn jetty:run)を実行してlocalhost:8080/hello-world/helloにアクセスすると、「/ hello-world/helloにアクセスするHTTP ERROR 404 Problem。Reason:Not Found」が発生します。私はドキュメントを読み、wikiページの履歴を見て、他のフォーラムやstackoverflowスレッドをざっと見ましたが、この一見単純な問題に対する答えを見つけることができません。ソースを投稿しますが、それは文字通りチュートリアルと同じです。
任意の助けいただければ幸いです。私は本当にこのテクノロジーをいじり始めたいのですが、同じ行き止まりに激突し続けるのはがっかりします。
(注意:「JettyMavenHelloWorld」を作成するチュートリアルの最初の部分は問題なく機能します。私の問題は2番目の部分「JettyMavenHelloWarApp」です。このセクションのタイトルは「JettyとMavenを使用した標準WebAppの開発」です)
JettyMavenHelloWarApp/pom.xml
<project xmlns="http://maven.Apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>hello-world</artifactId>
<version>0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Jetty HelloWorld</name>
<properties>
<jettyVersion>7.2.0.v20101020</jettyVersion>
</properties>
<dependencies>
<dependency>
<groupId>org.Eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>${jettyVersion}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<!-- This plugin is needed for the servlet example -->
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${jettyVersion}</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution><goals><goal>Java</goal></goals></execution>
</executions>
<configuration>
<mainClass>org.example.HelloWorld</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
JettyMavenHelloWarApp/src/main/Java/org/example/HelloServlet.Java
package org.example;
import Java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloServlet extends HttpServlet
{
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html");
response.setStatus(HttpServletResponse.SC_OK);
response.getWriter().println("<h1>Hello Servlet</h1>");
response.getWriter().println("session=" + request.getSession(true).getId());
}
}
JettyMavenHelloWarApp/src/main/webapp/WEB-INF/web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<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_2_5.xsd"
version="2.5">
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>org.example.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/hello/*</url-pattern>
</servlet-mapping>
</web-app>
JettyMavenHelloWarApp/src/main/webapp/index.html
<h1>Hello World Webapp</h1>
<a href="/hello">Hello Servlet</a>
チュートリアルで誤ったURLが表示される-アプリのコンテキストが「/」のままなので、URLはhttp://localhost:8080
およびhttp://localhost:8080/hello
は、静的コンテンツと動的コンテンツのそれぞれに対応します。
Maven Jettyプラグインのドキュメントでは、デフォルトのコンテキストはpom.xmlのArtifactIdと同じ名前が付けられると主張していますが、ここでは機能していないようです。
私は同じ問題に遭遇し、私のために働いたのは次のようなアプリにアクセスすることでした:http://localhost:8080/hello/index.jsp
またはhttp://localhost:8080/hello/index.html
、htmlまたはjsページを使用しているものは何でも。
実行しないと思いますmvn package
の前のタスクmvn jetty:run
それが突堤が何の情報源も見ない理由です。とにかく走れ mvn package
最初。
基本的な構成で同じ問題が発生しました。
私はSpring 3 MVCでこの設定(web.xml内)のエラーページをリダイレクトしたいと思いました
<error-page>
<error-code>404</error-code>
<location>/WEB-INF/views/error.html</location>
</error-page>
error.htmlの拡張子をerror.jspに変更することで解決します。
Pomのjettyプラグイン定義に構成を追加すると、コンテキストパスがhello-worldに変更されるはずです。
<plugin>
<groupId>org.Eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${jettyVersion}</version>
<configuration>
<webApp>
<contextPath>/hello-world</contextPath>
</webApp>
</configuration>
</plugin>
これはjettyバージョン9に基づいています。設定オプションについては http://wiki.Eclipse.org/Jetty/Feature/Jetty_Maven_Plugin を参照してください。
サーブレットのマッピングが正しくないか不十分です。
<url-pattern>/hello/*</url-pattern> // does not respond to "/hello"
URLパターン "/ hello"のマッピングを追加する必要があります
<url-pattern>/hello</url-pattern>