我有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.dd
,plain
等等。但我有404错误。
答案 0 :(得分:0)
1)处理在web.xml中设置404处理程序所需的404错误 2)你有500错误,因为你的jsp页面可能有问题,你需要仔细检查jsp代码 3)你使用pico的方式是反模式,检查微微文档