在服务器端代码中,我正在使用 OutputStreamWriter 编写一个字符串(在浏览器页面上写入)。这被写在一个新窗口中。我需要能够在同一个窗口中编写它。
该类扩展了 HttpServlet,代码结构如下:
void foo(HttpServletResponse response...) {
...
OutputStreamWriter out = new OutputStreamWriter(response.getOutputStream());
response.reset();
response.setContentType("text/html");
out.write("Hello World!"); // Or some html string
out.flush();
out.close();
}
最佳答案
服务器端(servlet)不会也不能打开新窗口(幸运的是,否则用弹出窗口向客户端发送垃圾邮件将非常容易...)。客户端(浏览器)是唯一可以打开新窗口的人。您很可能在 HTML 或 JavaScript 中使用了以下结构之一,它们将在新窗口中显示结果:
<form action="servleturl" target="_blank">
或
<a href="servleturl" target="_blank">
或
<script>window.open('servleturl', 'windowname');</script>
您需要删除 target="_blank"
以在当前窗口中获取响应,或者如果您使用的是 JavaScript,则使用 window.location = 'servleturl';
代替。
与具体问题无关,在 servlet 中发出 HTML 是一种糟糕的做法。请改用 JSP。
另见:
关于java - 如何使用 OutputStreamWriter 在同一浏览器窗口中写入流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7518497/