JSTL全称为 JSP Standard Tag Library 即JSP标准标签库
JSTL作为最基本的标签库,提供了一系列的JSP标签,实现了基本的功能:集合的遍历、数据的输出、字符串的处理、数据的格式化等等!
1. 为什么使用
EL表达式可以很方便地引用一些JavaBean以及其属性但是仍然不够完美,它不能遍历集合,做逻辑的控制。
Scriptlet的可读性,维护性,重用性都十分差!JSTL与HTML代码十分类似,遵循着XML标签语法,使用JSTL让JSP页面显得整洁,可读性非常好,重用性非常高,可以完成复杂的功能!
在JSP中不推荐使用scriptlet输出,推荐使用JSP标签
2. 使用JSTL标签库步骤
- 导入jstl相关jar包
- 引入标签库:taglib指令:
<%@ taglib %>
-
3. Core标签库
core标签库是JSTL的核心标签库,实现了最基本的功能:流程控制、迭代输出等操作!
core标签库的前缀一般是c
常用的三个JSTL标签3.1 c:if
属性:
test 必须属性,接受boolean表达式
如果表达式为true,则显示if标签体内容,如果为false,则不显示标签体内容 注意:c:if 标签没有else情况,想要else情况,则可以在定义一个c:if标签
<%--如果带过来的名字是admin,那么可以登陆--%>
<c:if test="${param.name=='admin'}">
用户名:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="登陆">
</c:if>
<%--如果带过来的名字是admin888,那么就是注册--%>
<c:if test="${param.name=='admin888'}">
用户名:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="注册">
</c:if>
3.2 c:choose
它相当于java代码的switch语句
使用choose标签声明,相当于switch声明
使用when标签做判断,相当于case
使用otherwise标签做其他情况的声明,相当于default<c:choose>
<c:when test="${param.name=='admin'}">
欢迎管理员
</c:when>
<c:when test="${param.name=='user'}">
欢迎用户
</c:when>
<c:otherwise>
识别不出你是谁
</c:otherwise>
</c:choose>
3.3 c:forEach
forEach为循环标签,相当于Java中的while和for
之前我们在使用EL表达式获取到集合的数据,遍历集合都是用scriptlet代码循环,现在我们学了forEach标签就可以舍弃scriptlet代码
向Session中设置属性,属性的类型是List集合
向Session中设置属性,属性的类型是List集合
遍历session属性中的List集合,items:即将要迭代的集合。var:当前迭代到的元素 ```html <% List list = new ArrayList<>(); list.add(“admin”); list.add(“zhangsan”); list.add(“wanwu”);session.setAttribute(“list”, list); %>
=====================================================
Map对象有稍微地不一样保存的不是每个迭代的对象,而是Map.Entry
```html
<%
Map map = new HashMap();
map.put("1", "zhongfucheng");
map.put("2", "xiaohong");
map.put("3", "xiaoming");
session.setAttribute("map",map);
%>
<c:forEach var="me" items="${map}" >
${me.key} ${me.value}<br>
</c:forEach>