如何从发布方法获取数据后重定向

How to redirect after get data from post method

本文关键字:获取 数据 重定向 方法 布方法      更新时间:2023-09-26

我有一个post method to servlet,所以servlet在将请求转发到另一个页面后返回一个网页
getServletContext().getRequestDispatcher("/AnotherServlet").forward(request, response);
所以我不能直接重定向window.location ="/Anotherservlet"
尝试了很多解决方案:传递带有链接的参数,它正在工作,但我会更好的一个,
我尝试了var w = window.open(); w.document.write(data);它正在工作,但页面的 url 仍然是我的主页,页面仍在加载,即使页面是从服务器下载的(所有带有 ready 语句的功能都不起作用),所以当我使用 href="#" 单击按钮时,它会将我重定向到主页因为正如我之前所说 URL=/不是 =/另一个servlet,我
不喜欢获取方法来执行此操作或 cookie,我为此搜索其他解决方案,谢谢帮助
这是我的仆人:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    String name= request.getParameter("name");
    String pass=request.getParameter("pass");
     if (name.equals("a")&&pass.equals("0cc175b9c0f1b6a831c399e269772661"))
    {
    getServletContext().getRequestDispatcher("/BookListServlet").forward(request, response);
    }
    else 
    {
     response.setContentType("text/plain");
        PrintWriter out = response.getWriter();
        out.print("error");
        out.flush();
        out.close();
    }
}


这是我的BookListServlet:

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    books= new bookiml().get_books();   
    String name= request.getParameter("name");
    String ipAddress = request.getRemoteAddr();
request.setAttribute("books", books);
request.setAttribute("userip", ipAddress);
request.setAttribute("user", name);
request.setAttribute("title", "Book listing");
getServletContext().getRequestDispatcher("/META-INF/pages/book-list.jsp").forward(request, response);
}
/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    doGet(request, response);
}

我不想在检查登录身份验证后从 servlet 获取页面,但并非没有在链接中传递参数,如下所示:'

$.ajax({
                    url: 'identification',
                    type: 'POST',
                    data:{pass:$hash,name:$name},
                    timeout: 1000,
                    success: function(data){
                     var target = document.getElementById('spinner');
                                    spinner = new Spinner(opts).spin(target);
                                    $('#spinner').fadeIn();
                                    if (data=='error')
                                    {
                                    $("#messages").html(" Check your username and password.");
                                    $('#name').css('border-color','#B94A48');
                                    $('#pass').css('border-color','#B94A48');
                                    $('#spinner').fadeOut();
                                    }
                                    else 
                                        {
                                        $("#messages").html("");

            $('#spinner').fadeOut();
                                    window.location ="/BookListServlet?name="+$name;
                                    }

                }
            });`

据我了解,您只想使用 servlet 重定向?

response.setStatus(response.SC_MOVED_TEMPORARILY);
response.setHeader("Location", "http://splinky.com/");

您可以将 url 放在 ajax 响应中,以防成功时要重新编辑:

示例 JS 响应:

{ status: 'ok', redirect: '/example' }

并在客户端使用 js 重定向。

客户端代码:

$("form.ajaxForm").submit( function(e) {
        var form = $(this);
        form.ajaxSubmit({
            dataType: 'json',
            success: function(data) {
                if( data.redirect != "" ) {
                    window.location = data.redirect;
                }
            }
        });
        return false;
    });

你必须使用jQuery表单插件才能工作。参见:http://jquery.malsup.com/form/#getting-started