JSTL核心标签库详解

JSP中许多自定义的标签库,已经由JCP的成员Apache定义好并已经打包。我们只需要导入该JAR包后,在页面中使用taglib指令将其导入即可使用。这套标签库称为JSTL(JSP Standard Tag libarary)即JSP标准标签库

JSTL中定义了五个标签库
  • 核心标签库:主要用于完成基本的逻辑运算(重点)
  • 格式化标签库:主要用于完成日期、数字的格式化显示
  • EL函数标签库:定义了若干个EL函数
  • SQL操作标签库:完成SQL操作(已经不使用,由java完成)
  • XML操作标签库:完成XML操作(已经不使用,由java完成)

上面是对JSTL简单了解,该博客主要写关于核心标签库,ok,先看下目录

博客目录

1、写JSTL的准备
2、核心标签库常用的标签
3、c:set
4、c:remove
5、c:catch
6、c:out
7、c:if
8、c:choose
9、c:forEach(重点)

一、写JSTL的准备

写JSTL之前需要导入两个jar包

  • jstl.jar
  • standard.jar

JSTL核心标签库详解_第1张图片

将以上两个jar包导入后,可以在standard.jar下的META-INF可以找到c.tld,在c.tld中都是核心标签库的自定义标签

JSTL核心标签库详解_第2张图片

taglib指令在核心标签库中的使用

使用JSTL核心标签库,需要在页面中通过taglib指令,将标签库导入

这里写图片描述

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

二、核心标签库常用的标签

  • c:set
  • c:remove
  • c:out
  • c:catch
  • c:if
  • c:choose
  • c:forEach

三、c:set

用于进行变量定义,并将变量存放到指定域属性空间,为Bean的属性赋值,设置Map的key与value


Beantest.java

package linjie.com;

public class Beantest{
    private String name;
    private int age;
    public Beantest() {}
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

}

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    import="linjie.com.Beantest"
    import="java.util.*"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>




Insert title here


    
    
    
    name=${requestScope.name }

------------------------------
<% Beantest be=new Beantest(); pageContext.setAttribute("be", be); %> name=${be.name }

------------------------------
<% Map map=new HashMap(); pageContext.setAttribute("map", map); %> map=${map }
name=${map.name }
age=${map.age }

客户浏览器显示结果

JSTL核心标签库详解_第3张图片


四、c:remove

从域属性空间中删除指定变量

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>




Insert title here


    
    
    
    

    删除指定域空间中的指定变量
name_request=${requestScope.name }
name_page=${pageScope.name }
name_session=${sessionScope.name }
name_application=${applicationScope.name }

-----------------------------
删除所有域中的属性值
name_request=${requestScope.name }
name_page=${pageScope.name }
name_session=${sessionScope.name }
name_application=${applicationScope.name }

客户浏览器显示结果

JSTL核心标签库详解_第4张图片


五、c:catch

获取异常信息

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>




Insert title here


    
        <%
            int i=3/0;
        %>
    
    ex=${ex.message }

客户浏览器显示结果异常

JSTL核心标签库详解_第5张图片


六、c:out

用于在页面上输出EL表达式的值

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>




Insert title here





    

    name1=
name2= name3=${name }

客户浏览器显示结果

JSTL核心标签库详解_第6张图片

EL表达式不用就可以在页面上输出,使用< c:out/>好处就是:
  • 可以控制是否解析HTML标签,还可以设定初始值(如下)

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    
    
    
    
    Insert title here
    
    
        name=
        
    name=${empty name ? 'linjie' : name }

客户浏览器显示结果

JSTL核心标签库详解_第7张图片


七、c:if

用于实现对于条件的判断

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>




Insert title here


    


    
    
        成功执行...
    


客户浏览器显示结果

JSTL核心标签库详解_第8张图片


八、c:choose

进行选择

框架


    
    

    

    

    

    
    

    

一个简单分页DEMO(当前页为第一页,只有下一页、尾页可选)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>




Insert title here


    
    
    
        
            首页     上一页  下一页 尾页
        

        
            首页   上一页    下一页 尾页
        

        
        首页  上一页 下一页 尾页
        

        
        首页  上一页 下一页 尾页
        
    


客户浏览器显示结果

JSTL核心标签库详解_第9张图片


九、c:forEach

用于循环遍历数组、list、set、map集合

1、简单遍历数组、map、set、list

<%@ page language="java" contentType="text/html; charset=UTF-8"
    import="java.util.*"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>




Insert title here


    -----------遍历list-------------
<% List names=new ArrayList(); names.add("林杰"); names.add("linjie"); pageContext.setAttribute("names",names); %> ${name }

-----------遍历set-------------
<% Set schools=new HashSet(); schools.add("浙大"); schools.add("北大"); pageContext.setAttribute("schools", schools); %> ${school }

-----------遍历map------------
<% Map maps=new HashMap(); maps.put("name", "林杰"); maps.put("address", "浙江"); pageContext.setAttribute("maps", maps); %> ${map }

------------遍历数组 int[]
<% int[] ages={20,21,22}; pageContext.setAttribute("ages", ages); %> ${age }

客户浏览器显示结果

JSTL核心标签库详解_第10张图片

2、begin、end、step用法

<%@ page language="java" contentType="text/html; charset=UTF-8"
    import="java.util.*"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>




Insert title here


    <%
        List names=new ArrayList();
        names.add("林杰");
        names.add("linjie");
        names.add("luxy");
        names.add("king");
        names.add("bbbb");
        pageContext.setAttribute("names",names);
    %>

    
        ${name }

---------------------------------
${num }

客户浏览器显示结果

JSTL核心标签库详解_第11张图片

3、高级功能(表格处理)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    import="java.util.*"
    import="linjie.com.*"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>




Insert title here




    <%
        List be=new ArrayList();
        be.add(new Beantest("林杰",20));
        be.add(new Beantest("aa",21));
        be.add(new Beantest("bb",22));
        be.add(new Beantest("cc",23));
        pageContext.setAttribute("be", be);
    %>
    
            
序号 姓名 年龄
${vs.count } ${b.name } ${b.age }

客户浏览器显示结果

JSTL核心标签库详解_第12张图片

你可能感兴趣的:(●,Java基础)