我有 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.dd
,plain
等等。但我有 404 错误。