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);
}
}
如果我将内容类型设置为xhtml
,那么Web浏览器将自动打开保存文件对话框。为什么会这样?
答案 0 :(得分:3)
首先,请注意xhtml的正确内容类型不是xhtml
或text/xhtml
,而是application/xhtml+xml
。
无论如何,您需要通过检查Accept
HTTP请求标头来检查用户代理是否可以实际接受此内容类型。根据{{3}}:
application/xhtml+xml
(没有“q”参数或正“q”值),则使用该媒体类型传送文档。text/html
(没有“q”参数或正“q”值),则使用该媒体类型传送文档。text/html
传送文档。答案 1 :(得分:1)
text / xhtml不是有效的内容类型,因此您的浏览器不会知道如何正确呈现它。
对于XHTML 1.0,内容类型应为text / html http://www.w3.org/TR/xhtml-media-types/#compatGuidelines(参见A.9节)
编辑:
这是一个更好的链接,专门讨论XHTML及其各种允许的Content-Type
答案 2 :(得分:1)
或者:
xhtml
时,您的字面意思是xhtml
或text/xhtml
- 在这种情况下,问题是内容类型为XHTML是application/xhtml+xml
答案 3 :(得分:0)
它接受字符串参数并且不返回任何内容的方法。
response.setContentType("text/html");
这里“text”是类型,html是子类型。
当尚未发送响应时, setContentType()
方法设置“正在传递响应”的内容类型。
你可以说css:
response.setContentType("text/css");
答案 4 :(得分:-2)
这不是基本的浏览器功能吗?
如果浏览器知道文件格式(如html或xml或text ..),它将直接在浏览器上显示内容
否则,它会尝试保存或使用其他应用程序打开