我有一个这样的表单:
<form action="WorkUser" method="POST" >
<label>
<input type="text" id="nickname" name="nickname" placeholder="Nickname">
<input type="submit" name="submit" value="Senden">
</label>
</form>
这将重定向到Servlet,Servlet将请求转发到jsp文件。在Opera、Chrome、Safari和Firefox上,这非常有效。
但是InternetExplorer和Edge将最终的jsp页面下载为html文件。当你用浏览器打开它时,页面会呈现得很棒。此外,在中验证时,该页面没有显示错误http://validator.w3.org
重定向到的jsp文件的头部如下所示:
<!DOCTYPE html>
<%@ page language="java" contentType="charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
你知道为什么会出现这个问题吗?
此处的contentType
不正确。
<%@page language="java" contentType="charset=UTF-8" pageEncoding="UTF-8"%>
它一定是其中一个价值观。默认值为text/html
,这是HTML文档的正确值。
<%@page language="java" pageEncoding="UTF-8" %>
当网络浏览器无法识别内容类型时,出于安全原因,一些浏览器可能会被迫将其视为文件下载,而其他浏览器可能会首先尝试检查响应是否"看起来像"HTML,然后无论如何都会显示它。
与具体问题无关,language="java"
是超复杂的。这已经是默认值了。
<%@page pageEncoding="UTF-8" %>
pageEncoding
可以根据以下问题的答案中的说明在应用程序范围内设置:如何干净地设置所有JSP的pageEncoding?
这样就可以去掉整个<%@ page ... %>
行。