Java window.open重定向到URL,但重定向后原始窗口显示白色空白页 PrintWriter out=response.getWriter(); 输出。打印(“”); out.print(“window.open”(“打开”)http://chfdsd/manu/zseriessection9.pdf“,”空白“)”; 输出。打印(“”);

Java window.open重定向到URL,但重定向后原始窗口显示白色空白页 PrintWriter out=response.getWriter(); 输出。打印(“”); out.print(“window.open”(“打开”)http://chfdsd/manu/zseriessection9.pdf“,”空白“)”; 输出。打印(“”);,java,servlets,redirect,Java,Servlets,Redirect,此代码段位于struts中的action类中。我正在使用它重定向到新窗口中的URL。但是,执行此脚本后,父窗口不应更改。但事实并非如此。这是因为您正在执行对服务器的直接请求。服务器响应就是将写入浏览器客户端的硬编码JavaScript。如果检查空白页的源代码,您将看到该代码: 打开窗户http://chfdsd/manu/zseriessection9.pdf“,”空白“) 所以它没有显示空白页面,只是一个没有HTML组件显示的响应 要解决您的问题,您有一些选择: 在新页面/选项卡中执行此

此代码段位于struts中的action类中。我正在使用它重定向到新窗口中的URL。但是,执行此脚本后,父窗口不应更改。但事实并非如此。

这是因为您正在执行对服务器的直接请求。服务器响应就是将写入浏览器客户端的硬编码JavaScript。如果检查空白页的源代码,您将看到该代码:


打开窗户http://chfdsd/manu/zseriessection9.pdf“,”空白“)
所以它没有显示空白页面,只是一个没有HTML组件显示的响应

要解决您的问题,您有一些选择:

  • 在新页面/选项卡中执行此请求,然后servlet请求返回到所需页面/内容的重定向。例如:

    
    
    在Servlet中:

    PrintWriter out = response.getWriter(); 
    out.print("<script>");
    out.print("window.open('http://chfdsd/manu/zseriessection9.pdf','_blank')");
    out.print("</script>"); 
    
  • 执行一个ajax请求,返回要导航的URL。然后,处理ajax响应以在新页面中导航到此URL。使用jquery:

    response.redirect("http://chfdsd/manu/zseriessection9.pdf");
    //no need to use PrintWriter at all
    
    然后在servlet中:

    $.post("${request.contextPath}/path/to/Servlet", function(response) {
        window.open(response, 'blank');
    });
    
请注意,还有更优雅的解决方案,但任何一种都可以

PrintWriter out = response.getWriter(); 
out.print("http://chfdsd/manu/zseriessection9.pdf");