JSP标签简介:
EL表达式可以替换jsp表达式,但是EL表达式局限:不能条件判断,不能赋值,不能迭代。jsp标签替代jsp脚本,完成条件判断,赋值,迭代等功能。
jsp标签分类:
- JSP内置标签,又称为动作标签:不需要在jsp页面中导入标签库
- JSTL标签库的标签:需要在jsp页面中导入标签库
- 自定义标签:需要在jsp页面中导入标签库
动作标签
语法 | 描述 |
---|---|
jsp:include | 在页面被请求的时候引入一个文件。 |
jsp:useBean | 寻找或者实例化一个JavaBean。 |
jsp:setProperty | 设置JavaBean的属性。 |
jsp:getProperty | 输出某个JavaBean的属性。 |
jsp:forward | 把请求转到一个新的页面。 |
jsp:plugin | 根据浏览器类型为Java插件生成OBJECT或EMBED标记。 |
jsp:element | 定义动态XML元素 |
jsp:attribute | 设置动态定义的XML元素属性。 |
jsp:body | 设置动态定义的XML元素内容。 |
jsp:text | 在JSP页面和文档中使用写入文本的模板 |
注意:
动态包含( <jsp:include/> 标签实现):两个JSP文件各自先翻译,然后在编译运行时再合并。也就是说途中会产生多个java文件
静态包含( @include指令实现):两个文件先合并,然后一并翻译成java源文件,过程中只产生1个java文件。
JSTL标签
JSTL,Java Strandard Tag Libarary java标准标签库
特点:使用jstl标签库时,需要在jsp页面中导入标签库
JSTL标签库分类:
- 核心标签库 (c: 设置变量,获取变量,条件判断,循环 )(主要)
- 国际化标签库 (fmt: 日期国家化,文字国际化,数字国际化 )(以后说)
- EL函数库 ( fn:对String常用的方法 )
- 数据库标签库 (sql:对数据库操作的标签)
- XML标签库( x:对xml文件操作的标签 )
使用JSTL标签
- 如果是用java5.0的jar包,那么就已经包含jstl的jar包。
- 自己手动导入则在jsp页面头部导入标签库:
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
JSTL核心标签库的标签
标签 | 描述 |
---|---|
<c:out> | 用于在JSP中显示数据,就像<%= ... > |
<c:set> | 用于保存数据 |
<c:remove> | 用于删除数据 |
<c:catch> | 用来处理产生错误的异常状况,并且将错误信息储存起来 |
<c:if> | 与我们在一般程序中用的if一样 |
<c:choose> | 本身只当做<c:when>和<c:otherwise>的父标签 |
<c:when> | <c:choose>的子标签,用来判断条件是否成立 |
<c:otherwise> | <c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行 |
<c:import> | 检索一个绝对或相对 URL,然后将其内容暴露给页面 |
<c:forEach> | 基础迭代标签,接受多种集合类型 |
<c:forTokens> | 根据指定的分隔符来分隔内容并迭代输出 |
<c:param> | 用来给包含或重定向的页面传递参数 |
<c:redirect> | 重定向至一个新的URL. |
<c:url> | 使用可选的查询参数来创造一个URL |
常用标签使用:
<body>
<%--使用set标签设置数据,默认是在pageContext域中设置,也可以指定域保存 --%>
<c:set var="name" value="eric" scope="request"></c:set>
${requestScope.name}
<%-- out标签,从域对象中得到数据,
default属性:设置默认值,当属性为null时,就会用默认值代替
escapeXml:是否对内容进行转义,false:不进行转义,true:进行转义
什么是转义:特殊字符不会被识别作用,当普通字符输出
--%>
<c:out value="${name}" default="abc" escapeXml="false"></c:out>
<%--if标签:单条间判断--%>
<c:if test="${1>2}">
条件成立执行的内容
</c:if>
<%--choose标签:多条件判断 --%>
<c:set var="id" value="001"></c:set>
<c:choose>
<c:when test="${id=002}">此用户是002</c:when>
<c:when test="${id=001}">此用户是001</c:when>
<c:otherwise>不存在此用户</c:otherwise>
</c:choose>
<%--遍历List
begin:从哪个元素开始遍历,第一个下标为0
end:到哪个元素结束
step:步长
items:需要遍历的对象的名称
var:每个元素对象的名称
varStatus:当前遍历对象的状态,即:已经遍历了几个元素。
--%>
<c:forEach items="${list}" var="student" varStatus="varSta">
序号${varSta.count}-姓名${student.name}-年龄${student.age}
</c:forEach>
<%--遍历Map--%>
<c:forEach items="${map}" var="entry" varStatus="varSta">
序号${varSta.count}-编号${entry.key}-姓名${entry.value.name}
</c:forEach>
<%--forTokens便签 :循环字符串,可以切割后将子串都输出
items:要循环的对象
delims:以什么东西切割字符串
var:切割后的单个对象的名称
--%>
<c:forTokens items="${str}" delims="-" var="s">
${s} <br/>
</c:forTokens>
<%--重定向 标签--%>
<c:redirect url="http://www.baidu.com"></c:redirect>
</body>