0

我有 HttpServlet。它将用户重定向到不同的 jsp 页面,这取决于用户想要执行的操作。例如http://localhost:8080/collections/index.do重定向到 index.jsp。我像这样保存在 picocontainer 中的不同动作

<component-instance key="index">
    <com.epam.collections.web.IndexAction/>
</component-instance>

当用户在浏览器中写入以前的网址时 - 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返回null- 我有错误 500

另外,当我完全没有写某事时,我想重定向到此页面.do。例如ddd.ddplain等等。但我有 404 错误。

4

1 回答 1

0

1)要处理 404 错误,您需要在 web.xml 中设置 404 处理程序 2)您得到 500 错误,可能是您的 jsp 页面有问题,您需要仔细检查 jsp 代码 3)您使用 pico 的方式是一种反模式,检查 pico 文档

于 2013-06-28T10:57:48.040 回答