JSP标准标签库(JSTL)

JSTL

  • JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat4.x。在JSP 2.0中也是作为标准支持的。

  • 如果要使用JSTL,则必须将jstl.jar和 standard.jar文件放到classpath中,如果你还需要使用XML processing及Database access(SQL)标签,还要将相关JAR文件放到classpath中,这些JAR文件全部存在于下载回来的zip文件中。


JSTL API文档下载

链接:http://pan.baidu.com/s/1o8FHODW 密码:1ayc


JSTL在线教程

http://www.runoob.com/jsp/jsp-jstl.html


Jar包下载地址:

http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/


Maven地址:


<dependency>
    <groupId>javax.servletgroupId>
    <artifactId>jstlartifactId>
    <version>1.2version>
dependency>


根据JSTL标签所提供的功能,可以将其分为5个类别。

  • 核心标签
  • 格式化标签
  • SQL 标签
  • XML 标签
  • JSTL 函数



核心标签库

JSTL 前置名称 URL 范例
核心标签库 c http://java.sun.com/jsp/jstl/core <c:out>


功能

功能分类 标签名称
表达式操作 out、set、remove、catch
流程控制 if、choose、when、otherwise
迭代操作 forEach、forTokens
URL操作 import、param、url、redirect


要想使用这些功能,必须在jsp中引用

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


<c:set>

  • 主要用来将变量存储至JSP范围中 或是JavaBean的属性或Map对象中。


属性列表:

名称 说明 必须 默认值
value 要被存储的值
var 欲存入的变量名称
scope var变量的JSP范围 page
target JavaBean或Map对象
property 指定target对象的属性


set var="username" value="lingdu" />
set var="password" >123set>


<c:out>

  • 主要用来显示数据的内容


属性列表:

名称 说明 必须 默认值
value 需要显示出来的值
default 如果value的值为null,则显示default的值
escapeXml 是否转换特殊字符,如:<转换成 & lt; true


out value="${param.username}" default="username"/>
out value="${param.password}" default=" password "/>


<c:remove>

  • 主要负责移除变量


属性列表:

名称 说明 必须 默认值
var 欲移出的变量名称
scope Var变量的JSP范围 page


remove var="username" scope="session"/>

${sessionScope.username}   —>输不出结果


<c:if>

  • 主要用于进行if判断,如果为true,则输出标签体中的内容
名称 说明 必须 默认值
test 如果表达式的结果为true,则执行体内容,false则相反
var 用来存储test运算的结果(true或false)
scope Var变量的JSP范围 page

if test="${username=='haha' }">
    out value="true">out>
if>

if test="${username != 'haha' }">
    out value="false">out>
if>


<c:choose>,<c:when>,<c:otherwise>

  • 作用相当于if-else


属性列表:

名称 说明 必须 默认值
test 如果表达式的结果为true,则执行体内容,false则相反


<c:choose>
    <c:when test="${username=='haha' }">
        <c:out value="true">c:out>
    c:when>

    <c:otherwise>
        <c:out value="false">c:out>
    c:otherwise>
c:choose>


<c:forEach>

  • 循环控制,它可以将数组,集合(Collection)中的成员循序浏览一遍。


属性列表:

名称 说明 必须 默认值
var 用来存放现在指定的成员
items 被迭代的集合对象
varStatus 用来存放现在指的相关成员信息
begin 开始的位置 0
end 结束的位置 最后一个成员
step 每次迭代的间隔数 1



遍历数组

    <%
        String myArray[] = { "yellow", "red", "blue", "black" };
        request.setAttribute("myArray", myArray);
    %>
    <c:forEach items="${myArray }" var="myStr">
        <c:out value="${myStr }">c:out>
    c:forEach>


循环次数

<c:forEach begin="0" end="10" step="1" varStatus="st">
    <c:out value="${st.index }">c:out>
c:forEach>


<c:forTokens>

  • 将字符串以指定的一个或多个字符分割开来
<%
    request.setAttribute("color", "red,green,yellow");
%>
<c:forTokens items="${color }" delims="," var="co" varStatus="status">
    <c:out value="${status.index }">c:out>
    <c:out value="${co }">c:out>
c:forTokens>

SQL 标签库

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


标签 说明
<sql:setDataSource> 指定数据源
<sql:query> 运行SQL查询语句
<sql:update> 运行SQL更新语句
<sql:param> 将SQL语句中的参数设为指定值
<sql:dateParam> 将SQL语句中的日期参数设为指定的java.util.Date 对象值
<sql:transaction> 在共享数据库连接中提供嵌套的数据库行为元素,将所有语句以一个事务的形式来运行


sql:setDataSource

属性 描述 必须 默认值
driver 注册的JDBC驱动程序类的名称 No None
url JDBC的数据库连接 URL No None
user 数据库用户名 No None
password 数据库用户名 No None
dataSource 数据库源 No None
var 变量的名称表示数据库 No Set default
scope 变量的范围来表示的数据库 No Page


