EL表达式、JSP标签、JSTL标签、自定义标签
来源:互联网 发布:阿里云os系统 编辑:程序博客网 时间:2024/05/22 19:27
EL表达式
jsp的核心语法: jsp表达式 <%=%>和 jsp脚本<% %>。
以后开发jsp的原则: 尽量在jsp页面中少写甚至不写Java代码。
使用EL表达式替换掉jsp表达式
EL表达式作用: 向浏览器输出域对象中的变量值或表达式计算的结果!!!
语法: ${变量或表达式}
EL语法
1 输出基本数据类型变量
从四个域获取
${name}
指定域获取
${pageScope.name}
域范围: pageScoep / requestScope / sessionScope / applicationScope
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
2 输出对象的属性值
3 输出集合对象 List 和Map
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
4 EL表达式计算
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
jsp标签
jsp标签作用:替换jsp脚本。
1)流程判断(if for循环)2)跳转页面(转发,重定向)3)。。。。。
Jsp标签分类
1)内置标签(动作标签): 不需要在jsp页面导入标签2)jstl标签: 需要在jsp页面中导入标签3)自定义标签 : 开发者自行定义,需要在jsp页面导入标签
动作标签
转发标签: <jsp:forward />参数标签: <jsp:pararm/>包含标签: <jsp:include/>
原理: 包含与被包含的页面先各自翻译成java源文件,然后再运行时合并在一起。(先翻译再合并),动态包含
静态包含 vs 动态包含的区别:
1) 语法不同静态包含语法: <%@inclue file="被包含的页面"%>动态包含语法: <jsp:include page="被包含的页面">2)参数传递不同静态包含不能向被包含页面传递参数动态包含可以向被包含页面传递参数3)原理不同静态包含: 先合并再翻译动态包含: 先翻译再合并
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
JSTL标签
JSTL (全名:java standard tag libarary - java标准标签库 )
核心标签库 (c标签库) 天天用国际化标签(fmt标签库)EL函数库(fn函数库)xml标签库(x标签库)sql标签库(sql标签库)
使用JSTL标签步骤
1) 导入jstl支持的jar包(标签背后隐藏的java代码) 注意:使用javaee5.0的项目自动导入jstl支持jar包2)使用taglib指令导入标签库 <%@taglib uri="tld文件的uri名称" prefix="简写" %>3)在jsp中使用标签
核心标签库的重点标签:
保存数据: <c:set></c:set> 获取数据: <c:out value=""></c:out>单条件判断 <c:if test=""></c:if>多条件判断 <c:choose></c:choose> <c:when test=""></c:when> <c:otherwise></c:otherwise>循环数据 <c:forEach></c:forEach> <c:forTokens items="" delims=""></c:forTokens>重定向 <c:redirect></c:redirect>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
自定义标签
1 编写一个普通的java类,继承SimpleTagSupport类,叫标签处理器类
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
2 在web项目的WEB-INF目录下建立xxx.tld文件,这个tld叫标签库的声明文件。(参考核心标签库的tld文件)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
3 在jsp页面的头部导入自定义标签库
<%@taglib uri="http://gz.itcast.cn" prefix="itcast"%>
4 在jsp中使用自定义标签
<itcast:showIp></itcast:showIp>
执行过程
问题: http://localhost:8080/day14/01.hellotag.jsp 如何访问到自定义标签?
前提: tomcat服务器启动时,加载到每个web应用,加载每个web应用的WEB-INF目录下的所有文件!!!例如。web.xml, tld文件!!!
1)访问01.hellotag.jsp资源2)tomcat服务器把jsp文件翻译成java源文件->编译class->构造类对象->调用_jspService()方法3)检查jsp文件的taglib指令,是否存在一个名为http://gz.itcast.cn的tld文件。如果没有,则报错4)上一步已经读到itcast.tld文件5)读到<itcast:showIp> 到itcast.tld文件中查询是否存在<name>为showIp的<tag>标签6)找到对应的<tag>标签,则读到<tag-class>内容7)得到 gz.itcast.a_tag.ShowIpTag构造ShowIpTag对象,然后调用ShowIpTag里面的方法
自定义标签处理器类的生命周期
SimpleTag接口:
void setJspContext(JspContext pc) --设置pageContext对象, 传入pageContext(一定调用)通过getJspCotext()方法得到pageContext对象void setParent(JspTag parent) --设置父标签对象,传入父标签对象, 如果没有父标签,则不调用此方法。通过getParent()方法得到父标签对象。void setXXX(值) --设置属性值。void setJspBody(JspFragment jspBody) --设置标签体内容。标签体内容封装到JspFragment对象中,然后传入JspFragment对象。 通过getJspBody()方法得到标签体内容。如果没有标签体内容,则不会调用此方法void doTag() --执行标签时调用的方法。(一定调用)
自定义标签的作用:
控制是否输出标签体内容
输出: this.getJspBody().invoke(null) 不输出: 不调用invoke(null)方法
控制标签余下内容是否输出
输出: 什么不都做!不输出: 抛出SkipPageException异常
重复输出标签体内容
重复调用: this.getJspBody().invoke(null)
修改标签体内容
StringWriter sw = new StringWriter();this.getJspBody().invoke(sw);String content = sw.toString();//修改内容//手动输出到浏览器this.getJspContext().getOut().writer(修改过的内容);
带属性的标签
a)在标签处理器类中声明成员变量和setter方法,用于给属性变量赋值。b)在tld文件中声明属性c)使用属性
输出标签体内容格式
JSP: 在传统标签中使用的。可以写和执行jsp的java代码。scriptless: 标签体不可以写jsp的java代码empty: 必须是空标签。tagdependent : 标签体内容可以写jsp的java代码,但不会执行。
- 18、EL表达式、JSP标签、JSTL标签、自定义标签
- EL表达式、JSP标签、JSTL标签、自定义标签
- 笔记之jsp标签、EL表达式、JSTL标签、函数、自定义标签
- IT忍者神龟之jsp标签、EL表达式、JSTL标签、函数、自定义标签
- EL表达式 & JSTL标签
- EL表达式...jstl标签
- EL表达式、JSTL标签
- EL表达式、Jstl标签
- JSP-EL表达式&JSTL标签库
- JavaWeb12-JSP, EL表达式,JSTL标签
- jsp,el表达式,jstl标准标签库
- jsp入门、El表达式、JSTL标签库
- JSP中的EL表达式和JSTL标签
- JSTL标签(2)、EL表达式总结、Jsp标签总结
- JSP常用标签——JSTL标签和EL表达式
- JSP常用标签——JSTL标签和EL表达式
- JSP常用标签——JSTL标签和EL表达式
- jsp&EL表达式&EL表达式&fn函数库&JSTL标签
- css3 animation动画,设置循环间的延时执行
- BZOJ P2756[SCOI2012]奇怪的游戏
- javascript内置对象(三)
- 在Linux系统下安装redis
- 记录ios开发的一些问题
- EL表达式、JSP标签、JSTL标签、自定义标签
- IOS开发常用技巧以及说明
- python学习笔记(四)模块
- Android对话框--各种对话框 界面优美
- JavaScript 获取鼠标点击位置坐标
- 在OpenCV中用cvCalibrateCamera2进行相机标定
- 结构体定义 typedef struct 用法详解和用法小结
- 计算机网络及分布式系统
- dom4j 最常用最简单的用法(转)