从 Web 应用程序中的 servlet 过滤器重定向到上一页
Posted
技术标签:
【中文标题】从 Web 应用程序中的 servlet 过滤器重定向到上一页【英文标题】:Redirect to previous page from servlet filter in web application 【发布时间】:2016-11-17 04:56:03 【问题描述】:我已经通过几个链接来了解我们如何从过滤器重定向到上一页。
我要做什么
有一个A.jsp
。单击提交后,它会转到一个过滤器来检查某些内容,如果有问题,它会将其发送回A.jsp
。
我尝试过的解决方案
我不能使用request.getHeader("referrer")
,因为我提交页面时 URL 发生了变化。所以它会第一次工作,但之后会失败。
在每个 jsp 中添加隐藏输入,这些输入将作为请求参数发送,我们可以在过滤器中使用它来发送回它。这可以工作,但由于 jsps 的数量很大,它需要在每个 jsp 页面中进行更改。
我有什么遗漏的吗?
有什么标准的方法来处理这种情况?
【问题讨论】:
请添加 A.jsp 的代码和您的过滤器,谢谢 @jr593:你读过这个问题吗?您的评论似乎是一个轻率的下意识的评论,一个人可能会在没有代码块的情况下发布每个问题。我没有看到所请求的信息将如何帮助以当前形式回答问题。它只会给问题添加更多无关紧要的混乱,使其回答的吸引力降低。 【参考方案1】:可能有更好的选择,但在没有其他答案的情况下,您可以使用 javascript 将隐藏的输入自动添加到每个表单中。如果您有任何 jsp-includes 用于在您的页面之间共享的内容,您可以添加一个带有如下功能的脚本标记:
window.onload = function()
for (var i = 0; i < document.forms.length; i++)
var form = document.forms[i];
(function(form)
form.addEventListener('submit', function(e)
var element = document.createElement('input');
element.setAttribute('type', 'hidden');
element.setAttribute('name', 'returnpage');
element.setAttribute('value', window.location);
form.appendChild(element);
);
)(form);
;
【讨论】:
感谢您的回答,但这或多或少类似于使用依赖于 url 的 request.getHeader("referer")。以上是关于从 Web 应用程序中的 servlet 过滤器重定向到上一页的主要内容,如果未能解决你的问题,请参考以下文章