如果JSP中的验证失败,则重新定向

如果JSP中的验证失败,则重新定向,jsp,Jsp,我正在使用下面的代码从页面中获取一些数据: int clientId = Integer.parseInt(request.getParameter("clientId")); 我尝试过用try/catch来包围它,然后使用response.sendRedirect(“page.jsp”)在catch块中重定向但是页面没有重新定向,它似乎想要完成整个脚本(这反过来会抛出更多错误,因为初始变量无效!)。我缺少一些基本的东西吗?您需要确保JSP页面上的所有scriptlet逻辑都是有条件的,这取决

我正在使用下面的代码从页面中获取一些数据:

int clientId = Integer.parseInt(request.getParameter("clientId"));

我尝试过用try/catch来包围它,然后使用
response.sendRedirect(“page.jsp”)在catch块中重定向但是页面没有重新定向,它似乎想要完成整个脚本(这反过来会抛出更多错误,因为初始变量无效!)。我缺少一些基本的东西吗?

您需要确保JSP页面上的所有scriptlet逻辑都是有条件的,这取决于“clientId”的存在,因此您的catch块可能需要深入到JSP页面的底部。请记住,JSP页面是编译成servlet的,因此您仍然需要确保代码可以编译。一般来说,我强烈建议您将此逻辑放在一个单独的类(例如,控制器类)中,并尽量减少JSP页面上的scriptlet代码量。否则很难维持


如果这对您来说还不清楚,请发布您的整个JSP代码,以便我们能够确定建议的位置。

您需要确保JSP页面上的所有scriptlet逻辑都是有条件的,这取决于“clientId”的存在,因此您的catch块可能需要转到JSP页面的底部。请记住,JSP页面是编译成servlet的,因此您仍然需要确保代码可以编译。一般来说,我强烈建议您将此逻辑放在一个单独的类(例如,控制器类)中,并尽量减少JSP页面上的scriptlet代码量。否则很难维持


如果这对您来说还不清楚,请发布您的整个JSP代码,以便我们能够确定建议的位置。

您可能缺少
返回
语句(尽管我没有看到您的代码):


如果只调用
sendRedirect(..)
这将设置
位置
http头和http状态,但不会影响当前方法的流,它将继续。

您可能缺少
return
语句(尽管我看不到您的代码):


如果您只需调用
sendRedirect(..)
,这将设置
位置
http头和http状态,但不会影响当前方法的流,它将继续。

读取服务器日志。我的分文是,它充斥着
IllegalStateException
s。有关更多详细信息,请参见

不要滥用JSP作为页面控制器。由于JSP本身就是响应的一部分,因此您不能再从JSP内部对其进行更改(好的,有一些hacks/workarounds,但您不想使用hacks/workarounds)。要控制请求/响应,您应该使用servlet。创建一个servlet,让它监听某个URL,让表单提交到该URL,让servlet执行JSP中的所有Java代码,并最终控制响应目标


你可以在我们的网站上找到一个Hello World的例子。它还包括基本验证。

阅读服务器日志。我的分文是,它充斥着
IllegalStateException
s。有关更多详细信息,请参见

不要滥用JSP作为页面控制器。由于JSP本身就是响应的一部分,因此您不能再从JSP内部对其进行更改(好的,有一些hacks/workarounds,但您不想使用hacks/workarounds)。要控制请求/响应,您应该使用servlet。创建一个servlet,让它监听某个URL,让表单提交到该URL,让servlet执行JSP中的所有Java代码,并最终控制响应目标


你可以在我们的网站上找到一个Hello World的例子。它还包括基本的验证。

btw,这段代码是在JSP中还是在Servlet中?在.JSP页面中。这种回归;顺便说一句,这段代码是在JSP中还是在Servlet中?在.JSP页面中。这种回归;似乎是他们干的。
response.sendRedirect(..);
return;