• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:TOMCATサーブレットの呼び出し方について)

TOMCATサーブレットの呼び出し方について

このQ&Aのポイント
  • TOMCATサーブレットの呼び出し方に関する疑問について説明します。
  • TOMCATサーブレットの呼び出し方の変更について詳しく知りたい場合は、web.xmlでurl-patternをどのように定義するかに注意する必要があります。
  • web.xmlでurl-patternを定義していないサーブレットは、特定のディレクトリにあるサーブレットを呼び出すことができない可能性があります。

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

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

質問の通りすべてのサーブレットをweb.xmlに登録する必要があります。昔というのはたぶん4.1.11では、登録する必要がなかったことを指していると思います。現在ではデフォルトではinvoker servletは使用出来ないためです。(セキュリティーのため)

yukimura1024
質問者

補足

早速の回答ありがとうございます!すごい助かりました(^^ でもまたもうひとつ問題が発生してしまいました(TT <servlet> <servlet-name>MainShow</servlet-name> <servlet-class>app.Main/show</servlet-class> </servlet> <servlet-mapping> <servlet-name>MainShow</servlet-name> <url-pattern>/app.Main/show</url-pattern> </servlet-mapping> のようにパス付き?での呼び出しが出来ません。。。 String path = request.getPathInfo(); if (path.equals("/show")){ ... ↑昔はサーブレットでこういう感じにパスを取ってそれをもとに処理を振り分けていたのですが、今では出来ないのでしょうか? 2度質問しちゃってすみません(TT

その他の回答 (2)

回答No.3

申し訳ないですが、わかりません。 私ならsessionを使います。

yukimura1024
質問者

お礼

私もセッションがいいと思いそうすることにしました(^^; 何度も丁寧に回答していただきありがとうございました(^^

回答No.2

パス付きでも特に問題はなく、大丈夫なはずです。 はじめの<servlte-class>のところをshowにしてみたらいかがでしょうか。これだとパッケージの中に入っていない状態です。今の設定ではきちんとパッケージの中に入っていますか?<url-pattern>は基本に何でも大丈夫なはずです。 <servlet> <servlet-name>MainShow</servlet-name> <servlet-class>show</servlet-class> </servlet> <servlet-mapping> <servlet-name>MainShow</servlet-name> <url-pattern>/app.Main/show</url-pattern> </servlet-mapping> request.getPathInfo()がnullになってしまうはweb.xmlを使う以上しょうがないのではないと思うのですが、自信はありません。 何がやりたいのかいまいちわかりませんが、getHeader()メソッドではだめなのですか。

yukimura1024
質問者

補足

回答ありがとうございます(^^ 現在はappパッケージにMainクラスがありましてそのMainクラスでrequest.getPathInfo()を使い"show"という文字列を取得させたいので、 <servlet> <servlet-name>MainShow</servlet-name> <servlet-class>>/app.Main</servlet-class> </servlet> <servlet-mapping> <servlet-name>MainShow</servlet-name> <url-pattern>/app.Main/show</url-pattern> </servlet-mapping> web.xmlに↑のように記述して、ブラウザからは http://localhost:8080/test/app.Main/show と入力することで呼びだしには成功したのですが、後ろに/showとパスをつけているにもかかわらず request.getPathInfo()ではnullが帰ってきてしまいました(>< サーブレットを呼び出すときに何らかの手段で文字列を与えて、それによって処理を分岐させたいので、このやり方が出来ないなら(もしくはあまりよくないやり方なら)sessionに文字列を放り込んでそれで処理を分岐しようかとも考えています。 getHeader()メソッドについては調べてみて、 String head = request.getHeader("ServletPath"); と試してみましたがこちらもnullが帰ってきます(TT