- PR -

getRequestDispatcherについて

1
投稿者投稿内容
takasaki
常連さん
会議室デビュー日: 2002/02/14
投稿数: 31
投稿日時: 2002-10-30 11:57
こんにちは

servlet-jsp-beanで開発を行っています。

servletからjspにforwardするときのRequestDispatcherは
ServletContextとServletRequestのどちらから取得するのが
よいのでしょうか。

ServletRequestでは相対パスしか指定できない、とのことですが
それ以外になにかパフォーマンスの違いはありますか?

また[Java Servlet 徹底解説]で

ServletContext ctx = null;
public void init(ServletConfig config) {
synchronized(this) {
if(ctx == null) {
ctx = config.getServletContext();
}}}

とされているのは、このサーブレットが初期化されたときの
サーブレット設定情報を1回だけ取得するための処理、と理解しているのですが、
servletRequest.getRequestDispatcher()と
servletContext.getRequestDispatcher()で異なるRequestDispatcherが
返されることがあるのでしょうか。

ご教授よろしくおねがいします。
amnaky
ベテラン
会議室デビュー日: 2002/09/13
投稿数: 75
お住まい・勤務地: 東京
投稿日時: 2002-10-30 13:26
servlet2.3の仕様書を参照しましたところ
RequestDispatcherについては、パスの指定の仕方以外の
差異については言及されていませんでした。
どっちがどうということはないんじゃないでしょうか。
あとはコンテナ次第でしょうね。

Struts1.0.2ではServletContextから取っています。
takasaki
常連さん
会議室デビュー日: 2002/02/14
投稿数: 31
投稿日時: 2002-10-30 13:55
amnakyさんありがとうございます。

当方はapache-tomcatなんですが、ある書籍のサンプルでは
RequestDispatcher rd = getServletContext().getRequestDispatcher();
となっており、あるサイトでは
RequestDispatcher rd = rquest.getRequestDispatcher();
となっていました。

とりあえず「Java Servlet 徹底解説」に習っておこう、と思いますが
またなにかご報告できればしたいと思います。ありがとうございました。
ひろ
常連さん
会議室デビュー日: 2001/12/13
投稿数: 36
投稿日時: 2002-10-30 16:09
ServletRequest.getRequestDispatcher()
の方はそのサーブレットが属しているコンテキストの外部のリソースは指定できなくて、

ServletContext.getRequestDispathcher()
の方はServletContextのgetContext()メソッドによって外部のコンテキストを取得すれば外部リソースのRequestDispatcherも取得できるという違いじゃないでしょうか。

1

スキルアップ/キャリアアップ(JOB@IT)