如何在Servlet中弹出一个窗口并重定向页面

3
我希望在调用servlet时打开一个弹出窗口,然后将servlet重定向到某个.jsp页面。
这是我所做的:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        PrintWriter out = response.getWriter();
        out.println("<html><body>");
        out.println("<script type=\"text/javascript\">");
        out.println("window.open(\"pageA.jsp\")");
        out.println("</script>");
        out.println("</body></html>");
        response.sendRedirect("pageB.jsp");
    }

这段代码只会在response.sendRedirect("error.jsp");不存在或被注释时弹出窗口。目前使用此代码时,它没有弹出窗口,而是直接将该页面重定向到error.jsp
如何同时实现以上两个功能?

1
你不能使用sendRedirect(),它的作用是当客户端请求A时,服务器返回B。而你所要做的是返回A,但以一种方式加载B,这需要使用JavaScript或meta标签。 - BevynQ
3个回答

1

您可以使用JavaScript来完成这个技巧。例如:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrintWriter out = response.getWriter();
    out.println("<html><body>");
    out.println("<script type=\"text/javascript\">");
    out.println("var popwin = window.open(\"pageA.jsp\")");
    out.println("setTimeout(function(){ popwin.close(); window.location.href='pageB.jsp';},5000)");
    out.println("</script>");
    out.println("</body></html>");
}

1

不要使用 sendRedirect 重定向页面,而是使用

window.location.href = 'pageB.jsp'


-2

您可以调用JSP页面而不是Servlet,并且可以使用jQuery插件thickbox。

http://thickbox.net/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接