JSP中page contentType指令作用是什么?删除后无功能影响的原因?
JSP 默认page指令的作用与存在意义说明
IntelliJ IDEA 生成JSP页面时默认添加的指令如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
你删除后没感知到功能影响,是因为你的项目、运行环境已经做了对应默认配置,多个配置项生效逻辑重叠了,不代表这行配置没用,具体每个属性的作用如下:
language="java":指定当前JSP页面使用的脚本语言为Java,这本身就是JSP规范的默认值,除非你要使用其他支持JSP的脚本语言(比如Groovy,实际生产几乎没人用),否则不写也不会影响页面运行。contentType="text/html":指定服务器返回给浏览器的响应内容类型为HTML,告诉浏览器按照HTML规则解析返回内容。普通页面场景下这也是绝大多数Web容器的默认返回类型,所以你做常规页面开发时删掉也不会有感知,但如果要通过JSP输出Excel、JSON、PDF等其他格式内容,就必须显式修改这个属性,否则浏览器会按HTML解析,输出内容完全无法使用。charset=UTF-8:指定JSP输出内容的字符编码为UTF-8,同时会告知浏览器用UTF-8编码解析内容。你删掉没出问题大概率是你的项目全局配置了编码过滤器、Web容器(比如Tomcat)默认编码设为了UTF-8、IDE存储文件的编码也统一为UTF-8,多端配置对齐的情况下不会出问题。但如果没有全局统一配置,或者部署到其他默认编码为GBK/ISO-8859-1的服务器上,删掉这行马上就会出现中文乱码问题。
这行配置的核心存在意义是保证JSP页面的可移植性,显式声明的配置不需要依赖外部环境的默认值,同一个页面不管部署到什么环境,都不会出现解析规则、编码不匹配的问题,是最稳妥的保底配置。
内容的提问来源于stack exchange,提问作者Amon
相关产品推荐
相关产品推荐

