JSTL标签库
1、JSTL:JSP Standard Tag Library ,JSP标准标签库,JSP的内置标签
2、JSP的标签运行在服务器(Tomcat)中,和HTML标签不同
3、JSP标签的出现是为了简化编程,去除掉<% %>方式。底层也是Java代码
4、
5、引入jstl标签库,使用taglib指令
<%@ taglib prefix=" " uri=" "%>
<!-- 引入了JSTL标签库 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
使用必须先使用前缀:<c:标签名 属性>输出内容(可以直接是HTML标签)</c:标签名>
6、JSTL核心标签
- 核心标签库(core)--- c
- fn.tld --- EL函数库
7、EL表达式和JSTL标签操作的都是域对象中的属性和属性值
out标签
1、作用:输出域对象的值或者常量
2、属性
- value -- 输出的内容
- default -- 默认值
- escapeXml -- 设置默认转义,默认是转义
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h4>JSTL方式</h4>
<%
int a = 10;
request.setAttribute("num", a);
%>
<c:out value="${ requestScope.num }"></c:out>
<c:out value="11"></c:out>
<!-- default 设置输出的默认值 -->
<c:out value="${ num2 }" default="默认默认"></c:out>
<!-- escapeXml属性 -->
<c:out escapeXml="false" value="<a href='http://www.baidu.com'>百度</a>"></c:out>
</body>
</html>
set标签
1、作用:向域中存入值
2、<c:set >
3、属性
- var -- 属性名称
- value -- 属性值
- scope -- 域范围
<c:set var="username" value="zhangsan" scope="page"></c:set>
<c:out value="${ pageScope.username }"></c:out>
${ pageScope.username }
if标签
1、if标签可以用来判断
2、属性
- test -- 判断条件返回true或者false
- var -- test返回的结果保存到var中
- scope -- 域的范围
<c:set var="num" value="10" scope="page"></c:set>
<c:if test="${ pageScope.num eq 10 }" var="i" scope="page">
num = 10
${ pageScope.i }
</c:if>
choose标签
1、作用:判断数据
2、语法:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h4>JSTL方式</h4>
<c:set var="num" value="10" scope="page"></c:set>
<c:choose>
<c:when test="${ pageScope.num >= 10 }">
num>=10
</c:when>
<c:when test="${ pageScope.num < 10 }">
num<10
</c:when>
<c:otherwise>
其他
</c:otherwise>
</c:choose>
</body>
</html>
foreach标签
1、迭代数据。遍历list集合
2、语法:<c:forEach>
3、属性:
和java中的foreach比较
for(String str : 集合(strs))
- var -- 循环遍历的数据保存到var中,相当于str变量
- intems -- 相当于集合(strs),从域对象中取值
普通for循环for(int i = 0;i<10;i++){}
- begin -- 循环从哪里开始 int i = 0
- end -- 循环到哪里结束 i < 10
- step -- 步长 i++
- varStatus -- 迭代相关的信息
-- index -- 下标值
-- count -- 计数器
-- first -- 判断是否是第一个成员
-- last -- 判断是否是最后一个成员
案例:将用户列表显示在页面上
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h4>JSTL方式</h4>
<h4>获取request域中的list集合</h4>
<c:forEach var="user" items="${ requestScope.ulist }">
${ user.username }
${ user.password }
</c:forEach>
<h4>用户的信息列表</h4>
<table border="1" width="60%" cellpadding="10">
<tr>
<th>序号</th>
<th>姓名</th>
<th>密码</th>
<th>操作</th>
</tr>
<c:forEach var="user" items="${ requestScope.ulist }" varStatus="s">
<tr align="center">
<td>${ s.count }</td>
<td>${ user.username }</td>
<td>${ user.password }</td>
<td><a href="#">删除</a></td>
</tr>
</c:forEach>
</table>
</body>
</html>
url标签
1.作用:有提交的地址相关。(超链接 form表单 img的src属性)
2.好处:假如你使用form的action的编写地址
<form action="${pageContext.request.contextPath}/xxx">
如果使用<c:url的标签> <form action="<c:url value='/xxx' >">
3.特点:如果不写项目名,默认给你加上项目名称。
4.好处:使用<c:url>,默认给你拼接jsessionid session的追踪(在请求的地址默认给你jsessionid=XCSDFSDFSD)
remove标签
1、作用:删除域对象中的属性
2、<c:remove >
- var -- 要删除属性的名称 <c:remove var="${ xx }" scope="page"></c:remove>
- scope -- 域范围
catch标签
1、作用:捕获异常
2、<c:catch >
3、属性
- var -- 如果发生了异常,把异常的信息保存到var变量中