JSP基础
2017-09-28 18:17:34 37 举报
AI智能生成
JSP知识结构图
作者其他创作
大纲/内容
⑦:自定义标签
使用自定义标签就是实现JSTL并没有实现的功能,需要我们程序员自己实现
其实JSTL标签的原理就是自定义标签,只不过JSP对其进行了封装,我们学习了自定义标签,就更好地理解JSTL标签库了。
实现自定义标签步骤:
1、编写标签处理器类
2、在tld文件中描述标签处理器类
实现Tag、SupportTag接口的传统标签
传统标签的执行流程
1、创建标签处理器类实例
2、执行setPageContext()方法
3、调用setParent()方法
4、调用doStart()和doEnd()方法
5、直到Web容器销毁,标签处理器类才会从内存中释放
Tag接口定义的常量就是用来控制流程顺序的
SKIP_BODY
EVAL_BODY_INCLUDE
SKIP_PAGE
EVAL_PAGE
开发带属性的自定义标签
在标签处理器类中定义这个变量
给出对应的setter和getter方法即可
实现SimpleTag接口的简单标签
简单标签的执行顺序
1、调用setJspContext()方法,将代表JSP页面的pageContext对象交给标签处理器类
2、调用setParent()方法,将父标签处理器类的对象给当前处理标签类对象
3、如果设置了属性,那么调用setter方法,把属性值给标签处理器类
4、如果有标签体,调用setJspBody方法把代表标签体的JspFragment对象传递进来
控制流程顺序
通过调用JspFragment对象的invoke()即可控制流程顺序
不调用invoke()方法,则标签体内容不会显示在浏览器上
多次调用invoke()方法,则会循环输出
想要改变标签体的内容,那么先得到标签体内容,再输出【null的时候默认是输出给浏览器,使用StringWriter流,即可获取标签体的数据】
抛出异常则不执行页面剩下的代码
自定义标签之应用一:自定义防盗链标签
1、在JSP页面上判断是否为本站的URI
2、如果不是,跳转到相对应的页面,抛出异常【抛出异常剩下的页面就不会被执行了】
3、如果是,直接执行剩下的页面即可
自定义标签之应用二:自定义if标签
if标签实际是判断属性的值是否成立
成立则执行标签体的内容
不成立则不执行标签体的内容
自定义标签应用之三:自定义forEach标签
得到集合的元素,使用var字符串来保存
var字符串保存在PageContext域中,那么在外头使用EL表达式就可以获取具体的值
每遍历一个元素,就把var存放在PageContext域中,并执行一次标签体
如果是八大类型的数据,我们需要使用reflect包下的Array类,只要是数组,就可以用Colletion来遍历
动态属性DynamicAttribute接口
用一个Map集合来保存具体的属性值
在tld文件记得要设置为true
①:JSP入门
Servlet输出数据麻烦,于是JSP诞生
JSP的原理就是Servlet
JSP生命周期与Servlet也是一样的
②:JSP语法
JSP脚本
由于存在EL表达式,JSP脚本基本不用
JSP指令
page
include
taglib
JSP行为
include
javaBean相关
param
directive
forward
JSP注释
<%--%>
③:JavaBean
javaBean作为数据传输的载体
详细地讲解JSP行为中的JavaBean相关语法
④:JSP九大内置对象
JSP的原理就是Servlet,JSP设计为了方便获取常用对象的引用,于是在JSP中内置了九大对象
pageContext
代表着JSP编译后的内容
既然代表着JSP编译后的内容,那么可以通过它可获取其他八大内置对象
该对象也可以作为一个域对象,page域【代表当前JSP页面】
findAttribute()按照page->request->session->application查找存放在域对象的值【这也是EL表达式的原理】
域对象的使用场景
request
用户看完就没用的数据
session
用户看完,一会还有用的数据
servletContext
用户看完,还要给其他用户看的数据
⑤:EL表达式
EL表达式主要用于读取数据、对数据显示
读取各类的数据
JavaBean
域对象
集合
EL表达式运算符
传统的运算符
empty运算符【可判断集合是否为空】
三目运算符
EL表达式11个内置对象
为了方便显示数据,EL提供了11个内置对象
EL回显数据
当获取到的数据为null时,EL表达式返回“”
EL自定义函数
编写静态方法
在tld文件中描述编写的方法
EL函数库(fn方法库)
是JSTL的其中的一个库,但长起来不想JSTL标签,于是被称作是fn方法库
主要来操作字符串的数据
⑥:JSTL标签库
由于EL的局限性【不能遍历集合...等等】,为了JSP代码更加可读,于是JSP提供了JSTL标签库
导入jstl.jar和standard.jar,使用taglib指令导入JSTL标签
core核心标签库
完成一些最常用的功能【遍历集合、控制流程顺序】
fmt标签库
主要用于国际化的标签
fn方法库
主要用于处理字符串数据
更多脑图和最新原创技术文章可关注公众号:Java3y
0 条评论
下一页