私はJavaサーブレットを記述するのはまったく初めてで、簡単にHelloWorld
の例を正しく動作させるのに苦労しています。
HelloWorld.Javaクラスは次のとおりです。
package crunch;
import Java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("Hello World");
}
}
私はTomcat v7.0を実行していますが、servlet-mapping
のinvoker
web.xml
セクションの変更に関する回答とともに、同様の質問をすでに読んでいます。このセクションは実際には存在しません。追加しても同じ問題が発生しました。
これを試してください(Java EE V6の場合)
package crunch;
import Java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
@WebServlet(name="hello",urlPatterns={"/hello"})
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("Hello World");
}
}
http://127.0.0.1:8080/yourapp/hello
でサーブレットに到達します
8080はデフォルトのTomcatポートであり、yourappはアプリケーションのコンテキスト名です
サーブレットを何らかのURLにマップする必要があります。 Java EE 6(少なくともServlet API 3.0を意味する)を使用する場合、次のようにサーブレットに注釈を付けることができます。
@WebServlet(name="helloServlet", urlPatterns={"/hello"})
public class HelloWorld extends HttpServlet {
//rest of the class
次に、localhost:8080/yourApp/hello
に移動すると、値が表示されます。 Servlet 3.0 APIを使用できない場合、このサーブレットをweb.xml
ファイルに登録する必要があります。
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>crunch.HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
Java EE 7を使用すると、Javaサーブレットを簡単に記述できます
@WebServlet("/hello-world")
public class HelloWorld extends HttpServlet {
@Override
public void doGet(HttpServletRequest request,
HttpServletResponse response) {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("Hello World");
out.flush();
}
}
サーブレット3.0以降
良いニュースは、デプロイメント記述子が不要になったことです!
Java Servlets のチュートリアルを読んでください。
これは、WebContentフォルダーではなくWEB-INFで.jspまたは.htmlファイルを作成したことが原因である可能性があります。
解決策:WEB-INFフォルダーにあるファイルをWebcontentフォルダーに置き換えて、同じものを実行してください-適切な出力が得られます
アクションattrで../../projectName/Filename.jspを使用する必要があります。またはhref
../ =現在のフォルダーsimple(demo.project.filename.jsp)が含まれています
サーブレットは、プロジェクト名の前にスラッシュを1つ付けてのみ呼び出すことができます。
Java EE 7および動的Webモジュール3.xで「要求されたリソースが利用できません」で立ち往生している場合、これが役立つ可能性があります。Eclipseの「サーブレットの作成」ウィザードtサーブレットクラスの@ Pathアノテーションを作成しますが、公開されたパブリックメソッドに正常にアクセスするには、それを含める必要がありました。