重定向到自定义未找到的jsp页面

时间:2013-06-26 13:09:51

标签: java servlets picocontainer

我有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);

我想在picocontainer中没有操作时将用户转发到页面notfound.jsp。例如,某些blabla.do应返回notfound.jsp页面。但是当我喜欢这个时

if (action == null) {
        getServletContext().getRequestDispatcher(
                "/WEB-INF/jsp/notfound.jsp").forward(req, resp);
        return;
    }

因为getComponentInstance在xml文件中不存在操作时返回null - 我有错误500

另外,当我写完没有.do的时候,我想重定向到这个页面。例如ddd.ddplain等等。但我有404错误。

1 个答案:

答案 0 :(得分:0)

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