電子書籍の厳選無料作品が豊富!

RequestDispatcherの使用方法について教えてください

doPostメソッドにて以下のロジックを実行しています。

public void doPost(HttpServletRequest req, HttpServletResponse res){
Strin uri= "/aaa/bbb/ccc/ddd.jsp";
RequestDispatcher dis = request.getRequestDispatcher(uri);
dis.foward(req, res);
return;
}

この処理でfowardのところからreturnに進まず再度doPost()がよばれてしまい
無限ループ状態になります。
RequestDispatcher に設定されている情報は以下です。
servletPath = "bbb";
pathInfo = "/aaa/bbb/ccc/ddd.jsp";

情報が足りていないとは思いますが
よろしくお願い致します。

A 回答 (2件)

全然違うじゃん笑



URLが「/aaaa/*」の場合はaaaaServletに飛ぶのですが、
doPost()でまた「/aaaa/…/dddd.jsp」とURLのパターンが「/aaaa/*」にマッチするURLに飛ばされるので
doPost()がまた呼ばれ、延々とループしているのだと思います。
    • good
    • 0
この回答へのお礼

なるほど…
URIが「/固定値/可変/・・・/固定値.do」となるため
url-patternを「/固定値/*」としていました。
「/固定値/*.do」 見たいな感じにできればいいのですが
できないっぽいですね><
他の対応方法を探してみます。

いろいろ教えて頂きありがとうございました。

お礼日時:2011/12/09 00:41

誤字脱字タイプミス多すぎ。


せめてコンパイルが通るコードのせなよ。
コンパイルエラーが出るコードが動きませんって言われてもね。
当然です。としか言えませんよ。

この回答への補足

pcbeginner様

誤字脱字申し訳ありません。
再度書き直させていただきます

ロジックは以下です。
public class aaaaServlet extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse res){
String uri= "/aaa/bbb/ccc/ddd.jsp";
RequestDispatcher dis = req.getRequestDispatcher(uri);
try {
dis.forward(req, res);
return;
} catch (Exception e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
}

web.xml側
<servlet-mapping>
<servlet-name>aaaa-bbbb</servlet-name>
<url-pattern>/aaaa/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>aaaa-bbbb</servlet-name>
<servlet-class>aaaaServlet</servlet-class>
</servlet>

以上です。
たびたびで申し訳ありませんが、よろしくお願いします。

補足日時:2011/12/08 16:32
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!