sql:query

属性 描述 必须 默认值
sql SQL命令来执行(返回一个ResultSet) No Body
dataSource 数据库连接使用(覆盖默认的) No Default database
maxRows 结果存储在变量的最大数量 No Unlimited
startRow 从开始录制,结果中的行数目 No 0
var 变量的名称表示数据库 No Set default


sql:update

属性 描述 必须 默认值
sql SQL命令来执行(不应该返回一个ResultSet) No Body
dataSource 数据库连接使用(覆盖默认的) No Default database
var 变量的名称来存储受影响的行数 No None
scope 变量的作用域来存储受影响的行数 No Page


使用${变量名}可以取出受影响的行数


sql:param

属性 描述 必须 默认值
value 参数的值 No Body


<sql:update dataSource="${db}" sql="insert into test (id) values(?)"  var="up">
<sql:dateParam value=“1"/>
sql:update>


数据库的增删该查操作




连接数据库(定义为头文件): database.jsp

<%-- 
        连接数据库的标签
        <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
 --%>

<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<sql:setDataSource driver="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/lingdu?useSSL=false" user="root"
    password="123456" var="db" />


查询数据库 select_sql.jsp

<%-- 引用头文件 --%>
<%@ include file="database.jsp"%>

<%-- 
    //sql语句的两种两种写法

    1、可以在标签体中包涵sql语句
    "userList"  dataSource="${db }">
        select * from tb_user
    

 --%>

<%--   
    2、添加sql标签属性
--%>
<sql:query var="userList" sql="select * from tb_user"
    dataSource="${db }">sql:query>




<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
head>
<body>
    <table>
        <tr>
            <th>用户名th>
            <th>密码th>
        tr>
        <c:forEach items="${userList.rows}" var="myvar">
            <tr>
                <td><c:out value="${myvar.username }">c:out>td>
                <td><c:out value="${myvar.password }">c:out>td>
            tr>
        c:forEach>
    table>
body>
html>


JSP标准标签库(JSTL)_第1张图片



插入数据库insert_sql.jsp

<%-- 引用头文件 --%>
<%@ include file="database.jsp"%>


<sql:update dataSource="${db }"
    sql="insert into tb_user (username,password) values(?,?)" var="insert">
username
    <sql:param value="${param. username}">sql:param>
    <sql:param value="${param. password}">sql:param>

sql:update>


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>插入一条数据到数据库title>
head>
<body>

    <br>
    <br>
    <br>
    <form>
        username : <input type="text" name="username"
            value="${param.username}" /><br /> password : <input type="text"
            name="password" value="${param.password}" /><br /> <input
            type="submit" value="submit" />
    form>

    <c:if test="${insert > 0 }">
        insert success !
    c:if>
<br>
    <br>
    <br>


<sql:query var="userList" sql="select * from tb_user"
    dataSource="${db }">sql:query>


<table>
    <tr>
        <th>usernameth>
        <th>passwordth>
    tr>
    <c:forEach items="${userList.rows}" var="myvar">
        <tr>
            <td><c:out value="${myvar.username }">c:out>td>
            <td><c:out value="${myvar.password }">c:out>td>
        tr>
    c:forEach>
table>
body>
html>

JSP标准标签库(JSTL)_第2张图片



更新数据updata_sql.jsp

<%-- 引用头文件 --%>
<%@ include file="database.jsp"%>


<sql:query var="userList" sql="select * from tb_user"
    dataSource="${db }">sql:query>


<sql:update dataSource="${db }"
    sql="update tb_user set password=? where username=?" var="update">
    <sql:param value="${param.password }">sql:param>
    <sql:param value="${param.username }">sql:param>
sql:update>


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>更新一条数据到数据库title>
head>
<body>

<table>
    <tr>
        <th>usernameth>
        <th>passwordth>
    tr>
    <c:forEach items="${userList.rows}" var="myvar">
        <tr>
            <td><c:out value="${myvar.username }">c:out>td>
            <td><c:out value="${myvar.password }">c:out>td>
        tr>
    c:forEach>
table>
<br><br><br>
    <form >
        User name to modify:<input type="text" name="username" value="${param.username}" /><br />
        Change password to:<input type="text" name="password" value="${param.password}" /><br />
        <input type="submit" value="submit" />
    form>

    <c:if test="${update > 0 }">
        Update success !

    c:if>

    <br>

body>
html>

JSP标准标签库(JSTL)_第3张图片



删除数据 delete_sql.jsp

<%-- 引用头文件 --%>
<%@ include file="database.jsp"%>



<sql:update dataSource="${db }"
    sql="delete from tb_user where username=?" var="delete">
    <sql:param value="${param.username }">sql:param>
sql:update>


<sql:query var="userList" sql="select * from tb_user"
    dataSource="${db }">sql:query>



