带有属性

时间:2015-08-01 20:11:01

标签: java jsp servlets redirect

我有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(((

1 个答案:

答案 0 :(得分:0)

resp.sendRedirect将终止当前请求并将302重定向发送回客户端。您忘记了在服务器端对请求设置的任何属性。

您需要做的是服务器端重定向,可以使用RequestDispatcher.forward方法完成。 java doc