0

私は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.jsppicocontainer にアクションがない場合にユーザーをページに転送したい。たとえば、一部はページ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.ddplainなどですが、404エラーが発生しました。

4

1 に答える 1

0

1) 404 エラーを処理するには、web.xml で 404 ハンドラーをセットアップする必要があります 2) 500 エラーが発生しました。これはおそらく jsp ページに何か問題があるためです。jsp コードを注意深く確認する必要があります 3) pico の使用方法はアンチパターンです、 pico docs を確認してください

于 2013-06-28T10:57:48.040 に答える