struts関連 web.xmlに複数の<servlet-mapping>を記述する方法について
初歩的なことなのかもしれませんが質問させてください。
Struts1.3.5での質問なのですが、web.xmlにURLパターンを複数記述している場合に
servlet-mapping の記載位置が後の方のURLパターンが、
JSPのFormタグで生成されるパスに設定されてしまい、原因が分からず困っています。
現象としては、
例えば、web.xmlの<servlet-mapping>にそれぞれ異なる
URLパターンを[/abc/*]→[/xyz/*]の順で記述している場合、
web.xml(抜粋)----------------------------------------------
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/abc/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/xyz/*</url-pattern>
</servlet-mapping>
----------------------------------------------------------
URLパターンが[/abc/*]となる以下のURLをブラウザで表示した所、
[https:/localhost/{コンテキストルート}/abc/LoginAction]
表示されたJSP内で指定しているformタグのアクションパスが
web.xmlで記載したURLパターンのパスではなく、
web.xmlで後の方に記載した別のURLパターンのパス(/xyz/)が設定されてしまいます。
・表示されるJSP内で指定しているアクションパス
<html:form action="/LoginAction">
上記で生成されるHTML
<form name="LoginForm" method="post" action="/コンテキスト名/xyz/LoginAction">
web.xmlでURLパターンを[/xyz/*]→[/abc/*]の順で記述した場合は、
正しくURLパターンで記述したパスが設定されます。
<form name="LoginForm" method="post" action="/コンテキスト名/abc/LoginAction">
ただし、この場合はURLパターンが[/xyz/*]のURLを表示した場合に
<form ~ action="/{コンテキストルート}/abc/LoginAction">となってしまいます。
どなたかこうした現象について回避策をご存知の方はいらっしゃらないでしょうか?
No.2ベストアンサー
- 回答日時:
<servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>servlet.TestServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>init</servlet-name>
<url-pattern>/abc/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>reference</servlet-name>
<url-pattern>/xyz/*</url-pattern>
</servlet-mapping>
このように、サーブレット名を切り分けてみてはどうでしょうか?
web.xml内の他の要素からも参照されるため、
サーブレット名は他と重複しない名前をつけないとだめです。
ご回答ありがとうございます。
Apacheのユーザガイドに複数の<servlet-mapping>要素を定義した場合にはフレームワークが正しく動作しない恐れがある旨の記述がされていました。(struts に限った事では無い様ですが。。)
・http://struts.apache.org/1.3.5/userGuide/configu …
(1.2.9の同ユーザガイドには、strutsと明記されていました。)
どうやら、strutsでは複数の<servlet-mapping>には対応していないようです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JSPからServletへの遷移
-
[Servlet]ページ表示に関して
-
Eclipseで、プロジェクト名のと...
-
html上で、バッチやexeファイル...
-
split関数で区切り文字がない場合
-
eclipseでスタックサイズを変更...
-
classファイルについて
-
.jarファイルの中身って書き換...
-
Javascriptの値をJava(JSP)へ渡...
-
JSPのクラスをコンパイルできな...
-
マイクラjavaでForgeを入れたい...
-
正しいURL指定しているにもかか...
-
SVFの設定について:クラスパス...
-
「満桁」について
-
ACCESSでタイトルバーを非表示...
-
「ワークスペースをビルド中」...
-
Eclipseでクラスファイルが生成...
-
Eclipseのアンインストールの仕方
-
タグが閉じてないというエラー...
-
Eclipse・プロジェクトで、フォ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JSPからServletへの遷移
-
JSPからサーブレットを呼び出す...
-
servlet (resin) について
-
list<クラス名> とは何でしょう...
-
tomcatコマンドプロンプトのエ...
-
eclipseで作ったサーブレットの...
-
【Servletのエラーについて教え...
-
Servletが動かない
-
サーブレットが起動しない
-
ServletでJNIを利用するには
-
RequestDispatcherオブジェクト...
-
tomcatとapacheの連携
-
HTTPステータス 404 - /servlet...
-
eclipse でjspからJavaを実行す...
-
WEB開発をはじめたばかりの初心...
-
DB接続しようと思ったら下記の...
-
[Servlet]ページ表示に関して
-
サーブレットインスタンスを割...
-
サーブレットの構成が上手く行...
-
eclipseでwarの入れ子
おすすめ情報