从 web 应用程序中的 servlet 过滤器重定向到上一页
Redirect to previous page from servlet filter in web application
我浏览了几个链接以了解我们如何从过滤器重定向到上一页。
我正在尝试做什么
有一个A.jsp
。单击提交后,它会转到检查某些内容的过滤器之一,如果有问题,它会将其发送回 A.jsp
。
我尝试过的解决方案
我不能使用request.getHeader("referrer")
,因为URL在我提交页面时发生了变化。所以它会第一次工作,但之后会失败。
在每个 jsp 中添加隐藏输入,它将作为请求参数发送,我们可以在过滤器中使用它来将其发回。这可以工作,但它需要在每个 jsp 页面中进行更改,由于 jsps 的大量数量,我不想要。
有什么我遗漏的吗?
有什么标准的方法来处理这种情况?
可能有更好的选择,但在没有其他答案的情况下,您可以使用 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);
}
};
我浏览了几个链接以了解我们如何从过滤器重定向到上一页。
我正在尝试做什么
有一个A.jsp
。单击提交后,它会转到检查某些内容的过滤器之一,如果有问题,它会将其发送回 A.jsp
。
我尝试过的解决方案
我不能使用
request.getHeader("referrer")
,因为URL在我提交页面时发生了变化。所以它会第一次工作,但之后会失败。在每个 jsp 中添加隐藏输入,它将作为请求参数发送,我们可以在过滤器中使用它来将其发回。这可以工作,但它需要在每个 jsp 页面中进行更改,由于 jsps 的大量数量,我不想要。
有什么我遗漏的吗?
有什么标准的方法来处理这种情况?
可能有更好的选择,但在没有其他答案的情况下,您可以使用 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);
}
};