Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

<form method="POST" action="サーブレット名"で

今日は、
JSPファイルから<form>を使って、サーブレットにリクエストを渡す際、そのJSPの階層位置によって、action="〜以降を変える必要があるのでしょうか。
サーブレットはweb.xmlで正しく配備記述されていると思います。

仮にOutSideKickというルートのアプリケーションに、
内容が同じのnew.jspと言うファイルを2箇所に配置します。
new.jspでは
<form method="POST" action="サーブレットA(仮)" name="fm"などなど>とあります。
階層が、
OutSideKick
  + Web-INF
    + bbs
      + サーブレットA
  + contents
    + contents5
      + new.jsp -->2
  + new.jsp -->1

1の場合にはサーブレットAにアクセスでき、
2の場合は404エラーになります。
action="〜の部分をいろいろやってみたんですが、うまくいきません。
どうかご教授ください。
よろしくお願いします。

7

回答

18444

閲覧

7件の回答

評価

0

>1の場合にはサーブレットAにアクセスでき、
>2の場合は404エラーになります。
>action="〜の部分をいろいろやってみたんですが、うまくいきません。

1の場合はどうやって、2の場合はどうやったのでしょうか?

評価

0

>JSPの階層位置によって、action="〜以降を変える必要があるのでしょうか。
もちろんです。これはjsp以前に、HTMLとしての問題です(クライアントで表示される際には、jspかどうかは無関係です)。
actionに名前だけを書いた場合は、現在の階層からの相対パスになります。

評価

0

ひろちゃんさん
mioさん
ありがとうございます。
あくまでHTMLということで、
<form 〜 action="/OutSideKick/WEB-INF/classes/bbs/サーブレットA.java">
とルートを基準としたパスを書いたつもりでも、
上記のパスis not availableと404がでます。
やはりHTMLのきほんがなってないんでしょうか。
サーブレットへのパスを取得するメソッドがあると聞いたのでですが、もしあれば、この場合に応用できますでしょうか。

評価

0

> /OutSideKick/WEB-INF/classes/bbs/サーブレットA.java
.javaファイルを直接指定することはできません。
クライアントから見えるのは、あくまでserver.xmlで割り振られたURLです。

評価

0

mioさんありがとうございます。
URLは
WEB-INFないのweb.xmlで
<url-pattern>/サーブレットA</url-pattern>
と記述しています。
したがって、
/OutSideKick/WEB-INF/classes/bbs/サーブレットA
としてもだめでした。
なので、
../../サーブレットA
としたらどうもうまくいったみたいです。
でも、ほんとにこれでいいのか、と不安になったりしますが、
それと、
>server.xmlで割り振られたURLです。 
server.xmlをどのようにすればいいのでしょうか。
web.xmlでサーブレットをマッピングしていればよいということですよね。

評価

0

>../../サーブレットA
>としたらどうもうまくいったみたいです。
jspの階層がそこにあるからです。
階層が変わればここも変わってしまいます。
なので、ルートからのパスを指定すれば良いということになります。

>server.xmlをどのようにすればいいのでしょうか。
すみません、web.xmlの間違いです。

評価

0

mioさんありがとうございます。
すっきりと理解できました。
またよろしくおねがいします。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。