• 締切済み

HTTPステータス404表示されてしまう

環境:Eclipce3.2、Tomcat5.5.2、JDK1.5.0_11を使用。 ○サーブレットプログラム package dispatch; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class ForwardServlet2 extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request , HttpServletResponse response) throws ServletException , IOException { PrintWriter out = response.getWriter(); out.println("Hello by Eclipse"); } } ○web.xmlの内容は以下の通り <web-app> <!-- JSPC servlet mappings start --> <servlet> <servlet-name>ForwardServlet2</servlet-name> <servlet-class>dispatch.ForwardServlet2</servlet-class> </servlet> <servlet-mapping> <servlet-name>ForwardServlet2</servlet-name> <url-pattern>/ForwardServlet2</url-pattern> </servlet-mapping> <!-- JSPC servlet mappings end --> </web-app> アクセスはhttp://localhost:8080/basic/dispatch/ForwardServlet2 アクセスすると、 type ステータスレポート メッセージ /basic/dispatch/ForwardServlet2 説明 The requested resource (/basic/dispatch/ForwardServlet2) is not available. が表示されてしまいます。 何度も最初から作り直しては、見直しをしましたが エラーになる原因をつかむことができない状態です。 間違い、不足している箇所がありましたら、ご指摘の程お願い致します。

みんなの回答

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 まず考えられる可能性は、 http://localhost:8080/basic/ForwardServlet2 でアクセスすると見えるかも知れないという事かな。 パッケージdispatchはあくまでJava側の話であって、コンテキストパスからの相対URLには何の関係もない。ここで、コンテキストパスとは/basicの事だ。もちろん、コンテキストパスが/basic/dispatchである可能性もあるが、それはあなたにしか分からない。TomcatのどこにそのWebアプリケーションをデプロイしたかが問題だ。 web.xmlの中では、servletタグによってフルクラス名(dispatch.ForwardServlet2)にForwardServlet2という名前をつけ、servlet-mappingタグによって名前をつけたForwardServlet2を/ForwardServlet2という「コンテキストパスからの相対パス」でアクセスできるようにしているんだ。だから、そのEclipseのプロジェクトにindex.jspを置いてみて、それが http://localhost:8080/basic/inde.jsp でアクセスできるのであれば、サーブレットには http://localhost:8080/basic/ForwardServlet2 でアクセスする事になる。 説明が不足している箇所は、Tomcatのどこ(どんなコンテキストパス名)に君が作ったWebアプリをデプロイしているか、だな。URLが間違っている、という場合は、質問を受けている人がURLを構成できるだけの情報をあげんといけん。

KGM
質問者

お礼

返信ありがとうございます。 教えていただきました手順を試し、理解をすることができました。 コンテキストパスへの理解が弱かったことが原因でしたので、 今後はここを中心に勉強していきます。 ありがとうございます

関連するQ&A

専門家に質問してみよう