- out: out标签可以在JSP页面中输出指定字符串,起作用类似于
"<%= %>"
,可以认为这个标签是一个增强了的EL表达式
out中的主要属性:
| 属性名称 | 说明 |
| — | — |
| value | 需要输出的值 |
| default | 如果value的值为null,显示default的值 |
| escapeXML | 是否转换特殊字符串 |
-
样例:
-
输出aaa字符串常量:
<c:out value="str"/>
-
与
${str}
相同:<c:out value="${str}"/>
-
当
${str}
不存在时,输出xxx字符串:<c:out value="${str}" default="xxx"/>
-
escapeXml为false时不会识别字符串中的标签
<c:out value="${str}" default="xxx" escapeXml="false" />
-
set: set标签用来声明一个变量,我们可以声明在JSP页面中或JavaBean属性中。
set中的主要属性:
| 属性名称 | 说明 |
| — | — |
| value | 要被存储的值 |
| var | 要存入的变量名称 |
| scopevar | 变量的JSP范围 |
| traget | 一个JavaBean或Map对象 |
| property | 指定target对象的属性 |
-
样例:
-
将属性值存储在session中:
<c:set value=" value" var="name" default="xxx" scope="session"/>
-
在pageContext中添加数据:
<c:set var="name" default="xxx"/>
-
将本体内容存储在范围为scope的name变量中:
<c:set var="name" default="xxx" scope="{page|request|session|application}"/>
-
remove:remove标签用于移除指定范围内的变量,与set标签刚好相反。
删除所有域中指定名字的数据:<c:remove var="name"/>
、<c:out value="${name}" default="none"/>
删除pageContext中指定名字的数据:<c:remove var="a" scope="page"/>
- url:该标签会在需要URL重写时添加sessionId
url中的主要属性:
| 属性名称 | 说明 |
| — | — |
| value | 被包含文件的地址 |
| context | 相同服务器下的其他Web站点必须以'/'
开头 |
| var | 存储被包含文件的内容 |
| scope | var变量的存储范围 |
-
样例:
-
输出上下文路径:
<c:url value="/"/>
-
把本该输出的结果赋给变量,范围为request:
<c:url value="/" var="name" scope="request"/>
-
输出:/demo/Servlet1?username=abc&password=123
如果参数中包含中文,那么会自动使用URL编码!
<c:url value="/Servlet1">
<c:param name="username" value="abc"/>
<c:param name="password" value="123"/>
</c:url>
- if:该标签的test属性必须是一个boolean类型的值,如果test的值为true,那么执行if标签的内容,否则不执行
if中的主要属性:
| 属性名称 | 说明 |
| — | — |
| test | 表达式结果为true执行,否则不执行 |
| var | 存储test的运算结果 |
| scope | var变量的JSP范围 |
- 样例:
<c:set var=“test” value=“hello”/>
<c:if test=“${not empty test}”>
<c:out value=“${test}”/>
</c:if>
- choose:choose标签对应Java中的if/else if/else结构。when标签的test为true时,会执行这个when的内容。当所有when标签的test都为false时,才会执行otherwise标签的内容
<c:set var=“score” value=“${param.score }”/>
<c:choose>
<c:when test=" s c o r e > 100 ∣ ∣ s c o r e < 0 " > 错误的分数: {score > 100 || score < 0}">错误的分数: score>100∣∣score<0">错误的分数:{score }</c:when>
<c:when test=“${score >= 90 }”>A级</c:when>
<c:when test=“${score >= 80 }”>B级</c:when>
<c:when test=“${score >= 70 }”>C级</c:when>
<c:when test=“${score >= 60 }”>D级</c:when>
<c:otherwise>E级</c:otherwise>
</c:choose>
forEach:用来循环遍历数组、集合,还可以用来计数方式来循环,forEach当前就是循环标签了,forEach标签有两种使用方式: 使用循环变量,指定开始和结束值,类似for(int i = 1; i <= 10; i++) {}
循环遍历集合,类似for(Object o : 集合)
forEach中的主要属性:
| 属性名称 | 说明 |
| — | — |
| var | 临时变量 |
| begin | 循环开始位置 |
| end | 循环结束位置 |
| step | 设置步长,等同于Java中i++或i+=2,默认为1 |
| count | 循环次数,从1开始 |
| items | 遍历的集合对象 |
| varStatus | 循环状态对象 |
样例:
<c:forEach var=“i” begin=“1” end=“10”>
${i}
</c:forEach>
<c:forEach begin=“1” end=“10” var=“i” step=“2” varStatus=“s”>
${i} ${s.index} ${s.count}
</c:forEach>
<c:forEach items=“${list}” var=“str” varStatus=“s”>
${s.index} ${s.count} ${str}
</c:forEach>
fmt标签库常用标签
fmt标签库是用来格式化输出的,通常需要格式化的有时间和数字。 格式化时间:
<%@ taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt” %>
…
<%
Date date = new Date();
pageContext.setAttribute(“d”, date);
%>
<fmt:formatDate value=“${d }” pattern=“yyyy-MM-dd HH:mm:ss”/>
格式化数字:
<%
double d1 = 3.5;
double d2 = 4.4;
pageContext.setAttribute(“d1”, d1);
pageContext.setAttribute(“d2”, d2);
%>
<fmt:formatNumber value=“${d1 }” pattern=“0.00”/>
<fmt:formatNumber value=“${d2 }” pattern=“#.##”/>
自定义标签
我们在JSP页面中使用标签就等于调用某个对象的某个方法一样,例如:<c:if test=””>,这就是在调用对象的方法一样。自定义标签其实就是自定义类一样,定义标签处理类:必须是Tag或SimpleTag的实现类
SimpleTag接口内容如下:
-
void doTag():标签执行方法
-
JspTag getParent():获取父标签
-
void setParent(JspTag parent):设置父标签
-
void setJspContext(JspContext context):设置PageContext
-
void setJspBody(JspFragment jspBody):设置标签体对象
public class HelloTag implements SimpleTag {
private JspTag parent;
private PageContext pageContext;
private JspFragment jspBody;
public void doTag() throws JspException, IOException {
pageContext.getOut().print(“Hello Tag!!!”);
}
public void setParent(JspTag parent) {
this.parent = parent;
}
public JspTag getParent() {
return this.parent;
}
public void setJspContext(JspContext pc) {
this.pageContext = (PageContext) pc;
}
public void setJspBody(JspFragment jspBody) {
this.jspBody = jspBody;
}
}
标签库描述文件(TLD):
标签库描述文件是用来描述当前标签库中的标签的!标签库描述文件的扩展名为tld,你可以把它放到WEB-INF下,这样就不会被客户端直接访问到了,创建hello.tld文件:
<?xml version="1.0" encoding="UTF-8"?><taglib version=“2.0” xmlns=“http://java.sun.com/xml/ns/j2ee”
xmlns:xml=“http://www.w3.org/XML/1998/namespace”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd ">
1.0
itcast
http://www.itcast.cn/tags
hello
cn.itcast.tag.HelloTag
empty
使用标签
在页面中使用标签分为两步:使用taglib导入标签库、使用标签
<%@ taglib prefix=“it” uri=“/WEB-INF/hello.tld” %>
…
it:hello/
下一篇:JavaWeb学习总结14–Filter&Listener
最后
码字不易,觉得有帮助的可以帮忙点个赞,让更多有需要的人看到
又是一年求职季,在这里,我为各位准备了一套Java程序员精选高频面试笔试真题,来帮助大家攻下BAT的offer,题目范围从初级的Java基础到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考
以下是部分内容截图
找小编(vip1024c)领取
在页面中使用标签分为两步:使用taglib导入标签库、使用标签
<%@ taglib prefix=“it” uri=“/WEB-INF/hello.tld” %>
…
it:hello/
下一篇:JavaWeb学习总结14–Filter&Listener
最后
码字不易,觉得有帮助的可以帮忙点个赞,让更多有需要的人看到
又是一年求职季,在这里,我为各位准备了一套Java程序员精选高频面试笔试真题,来帮助大家攻下BAT的offer,题目范围从初级的Java基础到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考
以下是部分内容截图
[外链图片转存中…(img-aI3Pw0oA-1721632290510)]
找小编(vip1024c)领取