アプリ版:「スタンプのみでお礼する」機能のリリースについて

環境: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/ForwardServ …

アクセスすると、

type ステータスレポート
メッセージ /basic/dispatch/ForwardServlet2
説明 The requested resource (/basic/dispatch/ForwardServlet2) is not available.

が表示されてしまいます。
何度も最初から作り直しては、見直しをしましたが
エラーになる原因をつかむことができない状態です。
間違い、不足している箇所がありましたら、ご指摘の程お願い致します。

A 回答 (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を構成できるだけの情報をあげんといけん。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/03/16 19:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!