- ベストアンサー
TOMCATサーブレットの呼び出し方について
- TOMCATサーブレットの呼び出し方に関する疑問について説明します。
- TOMCATサーブレットの呼び出し方の変更について詳しく知りたい場合は、web.xmlでurl-patternをどのように定義するかに注意する必要があります。
- web.xmlでurl-patternを定義していないサーブレットは、特定のディレクトリにあるサーブレットを呼び出すことができない可能性があります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
質問の通りすべてのサーブレットをweb.xmlに登録する必要があります。昔というのはたぶん4.1.11では、登録する必要がなかったことを指していると思います。現在ではデフォルトではinvoker servletは使用出来ないためです。(セキュリティーのため)
その他の回答 (2)
- kabutorikikori
- ベストアンサー率50% (4/8)
申し訳ないですが、わかりません。 私ならsessionを使います。
お礼
私もセッションがいいと思いそうすることにしました(^^; 何度も丁寧に回答していただきありがとうございました(^^
- kabutorikikori
- ベストアンサー率50% (4/8)
パス付きでも特に問題はなく、大丈夫なはずです。 はじめの<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()メソッドではだめなのですか。
補足
回答ありがとうございます(^^ 現在は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
補足
早速の回答ありがとうございます!すごい助かりました(^^ でもまたもうひとつ問題が発生してしまいました(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