jstl
Jstl : JSP Standard Tag Library : JSP标准标签库
JSTL标签库的使用主要是为弥补html标签的不足和jsp页面处理逻辑的缺陷
在使用jstl之前需要将jsp的包导入,然后引入标签库
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
1:jstl 标签库分类
core 核心标签库 (使用的最多)
fmt 完成国际化的 (很少使用)
functions jstl中的函数库 (基本不用)
sql 主要是在jsp页面上操作数据库 (基本不用)
xml 操作xml文件的(基本不用)
2:使用说明
JSTL的核心标签库标签共14个,使用这些标签能够完成JSP页面的基本功能,减少编码工作。
Jstl 的标签一般都会和EL表达式一起使用
c:out value=”” 输出语句 有个default 属性,如果value为空,则输出默认
c:set var=“” value=“” scope=“” 给域对象设置值,scope可以省略,默认在本页有效
c:remove var=“” scope=“” 删除域对象中的某个值,scope可以省略
c:catch 捕获异常,不会使用
c:forTokens items=“” delims=“” 使用指定的分隔符切割字符串
c:import url=“” 在当前页面上引入其他的页面内容 类似于 前面学习的jsp:include,注意不是导入
c:redirect 重定向
c:url 在页面上可以显示超链接等信息,完成页面的跳转
c:choose标签,c:when标签,c:otherwise标签,类似于switch
用的比较多的是:c:if标签,c:forEach标签
一般和el一起使用
<%@ page import="com.sky.pojo.User" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<%
// el取对象的值
User user = new User(1001,"李白","男",50);
request.setAttribute("user",user);
%>
${user.id}---${user.name}---${user.sex}---${user.age}<br>
<%
// el取集合中对象的值
User user1 = new User(1001,"李白","男",50);
User user2 = new User(1002,"杜甫","男",40);
User user3 = new User(1003,"郭嘉","男",30);
List<User> users = new ArrayList<User>();
users.add(user1);
users.add(user2);
users.add(user3);
request.setAttribute("users",users);
%>
<%-- 通过数组的下标取值--%>
${users[0].id}---${users[0].name}---${users[0].sex}---${users[0].age}<br>
${users[1].id}---${users[1].name}---${users[1].sex}---${users[1].age}<br>
${users[2].id}---${users[2].name}---${users[2].sex}---${users[2].age}<br>
<%-- 通过集合的get取值--%>
${users.get(0).id}---${users.get(0).name}---${users.get(0).sex}---${users.get(0).age}<br>
${users.get(1).id}---${users.get(1).name}---${users.get(1).sex}---${users.get(1).age}<br>
${users.get(2).id}---${users.get(2).name}---${users.get(2).sex}---${users.get(2).age}<br>
<%
// el取list集合中HashMap对象的值
HashMap map1 = new HashMap();
map1.put("name","苏轼");
map1.put("sex","男");
map1.put("age",30);
HashMap map2 = new HashMap();
map2.put("name","苏洵");
map2.put("sex","男");
map2.put("age",58);
HashMap map3 = new HashMap();
map3.put("name","苏辙");
map3.put("sex","男");
map3.put("age",29);
List<HashMap> list = new ArrayList<HashMap>();
list.add(map1);
list.add(map2);
list.add(map3);
request.setAttribute("lists",list);
%>
${lists[0].get("name")}---${lists[0].get("sex")}---${lists[0].get("age")}<br>
${lists[1].get("name")}---${lists[1].get("sex")}---${lists[1].get("age")}<br>
${lists[2].get("name")}---${lists[2].get("sex")}---${lists[2].get("age")}<br>
<c:if test="${not empty lists}">再见</c:if><br>
<c:forEach var="out" items="${lists}">
${out.get("name")}---${out.get("sex")}---${out.get("age")}<br>
</c:forEach>
<table cellpadding="0px" cellspacing="0px" border="1px" align="center" width="200px">
<tr>
<th>姓名</th>
<th>性别</th>
<th>年龄</th>
</tr>
<tr>
<c:forEach var="lie" items="${users}">
<tr align="center">
<td>${lie.name}</td>
<td>${lie.sex}</td>
<td>${lie.age}</td>
</tr>
</c:forEach>
</tr>
</table>
</body>
</html>