JavaWeb快速入门--MVC&EL&JSTL

  • 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学习总结12–JSP

下一篇:JavaWeb学习总结14–Filter&Listener

最后

码字不易,觉得有帮助的可以帮忙点个赞,让更多有需要的人看到

又是一年求职季,在这里,我为各位准备了一套Java程序员精选高频面试笔试真题,来帮助大家攻下BAT的offer,题目范围从初级的Java基础到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考

以下是部分内容截图
架构面试专题及架构学习笔记导图.png

找小编(vip1024c)领取

在页面中使用标签分为两步:使用taglib导入标签库、使用标签

<%@ taglib prefix=“it” uri=“/WEB-INF/hello.tld” %>

it:hello/

上一篇:JavaWeb学习总结12–JSP

下一篇:JavaWeb学习总结14–Filter&Listener

最后

码字不易,觉得有帮助的可以帮忙点个赞,让更多有需要的人看到

又是一年求职季,在这里,我为各位准备了一套Java程序员精选高频面试笔试真题,来帮助大家攻下BAT的offer,题目范围从初级的Java基础到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考

以下是部分内容截图
[外链图片转存中…(img-aI3Pw0oA-1721632290510)]

找小编(vip1024c)领取

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值