今天在地铁刷公众号的时候看到这么一篇文章,JSTL详解,虽然现在已经很少项目用到了,页面的动态处理都是用饿Vue.js,不过当作复习一下也是挺好的,而且文章确实写的很简洁。
说实话,JSTL的标签库我自己用过的就只有核心标签库,但是实际开发中常用到的估计不止这么一下,下面我们看一下这篇文章。
转载自:公众号:Java大联盟,原创:南风。https://mp.weixin.qq.com/s/7YnCwq9fQ6CleqkZ8LRKew
什么是JSTL?
JSP Standard Tag Library,简称JSTL,JSP标准标签库,提供了一系列的标签供开发者在JSP页面中使用,编写各种动态功能。
常用JSTL标签库
JSTL提供了很多标签,以库为单位进行分类,实际开发中最常用的标签库有3种。
1.核心标签库
2.格式化标签库
3.函数标签库
如何使用?
1.Maven添加JSTL依赖jar文件。
jstl
jstl
1.2
2.JSP页面导入JSTL标签库,prefix设置前缀,相当于别名,在JSP页面中可以直接通过别名使用标签,uri设置对应的标签库。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3.使用标签完成功能。
核心标签库
引入核心标签库。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
set:向域对象中添加一个数据。
var为变量名,value为变量值,scope为保存的域对象,默认为pageContext。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Insert title here
${requestScope.message }
修改对象的属性值。
property为属性名,value为属性值,target为对象名,注意这里需要使用EL表达式。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="com.southwind.entity.Reader" %>
Insert title here
<%
Reader reader = new Reader();
request.setAttribute("reader", reader);
%>
${reader }
out:输出域对象中的数据。
value为变量名,default的作用是若变量不存在,则输出default的值。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Insert title here
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Insert title here
remove:删除域对象中的数据。
var为要删除的变量名。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Insert title here
catch:捕获异常。
若JSP的Java脚本抛出异常,会直接将异常信息打印到浏览器。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Insert title here
<%
int num = 10/0;
%>
使用catch可以将异常信息保存到域对象中。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Insert title here
<%
int num = 10/0;
%>
if :流程控制。
test为判断条件,如果条件成立,会输出标签内部的内容,否则不输出。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Insert title here
num2}">${num1 } > ${num2 }
${num1 } < ${num2 }
choose:流程控制。
相当于if-else的用法,when相当于if,otherwise相当于else。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Insert title here
num2}">${num1 }
${num2 }
forEach:迭代集合。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="com.southwind.entity.Reader" %>
<%@ page import="java.util.*" %>
Insert title here
<%
Reader reader1 = new Reader();
reader1.setId(1);
reader1.setName("张三");
Reader reader2 = new Reader();
reader2.setId(2);
reader2.setName("李四");
Reader reader3 = new Reader();
reader3.setId(3);
reader3.setName("王五");
List list = new ArrayList();
list.add(reader1);
list.add(reader2);
list.add(reader3);
request.setAttribute("list", list);
Map map = new HashMap();
map.put(1, reader1);
map.put(2, reader2);
map.put(3, reader3);
request.setAttribute("map", map);
Set set = new HashSet();
set.add(reader1);
set.add(reader2);
set.add(reader3);
request.setAttribute("set", set);
%>
${reader }
${reader }
${reader }
格式化标签库
可以将日期和数字按照一定的格式进行格式化输出。
引入格式化标签库:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
日期格式化:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ page import="java.util.*" %>
Insert title here
<%
pageContext.setAttribute("date", new Date());
%>
数字格式化:
value为数值,maxIntegerDigits为整数位,maxFractionDigits为小数位。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
Insert title here
函数标签库
引入函数标签库。
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
函数标签库的使用与其他标签稍有区别,类似与EL表达式。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
Insert title here
<%
pageContext.setAttribute("info", "Java,C");
%>
判断是否包含"Ja":${fn:contains(info,"Java") }
判断是否以"Ja"开始:${fn:startsWith(info,"Ja") }
判断是否以"C"结尾:${fn:endsWith(info,"C") }
求"va"的下标:${fn:indexOf(info,"va") }
"Java"替换为"JavaScript":${fn:replace(info,"Java","JavaScript") }
截取:${fn:substring(info,2,3) }
以","分割:${fn:split(info,",")[1] }