1.5 JSP标准标签库(JSTL)(核心标签 out、set、remove、if、choose、forEach、forTokens、redirect)
JSTL(JavaServer Page Standard Tag Library):JSP标准标签库。它封装了JSP应用的通用核心功能。
1.准备工作
使用JSTL前需要下载所需文件,下载地址及安装教材可参阅:http://www.runoob.com/jsp/jsp-jstl.html
测试类 Person.java
public class Person {
private String name;
private String sex;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
2、c:out标签:类似out.printf(xxx)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body> <%
request.setAttribute("requestAttribute", "requestValue");
%> <jsp:useBean id = "per" class = "com.myclass.Person" scope = "request" /> <!-- Person per = new Person()--> <jsp:setProperty name = "per" property = "name" value = "zhansan"/> <c:out value = "zhansan"/><br> <!-- out标签直接输出字符串 -->
<c:out value = "${requestAttribute}"></c:out><br> <!-- out标签输出属性-->
<c:out value = "${per.name}"></c:out><br> <!-- out标签输出对象中属性 --> <!-- 当输出为空时,输出默认值-->
<c:out value = "${requestAttri}" default = "该属性不存在!"/><br> <!-- default设置默认值 -->
<c:out value = "${requestAttri}">该属性不存在</c:out><br> <!-- 标签体设置默认值 -->
<c:out value = "<%=null %>" default = "该属性不存在!"/> </body>
</html>

3、c:set标签:主要用于设置属性、对象中属性的值。类似setXXX,setAttribute(var,value);
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body> <%
request.setAttribute("requestAttri", "requestValue");
%> <jsp:useBean id = "per" class = "com.myclass.Person" scope = "request" /> <!-- Person per = new Person()--> <c:set var = "test" value = "test"/> <!-- 没有指定属性范围,默认是pageScope -->
${pageScope.test} <!-- <c:set var = "属性名称" value = "属性值" scope = "属性作用域" /> -->
<c:set var = "sessionName" value = "sessionValue" scope = "session"/> <!-- 在指定范围中设置属性 (value属性设置值) -->
<!-- 相当于session.setAttribute("sessionName","sessionValue") -->
<c:out value = "${sessionName}" />
<!-- <c:set var = "属性名称" scope = "属性作用域"> 属性值 </c:set> -->
<c:set var = "requestName" scope = "request">requestValue</c:set> <!--在指定范围中设置属性 (标签体设置值)-->
<!-- 相当于request.setAttribute("requestName","requestValue") -->
<c:out value = "${requestName}" />
<!-- <c:set target = "对象名称" property = "属性名" value = "属性值"> -->
<c:set target = "${per}" property = "name" value = "zhangsan"/> <!--通过标签 设置对象属性 类似 per.name = "zhangsan"-->
<c:out value="${per.name}"></c:out>
<c:out value="${per}"></c:out> <!-- 此处的${per} 类似 System.out.print(per)--> </body>
</html>

4、c:remove标签:移除属性,类似(xxx.remove(name))
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "java.util.*,com.myclass.*" %>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:set var = "testRemove" value = "value" scope = "session"/>
<!-- <c:remove var = "属性名" scoep = "[page|request|session|application]" /> 删除指定作用域中的var属性-->
<c:remove var="testRemove" scope="session"/> <!-- 类似 session.removeAttribute("testRemove") -->
<c:out value = "${tempRemove }" default="该属性不存在"/>
</body>
</html>

5、c:if 标签:用于判断,类似if(test == [true | false]){语句}
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:set var = "age" value = "19" scope = "session"/>
<%-- <c:if test = "判断条件" var = "属性名" scope = "设置保存范围" /> --%>
<!-- 判断的结果(true|false)会存储在var中 -->
<c:if test = "${age >= 18 }" var="isAdult" scope = "session" >
<h2> 成年</h2> <!-- 满足条件执行的语句 -->
</c:if>
<c:if test = "${!isAdult}" > <!-- !isAdult 和isAdult互反所以只会执行一个 -->
未成年
</c:if>
是否成年:${isAdult} </body>
</html>

6、c:choose标签:分支选择,类似switch。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "java.util.*,com.myclass.*" %>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:set var = "score" value = "60" scope = "session"/>
<c:choose >
<c:when test="${score >= 90}"> 优秀</c:when> <!-- test为true则执行对应语句并跳出choose -->
<c:when test="${score >= 80}"> 良好</c:when>
<c:when test="${score >= 70}"> 一般</c:when>
<c:when test="${score >= 60}"> 及格</c:when>
<c:otherwise>不及格</c:otherwise> <!-- 所有选项都不满足则执行otherwise中的语句 -->
</c:choose> </body>
</html>

7、c: forEach标签:主要用于输出可迭代对象和控制迭代次数(for)
实现了Collection接口的对象,都可以使用forEach输出。
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- forEach输出list -->
<%
List<String> list = new LinkedList<String>();
for(int i = 0; i < 5; i++){
list.add("赵" + i);
}
request.setAttribute("list", list);
%> <c:forEach items = "${list}" var = "li">
<c:out value = "${li}"/><!-- li就代表链表中一个对象(String) -->
</c:forEach><br> <!-- forEach输出map -->
<%
Map<String,Person> map = new HashMap<String,Person>();
for(int i = 0; i < 5; i++){
map.put("" + i,new Person("钱" + i, i % 2 == 0 ? "man" : "woman", i));
}
request.setAttribute("map",map);
%>
<c:forEach items = "${map}" var = "m" ><!-- m代表map中一个对象,可通过m.key获取键,m.value获取值(person对象) -->
${m.key } ${m.value.name} ${m.value.sex} ${m.value.age}<br>
</c:forEach><br> <!-- 控制迭代次数 并输出状态-->
<table>
<td>值</td><td> 是否是第一个</td><td>是否是最后一个</td><td>计数(当前是第几个)</td>
<c:forEach var = "i" begin="1" end = "11" step = "2" varStatus="st"> <!-- 步长(step)为2 for(i = 1; i <= 11 ; i += 2 ) -->
<tr><!-- 迭代的属性 当前属性是否是第一个 当前属性是否是最后一个 计数是第几个属性,从1开始-->
<td>${i }</td><td> ${st.first}</td><td>${st.last }</td><td>${st.count}</td>
</tr>
</c:forEach>
</table> </body>
</html>

8、forTokens标签: 将字符串分割成子串然后迭代。类“www.google.com”.split(".")
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "java.util.*,com.myclass.*" %>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body> <!-- 0 1 2 --> <!--类似 l[3] = {"www","google","com"}; for(i = 0; i <=2 ; i+=2) printf(l[i]) -->
<c:forTokens items="www.google.com" delims="." var = "l" begin = "0" end = "2" step = "2">
${l}<br>
</c:forTokens>
<!-- items为被切割的字符串,delims 为切割的依据 -->
</body>
</html>

9.c:redirect:重定向将重定向到指定URL。
<%@ page language="java" import = "java.util.*,com.myclass.*" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:redirect url="http://www.baidu.com"></c:redirect> <!-- 重定向到百度 -->
</body>
</html>

参考资料:
https://blog.csdn.net/qq_42246139/article/details/80623607
http://www.runoob.com/jsp/jsp-jstl.html
1.5 JSP标准标签库(JSTL)(核心标签 out、set、remove、if、choose、forEach、forTokens、redirect)的更多相关文章
- JSP标准标签库(JSTL)--核心标签库 c
核心标签库是JSTL中最重要的部分,可以完成输出,判断,迭代等操作 功能分类: 1. 基本标签: <c:out>:输出属性内容 <c:set>:设置属性内容 <c:rem ...
- 小峰servlet/jsp(6)jstl核心标签库
一.引入jstl 需要jstl.jar;standard.jar; 二.jstl核心标签库: c:out 内容输出标签; c:set 用来设置4种属性范围值的标签: c:re ...
- Web---JSTL(Java标准标签库)-Core核心标签库、I18N国际化、函数库
前面为JSTL中的常用EL函数,后面的为具体演示实例! JSTL简介: JSTL(Java Standard Tag Library) –Java标准标签库. SUN公司制定的一套标准标签库的规范. ...
- JSTL标签库之核心标签
一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...
- javaweb学习总结(二十八)——JSTL标签库之核心标签
一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...
- javaWeb学习总结(9)- JSTL标签库之核心标签
一.JSTL标签库介绍 JSTL标签库的使用是为弥补html标签的不足,规范自定义标签的使用而诞生的.使用JSLT标签的目的就是不希望在jsp页面中出现java逻辑代码 二.JSTL标签库的分类 核心 ...
- JSP标准标签库(JSTL)--XML标签库 x
³在开发中XML解析的操作是非常烦琐的,幸运的是在JSTL中专门提供了用于XML解析的操作,这样用户就可以不用费力的去研究SAX或DOM等操作的使用,就可以轻松的进行XML文件的解析处理. XML标 ...
- JSP标准标签库(JSTL)--SQL标签库 sql
了解即可.SQL标签库 No. 功能分类 标签名称 描述 1 数据源标签 <sql:setDataSource> 设置要使用的数据源名称 2 数据库操作标签 <sql:query&g ...
- JSP标准标签库(JSTL)--国际化标签库 fmt
JSTL中使用fmt.tld作为格式化标签库的定义文件 No. 功能分类 标签名称 描述 1 国际化标签 <fmt:setLocale> 设置一个全局的地区代码 2 <fmt:req ...
- JSP标准标签库(JSTL)--函数标签库 fn
和String的方法类似,就是对String的一种封装. No. 函数标签名称 描述 1 ${fn:contains()} 查询某字符串是否存在,区分大小写 2 ${fn:containsIgnore ...
随机推荐
- HDU3829:Cat VS Dog(最大独立集)
Cat VS Dog Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 125536/65536 K (Java/Others)Total ...
- ng websocket
ng使用websocket 1.安装依赖库npm install ws --save 2.安装类型定义文件 npm install @types/ws --save 3.编写服务 import { I ...
- 1、linux下mysql5.5.20安装过程报错汇总
1.Access denied for user 'root'@'localhost' (using password: YES) 这个提示是因为root帐户默认不开放远程访问权限,所以需要修改一下相 ...
- c++(类继承)示例[仅用于弱弱的博主巩固知识点用哦,不好勿喷]
测试代码: Animals.h: #pragma once #include<string> class Animals { protected: std::string Food; in ...
- 纯手工 CheckboxTree 实现
数据结构及页面显示格式: INSERT INTO AS_CombRules VALUES('', '', '', '', '', '', '') 实现 CheckboxTree 功能: html代码: ...
- Java拷贝构造函数初尝试
浅复制(浅克隆) :被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象. 深复制(深克隆) :被复制 ...
- c# vs2008报表
1. 做报表没做几次,第一次做的都忘记了,还好今天做一下就把报表弄成功了.报表中“参数字段”是可以变的,就是说需要自己赋值或者是要计算的.而在苏据库字段里面的是固定的值.不需要计算(注:有的字段查询出 ...
- 【CF1027F】Session in BSU(dsu,基环树)
题意:给出n场考试,每场考试有2天可以通过(第ai与bi天).每天最多参加一场考试,现在要求所有考试全部通过的最小天数 n<=1e6,1<=a[i]<b[i]<1e9 思路:F ...
- SSM初步整合一
SSM(spring+springmvc+mybatis)初步整合一配置步骤: 步骤一.导入所需jar包 步骤二 .配置web.xml文件 <?xml version="1.0&quo ...
- react框架
react 其实react=vue, 区别:vue- 双向数据绑定, react 单向数据绑定. 中文文档:https://react.docschina.org/ 第一步:安装方式,不能直接引入 ...