在JSP标准的语法中,如果pageEncoding属性存在,那么JSP页面的字符编码方式就由pageEncoding决定,
否则就由contentType属性中的charset决定,如果charset也不存在,JSP页面的字符编码方式就采用默认的ISO-8859-1。
第一阶段是jsp编译成.java,它会根据pageEncoding的设定读取jsp,结果是由指定的编码方案翻译成统一的UTF-8 JAVA源码(即.java),如果pageEncoding设定错了,或没有设定,出来的就是中文乱码。
第二阶段是由JAVAC的JAVA源码至java byteCode的编译,不论JSP编写时候用的是什么编码方案,经过这个阶段的结果全部是UTF-8的encoding的java源码。
JAVAC用UTF-8的encoding读取java源码,编译成UTF-8 encoding的二进制码(即.class),这是JVM对常数字串在二进制码(java encoding)内表达的规范。
第三阶段是Tomcat(或其的application container)载入和执行阶段二的来的JAVA二进制码,输出的结果,也就是在客户端见到的,这时隐藏在阶段一和阶段二的参数contentType就发挥了功效
include :
静态include指令:
<%@include file ="*.jsp"%> 有个梗:完全包含Jsp页面,如果两个编译指令有冲突会出异常
动态include指令:
<jsp:include page="" >
taglib 标签库指定编译指令
<%@ taglib uri="http://www.coffee.org/mytaglib" prefix="mytaglib" %>
JSP2 自定义标签:
1.开发处理类
2.建立.tld文件
3使用自定义标签
自定义标签的处理类应该继承:javax.servlet.jsp.tagext.SimpleTagSupport
TLD文件:在tomcat例子中有,存放的位置是WEB-INF,就像xml一样的组织,其中tlib-version 和 short-name没什么作用 测试了一下 short-name随意指定,都没关系,主要是编译指令中的prefix 要和使用的时候一致 uri 和tld文件中的uri 一致就可以了
uri 根据此属性来定位标签库,标签库以tag为单位,
name表示标签库的名字,引用的时候对应
tag-class对应extends SimpleTagSupport的标签处理类
body-content 指定标签内容:可以是如下几个
- empty:空标签
- tagdependent:表示标签处理类自己负责处理标签体
- scriptless:指定标签的标签体可以是静态的HTML元素,表达式语言,但不允许出现jsp脚本。不能是脚本。
- JSP:指定它可以使用JSP脚本 其实,JSP2以后,不允许使用脚本了,所以属性的值不能是JSP
attribute 指定处理类中的属性
- name:属性名,字符串
- required:是否是必须的属性,true or false
- framment:设置该属性是否支持JSP脚本,表达式等动态内容 true or false

标签处理类中,包含一个能代表页面的属性,就是JspFragment