web-dev-qa-db-ja.com

サーブレットを実行しようとするとHTTPステータス404エラーが発生する

実行しようとしている単純なサーブレットHello.Javaに問題があります。 Eclipseで作成し、ファイルをwebapps/ServletTest/WEB-INF/classesフォルダーに配置してコンパイルし、同じフォルダーにファイルHello.classを作成しました。次に、web.xmlファイルを変更してサーブレットをマップし、次のアドレスで実行しようとしました。

http://localhost:8080/ServletTest/Hello

ただし、これは機能せず、次のエラーが発生します

HTTPステータス404-

タイプステータスレポート

メッセージ

説明要求されたリソースは利用できません。ApacheTomcat/ 7.0.42

Web.xmlファイルのマッピングは次のようになります。

<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>Main.Hello</servlet-class>
</servlet>  

<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/Hello</url-pattern>
</servlet-mapping> 

サーブレットのコード:

package Main;
import Java.io.IOException;
import Java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/Hello")
public class Hello extends HttpServlet {
private static final long serialVersionUID = 1L;
public Hello() {
super();
 }

protected void doGet(HttpServletRequest request, HttpServletResponse                   

response)  throws ServletException, IOException {
    PrintWriter out = response.getWriter();
    response.setContentType("text/html");
    String path = request.getContextPath();
    String ip = request.getRemoteAddr();
    out.print("<html>" +
    "<title>Hello</title>" +
            "Hello World"+ "<br>" +
    "Your ip is: " + ip + "<br>" +
    "Your path is: " + path
    + "</html>");       
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)   

throws     ServletException, IOException {

}

}
3

コンパイルされたHello.classファイルはフォルダにあるはずです

webapps/ServletTest/WEB-INF/classes/Main

パッケージMainに含まれていると宣言されているためです。

また、Tomcatの起動ログは/logs/catalina.outまたは/logs/catalina.logで確認できます。


また、Sureshはコメントに正しく含まれています。<servlet>宣言または@WebServletのいずれかを使用してください。両方を使用しないでください。

Web.xmlを削除してみてください。 Tomcat 7+には、注釈@WebServlet("/Hello")で十分です。

2

ルートフォルダに適切な権限がない場合、この問題が発生します。したがって、ルートフォルダのプロパティを確認し、読み取り専用のアクセス許可を削除して、[セキュリティ]タブでユーザーをフルアクセスアクセス許可に追加してください。

1
Arun Attukal