我有servlet,根据传入的URL执行不同的代码:
if (URIstring.startsWith("/categories")) {
//process request and send it to categories.jsp
} else if (URIstring.startsWith("/projects")) {
//process request and send it to projects.jsp
}
应用程序从 / context / categories url开始,然后转到第一个 if 。 在类别页面上,使用表单,我允许用户选择类别。用户选择类别后,对servlet的响应就像
/projects?category=1
接下来我想捕获异常,当用户而不是数字使用字符串或字母时(在 else中生成 NumberFormatException ,如果(URIstring.startsWith(“/ projects”))部分。我想以下列方式处理此异常:如果servlet接收到类似
的smth/projects?category=string
捕获异常,将其重定向回类别页面但具有属性集,如
error="You entered wrong input! Try again."
在 categories.jsp 文件中
<c:out value="${error}"/>
在这种情况下,只有在抛出异常的情况下才会显示此行。但是如何在属性集的两个jsps( if 构造函数的部分)之间重定向。我只找到了
else if (URIstring.startsWith("/projects")) {
try {
//process request and send it to projects.jsp
} catch (NumberFormatException e) {
resp.sendRedirect("/context/categories");
}
}
重定向到所需 if 部分和 JSP 但没有我的错误属性((我试过:
req.setAttribute("error", "You entered wrong input! Try again.");
但它适用于projects.jsp,而不适用于重定向的jsp((((p>
答案 0 :(得分:0)
resp.sendRedirect
将终止当前请求并将302重定向发送回客户端。您忘记了在服务器端对请求设置的任何属性。
您需要做的是服务器端重定向,可以使用RequestDispatcher.forward
方法完成。 java doc