I've got HttpServlet. It redirects user to different jsp pages, depends on action user want to do.
For example http://localhost:8080/collections/index.do
redirects to index.jsp.
Different action I keep in picocontainer like this
<component-instance key="index">
<com.epam.collections.web.IndexAction/>
</component-instance>
When user write previous url in browser -
1) I get action name - index
String name = getActionName(req);
2) Get action from picocontainer
Action action = (Action) pico.getComponentInstance(name);
3) Perform action - return string which represents jsp page name
String view = action.exec(req, resp);
where exec method is
public String exec(HttpServletRequest req, HttpServletResponse resp) {
return "index";
}
4) Forward user to index.jsp page
getServletContext().getRequestDispatcher(
"/WEB-INFO/pages/" + view + ".jsp").forward(req, resp);
I want to forward user to page notfound.jsp
when there is not action in picocontainer. For example some blabla.do
should return notfound.jsp
page. But when I do like this
if (action == null) {
getServletContext().getRequestDispatcher(
"/WEB-INF/jsp/notfound.jsp").forward(req, resp);
return;
}
because getComponentInstance
returns null
when action does not exist in xml file - I've got error 500
Also I want to redirect to this page when I write sth without .do
at all. For example ddd.dd
, plain
and etc. But I've got 404 error.