Java 为什么Servlet程序按原样输出HTML文本?

Java 为什么Servlet程序按原样输出HTML文本?,java,eclipse,servlets,Java,Eclipse,Servlets,我创建了一个程序,使用servlet在浏览器上打印“欢迎访问我们的网站”文本。它在eclipse默认浏览器中运行良好,但当我将该URL用于其他浏览器时,它会显示如下文本: 下面是在eclipse浏览器中运行良好的代码的图像 我的代码如下: public class WelcomePage extends HttpServlet { @Override public void init() throws ServletException { } @Override protected voi

我创建了一个程序,使用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() {

}
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");
公共类WelcomePage扩展了HttpServlet{
@凌驾
public void init()引发ServletException{
}
@凌驾
受保护的无效服务(HttpServletRequest-req、HttpServletResponse-res)引发ServletException、IOException{
PrintWriter out=res.getWriter();
out.println(“欢迎访问我们的网站”);
out.println(“”);
out.println(“”);
}
@凌驾
公共空间销毁(){
}

}

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

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

一些示例:

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() {

}
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
。如何设置内容类型?这意味着什么?在创建writer之前,调用res.setContentType(“text/html”)还可以查看任何网页中的Yeah,您必须告诉它将出现什么内容,就像如果您将javascript放入脚本标记并告诉它将出现什么类型的脚本一样。应该注意的是,当您将内容发送到其他地方时,您应该在标题或之前约定的其他地方通知。例如,text/html声明为“text”,因为每个字节代表浏览器编码中的一个字符。。。html意味着必须阅读文本并处理“html内容”(主要是标签,如
等)。。。。。进一步的类型告诉我们输入的信息应该做什么。永远不要传输Json,并告诉它的zip,否则接收者将在结果中犯意外错误。