3个编译指令

Page 
import 属性:默认导入 lang   javax.servlet.* javax.jsp.* javax.servlet.http.*
session : 是否需要session 
buffer 指定jsp内置对象中out的缓存大小,默认8kb,可以设置为 none 单位kb
autoFlush : flush的作用 一般都是用于输出缓冲区的内容,如果设置为true,表示强制输出缓冲区内容,即为正常输出,如果设置为false ,则在buffer溢出的时候产生一个异常


在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
dynamic-attributes:指定标签是否支持动态属性,需要定义的时候才需要此属性 true or false

attribute 指定处理类中的属性

  • name:属性名,字符串
  • required:是否是必须的属性,true or false
  • framment:设置该属性是否支持JSP脚本,表达式等动态内容 true or false


JSP生成的java类 只是将
1.包含标签体的标签:
包含标签提的标签
在进行标签类dotag中需要调用getJspbody().invoke(null);  getJspBody()会返回JspFragment对象
然后bodycontent属性要设置为scriptless         
这样在标签引用的时候,就可以在标签中带标签了。

2以页面作为属性的标签:
标签处理类中,包含一个能代表页面的属性,就是JspFragment
在bodycontent 属性要设置empty 
调用framgment.invoke(null);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值