解释JSP文件的声明及属性,<%@ page language=“java” contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8”%>

Eclipse创建JSP文件时,初始内容如下。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

</body>
</html>

因为实际应用中charset=UTF-8使用较多,这次以此为例进行解释,以下两行代码。

1、<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

2、<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

 这两句话都是JSP页面的声明,需要声明的具体内容解释如下。

1、第一行代码中<%@page %>是JSP中的page命令(语法),主要的作用是用来设置JSP页面的属性

  • page language="java":声明脚本语言的种类,目前只支持java语言,默认为java。
  • contentType="text/html; charset=UTF-8":声明网页类型text/html网页内容将以UTF-8编码类型输出给客户端/浏览器,说白了就是告诉浏览器如何解析服务器响应的内容。网页类型除了 text/html,还可以是 text/plain和text/xml 等。编码类型是用来告诉浏览器以何种编码解析服务器响应的内容,常见字符集包括 ASCII、GK2312、GBK及UTF-8 等。
  • pageEncoding:说明.jsp文件内容的编码方式(和charset指定编码类型作用不一样哦)

针对上述的解释,以下再通过JSP从被请求到响应经历的三个阶段,深入了解声明的重要性及各属性的作用。

  • 第一阶段:将.jsp文件编译成Servlet(.java)文件。用到的属性是pageEncoding,根据pageEncoding=“XXX”的指示,找到编码的规则为“XXX”,服务器在将.jsp文件编译成.java文件时会根据pageEncoding的设定读取.jsp文件,结果是由指定的编码方案翻译成统一的UTF-8编码的java源码(.java文件)。
  • 第二阶段:从Servlet(.java)文件到Java字节码文件(.class),从UTF-8到UTF-8。在这一阶段中,不论JSP编写时候用的是什么编码方案,经过这个阶段的结果全部是以UTF-8为编码方式的java源码。javac以UTF-8的编码方式读取java源码,编译成UTF-8编码的二进制码(即.class),这是JVM对常数字串在二进制码内表达的规范。这一过程是由JVM的内在规范决定的,不受外界控制。
  • 第三阶段:从服务器到浏览器,这在一过程中用到的属性是contentType。服务器载入和执行由第二阶段生成出来java二进制码,输出的结果,也就是在客户端可见到的结果,在这次输出过程中,由contentType属性中的charset来指定,将UTF-8形式的二进制码以charset的编码形式来输出。如果没有人为设定,则默认的是ISO-8859-1的形式。

2、第二行代码中meta标签的作用是向搜索引擎提供有关此网页的一些相关信息,其主要是放在<head>标签内,它是一个非常重要的标签,譬如它可以用来鉴别作者、设定页面格式、标注内容提要和关键字以及刷新页面等。几乎所有的网页里都可以看到类似这段html代码。

meta标签的组成:meta标签共有两个属性,它们分别是http-equiv属性和name属性
不同的属性又有不同的参数值,这些不同的参数值就实现了不同的网页功能。

meta标签的name属性语法格式是:<meta name="参数"content="参数值">。

meta标签的http-equiv属性语法格式是:<meta http-equiv="参数"content="参数值">。

属性作用:

  • http-equiv:主要是回应给浏览器一些有用的信息,以便正常的显示网页内容。它包含很多属性,不单单是“Content-Type”属性,那么Content-Type的属性是表示网页编码类型。
  • name:虽然上述JSP文件代码里面没有name这个属性,但是name属性也是很重要的,name属性可以设置网页的作者,关键字,搜索引擎机器人向导等。
  • content:主要根据http-equiv或name属性来指定对应的content的属性值,它可以包含的值也有很多。

这里的编码content="text/html; charset=UTF-8"就是告诉浏览器,我返回给你的HTML页面编码格式是什么,这样浏览器就可以按照正确的编码格式来解析HTML页面了。和上述第一行代码中contentType="text/html; charset=UTF-8",作用是一样的,而且这两个内容要写的一致。

若有问题,请留言,thanks!

参考链接1:https://www.cnblogs.com/isme-zjh/p/12528579.html

参考链接2:https://zhidao.baidu.com/question/25814986.html

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值