JSTL详解,一篇文章足以

        今天在地铁刷公众号的时候看到这么一篇文章,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 }


JSTL详解,一篇文章足以_第1张图片

 

修改对象的属性值。

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 }


JSTL详解,一篇文章足以_第2张图片

 

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


     
     


JSTL详解,一篇文章足以_第3张图片

 

<%@ 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


     


JSTL详解,一篇文章足以_第4张图片

 

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


     
     
     


JSTL详解,一篇文章足以_第5张图片

 

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;
     %>
     
     


JSTL详解,一篇文章足以_第6张图片

 

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 }


JSTL详解,一篇文章足以_第7张图片

 

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 }    
     


JSTL详解,一篇文章足以_第8张图片

 

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 }
     

JSTL详解,一篇文章足以_第9张图片

 

 

格式化标签库

可以将日期和数字按照一定的格式进行格式化输出。

引入格式化标签库:

<%@ 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());
     %>
     
     
     

JSTL详解,一篇文章足以_第10张图片

 

 

数字格式化:

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


     


 

JSTL详解,一篇文章足以_第11张图片

 

函数标签库

引入函数标签库。

<%@ 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] }

JSTL详解,一篇文章足以_第12张图片

 

你可能感兴趣的:(Java开发)