• ベストアンサー

getRequestDispatcher

includeメソッドで処理を転送するプログラムを学習しようと思い、 exDispatcherServlet.javaとexDispatcherServlet2.javaの2つのファイルを作りました。 web-inf\classes配下に2つのクラスファイルを入れました。web.xmlファイルのservlet-classはexDispatcherServletを指定しました。 exDispatcherServlet.javaでは、 req.setAttribute("name", "java"); ServletContext sc = getServletContext( ); RequestDispatcher rd = sc.getRequestDispatcher("/exDispatcherServlet2"); rd.include(req, res); のようにexDispatcherServlet2.classファイルに送り、 exDispatcherServlet2.javaで PrintWriter out = res.getWriter( ); out.println("name : "); のようにしたのですが、exDispatcherServlet2の方のプログラムが反応なしです。 getRequestDispatcher WEB-INF¥classesで指定するURLはコンテキストルートからの絶対パスとのことだったので、WEB-INFと同じ場所にexDispatcherServlet2.classをおいてみたのですが、だめでした。 どのようにすればうまくいくでしょうか? 参考URLはこちらです。 http://www.javaroad.jp/servletjsp/sj_servlet7.htm よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

#1さんの言う通りweb.xmlの設定を見直してみてはいかがですか。 参考までに実際に実行して表示できた設定ファイルをアップします。 ※javaソースはダウンロードそのままでコンパイルしました。 [実行環境] Win 2000Pro sp4 Tomcat4.1.30 J2SDK1.4.2.03 ***** ${Application}/WEB-INF/web.xmlの例 **** <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>My Study Web Application</display-name> <filter> <filter-name>Set Character Encoding</filter-name> <filter-class>filters.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>MS932</param-value> </init-param> </filter> <filter-mapping> <filter-name>Set Character Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>exDispatcherServlet</servlet-name> <servlet-class>exDispatcherServlet</servlet-class> </servlet> <servlet> <servlet-name>exDispatcherServlet2</servlet-name> <servlet-class>exDispatcherServlet2</servlet-class> </servlet> <servlet-mapping> <servlet-name>exDispatcherServlet</servlet-name> <url-pattern>/exDispatcherServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>exDispatcherServlet2</servlet-name> <url-pattern>/exDispatcherServlet2</url-pattern> </servlet-mapping> </web-app> **** Tomcat4.1/conf/server.xmlのコンテキスト **** <Context path="/test" Base="C:\Study\testServlet" debug="0" reloadable="true" crossContext="true"> </Context>

azicyan
質問者

お礼

このような細かい指定が必要だったのですね。 ご丁寧に畏れ入ります。 大変参考になりました。

その他の回答 (2)

回答No.3

#2です。 設定ファイルを見ればわかると思いますが念のため Tomcat起動後アクセスURLは   http://Host_Name/test/exDispatcherServlet です。

azicyan
質問者

お礼

filterというタグははじめて知りました。 勉強が足りないようです。 申し訳ないです。

  • b-u-z-z
  • ベストアンサー率20% (1/5)
回答No.1

web.xmlファイルのservlet-classにexDispatcherServlet2も指定しないといけないのでは? 違ってたらすいません。

azicyan
質問者

お礼

そうだったのですね。 回答ありがとうございます。

関連するQ&A