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

时间:2016-07-14 10:11:16

标签: jsp servlets servlet-filters forward referrer

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

我想做什么

有一个A.jsp。点击提交后,会转到其中一个检查某个内容的过滤器,如果出现问题,则会将其发送回A.jsp

我尝试的解决方案

  1. 我无法使用request.getHeader("referrer"),因为在我提交网页时网址会发生变化。所以它会第一次起作用,但之后就会失败。

  2. 在每个jsp中添加隐藏输入,这些输入将作为请求参数发送,我们可以在过滤器中使用它来发送回来。这可以工作但是由于jsps的大量计数,它将需要在每个jsp页面中进行更改,这是我不想要的。

  3. 我有什么遗失的吗?

    处理这种情况的任何标准方法?

1 个答案:

答案 0 :(得分: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);
    }
};