<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
head>
<body>
    <table>
        <tr>
            <th>usernameth>
            <th>passwordth>
        tr>
        <c:forEach items="${userList.rows}" var="myvar">
            <tr>
                <td><c:out value="${myvar.username }">c:out>td>
                <td><c:out value="${myvar.password }">c:out>td>
            tr>
        c:forEach>
    table>

    <br>
    <br>
    <br>
    <form>
        username : <input type="text" name="username"
            value="${param.username}" /><br /> <input type="submit"
            value="submit" />
    form>

    <c:if test="${delete > 0 }">
        delete success !

    c:if>
    <br>
body>
html>

JSP标准标签库(JSTL)_第4张图片




格式化标签

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
标签 说明
<fmt:formatNumber> 使用指定的格式或精度格式化数字
<fmt:parseNumber> 解析一个代表着数字
<fmt:formatDate> 使用指定的风格或模式格式化日期和时间
<fmt:parseDate> 解析一个代表着日期或时间的字符串
<fmt:bundle> 绑定资源
<fmt:setLocale> 指定地区
<fmt:setBundle> 绑定资源
<fmt:timeZone> 指定时区
<fmt:setTimeZone> 指定时区
<fmt:message> 显示资源配置文件信息
<fmt:requestEncoding> 设置request的字符编码




格式化时间的标签

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

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
head>
<body>
    <%
        request.setAttribute("myDate", new Date());
    %>
    <fmt:formatDate value="${myDate }" pattern="yyyy-MM-dd hh:mm:ss" />
    <br />
    <%
        //正常写法
        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String str = sd.format(new Date());
        out.print(str);
    %>
body>
html>

5



JSTL 函数

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


函数说明

标签 函数属性 函数说明
fn:contains() boolean
contains (java.lang.String, java.lang.String)
测试输入的字符串是否包含指定的子串
fn:containsIgnoreCase() boolean
containsIgnoreCase(java.lang.String, java.lang.String)
测试输入的字符串是否包含指定的子串,大小写不敏感
fn:endsWith() boolean
endsWith(java.lang.String, java.lang.String)
测试输入的字符串是否以指定的后缀结尾
fn:escapeXml() java.lang.String
escapeXml(java.lang.String)
跳过可以作为XML标记的字符
fn:indexOf() int
indexOf(java.lang.String, java.lang.String)
返回指定字符串在输入字符串中出现的位置
fn:join() String
join (java.lang.String[], java.lang.String)
将数组中的元素合成一个字符串然后输出
fn:length() int
length(java.lang.Object)
返回字符串长度
fn:replace() boolean
replace(java.lang.String, java.lang.String, java.lang.String)
将输入字符串中指定的位置替换为指定的字符串然后返回
fn:split() java.lang.String[]
split(java.lang.String, java.lang.String)
将字符串用指定的分隔符分隔然后组成一个子字符串数组并返回
fn:startsWith() boolean
startsWith(java.lang.String, java.lang.String)
测试输入字符串是否以指定的前缀开始
fn:substring() java.lang.String
substring(java.lang.String, int, int)
返回字符串的子集
fn:substringAfter() java.lang.String
substringAfter(java.lang.String, java.lang.String)
返回字符串在指定子串之后的子集
fn:substringBefore() java.lang.String
substringBefore(java.lang.String, java.lang.String)
返回字符串在指定子串之前的子集
fn:toLowerCase() java.lang.String
toLowerCase(java.lang.String)
将字符串中的字符转为小写
fn:toUpperCase() java.lang.String
toLowerCase(java.lang.String)
将字符串中的字符转为大写
fn:trim() java.lang.String
trim(java.lang.String)
移除首位的空白符



字符串的截取

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

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
head>
<body>
    <c:set var="myver" value="lingdu">c:set>
    <%--

        1、字符串的替换 
        2、函数的嵌套

    --%>
    <c:out value="${fn:replace('lingdu','i','d')}">c:out><br />
    <c:out value="${fn:replace(fn:replace('lingdu','i','d'),'l','w')}">c:out><br />
    <c:out value="${fn:replace(fn:replace(fn:replace('lingdu','i','d'),'l','w'),'g','h')}">c:out><br />
    <c:out value="${fn:indexOf(fn:replace(fn:replace(fn:replace('lingdu','i','d'),'l','w'),'g','h'),'h')}">c:out><br />


    <%-- 字符串截取--%>
    <c:out value="${fn:substring(myver,3,5) }">c:out>

    <%-- from表单传值自动截取--%>
    <form method="post">
        源文本:<input type="text" name="sourceText" value="${ param.sourceText}"/><br />
        开始截取的位置:<input type="text" name="beginIndex" value="${param.beginIndex }"/><br />
        最后的位置:<input type="text" name="endIndex" value="${param.endIndex }"/><br />
        结果:<input type="text" name="resultText" value="${fn:substring(param.sourceText,param.beginIndex,param.endIndex) }"/><br />
        <input type="submit" value="提交"/>
    form>


body>
html>


JSP标准标签库(JSTL)_第5张图片


你可能感兴趣的:(javaEE,jsp)