- ベストアンサー
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 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#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>
その他の回答 (2)
- goldchildren
- ベストアンサー率62% (10/16)
#2です。 設定ファイルを見ればわかると思いますが念のため Tomcat起動後アクセスURLは http://Host_Name/test/exDispatcherServlet です。
お礼
filterというタグははじめて知りました。 勉強が足りないようです。 申し訳ないです。
- b-u-z-z
- ベストアンサー率20% (1/5)
web.xmlファイルのservlet-classにexDispatcherServlet2も指定しないといけないのでは? 違ってたらすいません。
お礼
そうだったのですね。 回答ありがとうございます。
お礼
このような細かい指定が必要だったのですね。 ご丁寧に畏れ入ります。 大変参考になりました。