【问题标题】:Why Servlet program outputting HTML text as it is?为什么 Servlet 程序按原样输出 HTML 文本?
【发布时间】:2015-11-21 22:53:40
【问题描述】:

我创建了一个程序,它使用 servlet 在浏览器上打印“欢迎来到我们的站点”文本。它在 Eclipse 默认浏览器中运行良好,但是当我将该 URL 用于其他浏览器时,它会显示如下文本:

下面是在 Eclipse 浏览器中运行良好的代码图像

而我的代码如下:

public class WelcomePage extends HttpServlet {
@Override
public void init() throws ServletException {

}
@Override
protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
    PrintWriter out = res.getWriter();
    out.println("<h3>Welcome to our site<h3>");
    out.println("<form>");
    out.println("</form>");
}
@Override
public void destroy() {

}

}

【问题讨论】:

  • 尝试将响应的内容类型设置为text/html
  • 如何设置内容类型?它是什么意思?
  • 在你创建 writer 之前调用 res.setContentType("text/html"); 也看看 w3schools.com/tags/tag_meta.asp
  • 是的,在任何网页中你都必须告诉它将会有什么内容,就像如果你把 javascript 你做脚本标签并告诉它它将是什么类型的脚本一样

标签: java eclipse servlets


【解决方案1】:

添加后 res.setContentType(text/html);问题解决了:)

在向客户端发送数据之前(由客户端机器上的浏览器显示),Servlet 容器会通知客户端浏览器现在正在发送什么类型的数据。可以发送的数据可以是简单的纯文本、html 表单、xml 表单、gif 或 jpg 类型的图像表单、excel sheet 等。为了发送这些信息,Servlet 容器使用响应对象和 setContentType() 方法。

一些例子:

response.setContentType("text/html");           
response.setContentType("text/plain");  
response.setContentType("text/css");            
response.setContentType("application/html");
response.setContentType("image/gif");
response.setContentType("application/zip");
response.setContentType("application/pdf");

【讨论】:

  • 需要注意的是,当您将内容发送到其他地方时,您应该在标头或之前约定的其他地方告知。例如,text/html 声明为“文本”,因为每个字节代表该浏览器编码中的一个字符......而 html 意味着必须读取文本并处理“html 内容”(主要是标签,如 、 等)..... 进一步的类型说明了对输入信息的预期操作。永远不要传输 Json,并告诉它的 zip,否则接收者会在结果中出现意想不到的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-07
  • 1970-01-01
  • 2015-05-04
  • 1970-01-01
  • 1970-01-01
  • 2016-07-15
相关资源
最近更新 更多