私はHttpServletを持っています。ユーザーが実行したいアクションに応じて、ユーザーを別の jsp ページにリダイレクトします。たとえばhttp://localhost:8080/collections/index.do
、index.jsp にリダイレクトします。このようにピココンテナに入れておく別のアクション
<component-instance key="index">
<com.epam.collections.web.IndexAction/>
</component-instance>
ユーザーがブラウザに以前の URL を書き込むと - 1) アクション名を取得します -index
String name = getActionName(req);
2) picocontainer からアクションを取得する
Action action = (Action) pico.getComponentInstance(name);
3) アクションを実行 - JSP ページ名を表す文字列を返す
String view = action.exec(req, resp);
exec メソッドの場所
public String exec(HttpServletRequest req, HttpServletResponse resp) {
return "index";
}
4) ユーザーを転送するindex.jsp page
getServletContext().getRequestDispatcher(
"/WEB-INFO/pages/" + view + ".jsp").forward(req, resp);
notfound.jsp
picocontainer にアクションがない場合にユーザーをページに転送したい。たとえば、一部はページblabla.do
を返す必要がありnotfound.jsp
ます。しかし、私がこのようにすると
if (action == null) {
getServletContext().getRequestDispatcher(
"/WEB-INF/jsp/notfound.jsp").forward(req, resp);
return;
}
アクションがxmlファイルに存在しないときにgetComponentInstance
返されるため、エラー500が発生しましたnull
また、何もせずにsthを書くときにこのページにリダイレクトしたいです.do
。たとえばddd.dd
、plain
などですが、404エラーが発生しました。