从 web 应用程序中的 servlet 过滤器重定向到上一页

Redirect to previous page from servlet filter in web application

我浏览了几个链接以了解我们如何从过滤器重定向到上一页。

我正在尝试做什么

有一个A.jsp。单击提交后,它会转到检查某些内容的过滤器之一,如果有问题,它会将其发送回 A.jsp

我尝试过的解决方案

  1. 我不能使用request.getHeader("referrer"),因为URL在我提交页面时发生了变化。所以它会第一次工作,但之后会失败。

  2. 在每个 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);
    }
};