为什么我需要在这个Javaservlet中将内容类型设置为html? import javax.servlet.http.*; 导入javax.servlet.*; 导入java.io.*; 导入java.util.Date; 公共类HelloServlet扩展了HttpServlet { public void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException { setContentType(“text/html;charset=utf-8”); PrintWriter out=response.getWriter(); println(“仅适用于testHello,world!html版本”); out.flush(); out.close(); } public void doPost(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException { doGet(请求、响应); } }
如果我将内容类型设置为为什么我需要在这个Javaservlet中将内容类型设置为html? import javax.servlet.http.*; 导入javax.servlet.*; 导入java.io.*; 导入java.util.Date; 公共类HelloServlet扩展了HttpServlet { public void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException { setContentType(“text/html;charset=utf-8”); PrintWriter out=response.getWriter(); println(“仅适用于testHello,world!html版本”); out.flush(); out.close(); } public void doPost(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException { doGet(请求、响应); } },html,servlets,xhtml,content-type,Html,Servlets,Xhtml,Content Type,如果我将内容类型设置为xhtml,那么web浏览器将自动打开“保存文件”对话框。为什么会发生这种情况?首先,请注意,xhtml的正确内容类型不是xhtml或text/xhtml,而是application/xhtml+xml 无论如何,您需要通过检查acceptHTTP请求头来检查用户代理是否能够实际接受此内容类型。根据: 如果Accept头显式包含application/xhtml+xml(没有“q”参数或正“q”值),则使用该媒体类型交付文档 如果Accept头显式包含text/html(没
xhtml
,那么web浏览器将自动打开“保存文件”对话框。为什么会发生这种情况?首先,请注意,xhtml的正确内容类型不是xhtml
或text/xhtml
,而是application/xhtml+xml
无论如何,您需要通过检查accept
HTTP请求头来检查用户代理是否能够实际接受此内容类型。根据:
application/xhtml+xml
(没有“q”参数或正“q”值),则使用该媒体类型交付文档text/html
(没有“q”参数或正“q”值),则使用该媒体类型交付文档text/html
交付文档text/xhtml不是有效的内容类型,因此浏览器不知道如何正确呈现它 对于XHTML1.0,内容类型应该是text/html(参见第A.9点) 编辑: 这是一个更好的链接,专门讨论XHTML及其各种允许的内容类型 或者:
xhtml
时,您的意思是字面上的xhtml
或text/xhtml
——在这种情况下,问题是xhtml的内容类型是application/xhtml+xml
这不是浏览器的基本功能吗 如果浏览器知道文件格式(如html、xml或文本…),它将直接在浏览器上显示内容
否则,它将尝试保存它或使用其他应用程序打开它的方法,该方法接受字符串参数,但不返回任何内容
import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;
import java.util.Date;
public class HelloServlet extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException
{
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<html><head><title>only for test</title></head><body>Hello, world!html version</body></html>");
out.flush();
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException
{
doGet(request, response);
}
}
这里“text”是类型,html是子类型
setContentType()
方法在响应尚未发送时设置“正在发送的响应”的内容类型。
对于css,您可以说:
response.setContentType("text/html");
第A.9点涉及字符编码。有关建议的媒体类型(),请参见第3节。浏览器根据
内容类型
标题“知道”。这就是问题的症结所在:)您是XHTML过度宣传的另一个受害者。将鼠标放在问题上的[xhtml]
标记上,直到弹出框出现,然后单击其中的“信息”链接,然后结束。只需使用text/html
。
response.setContentType("text/css");