`

jsp标准标签库

阅读更多
1. jsp标准标签库

1) JSTL引入(JSP Standard Tag Library)

1.1 导入jar包
jstl.jar
standard.jar

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


2) JSTL示例

helloWorldJSTL.jsp
<c:out value="jstl你好"></c:out>


3) JSTL核心标签库

People.java

package com.andrew.model;
public class People {
    private int id;
    private String name;
    private int age;
    public People(){}
    public People(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }
    // getter and setter
}


c:out 内容输出标签;

c_out.jsp

<% pageContext.setAttribute("people","张三"); %>
<h2><c:out value="${people}"></c:out></h2>
<h2><c:out value="${people2}" default="某人"></c:out></h2>

http://localhost:8080/HeadFirstJspServletChap08/c_out.jsp
张三
某人


c:set 用来设置4中属性范围值的标签;

c_set.jsp

<c:set var="people" value="张三" scope="request"></c:set>
<h2><c:out value="${people}"></c:out></h2>
<jsp:useBean id="people2" class="com.andrew.model.People" scope="page"></jsp:useBean>
<c:set property="id" target="${people2 }" value="007"></c:set>
<c:set property="name" target="${people2 }" value="王二小"></c:set>
<c:set property="age" target="${people2 }" value="16"></c:set>
<h2>编号:${people2.id }</h2>
<h2>姓名:${people2.name }</h2>
<h2>年龄:${people2.age }</h2>

http://localhost:8080/HeadFirstJspServletChap08/c_set.jsp
张三
编号:7
姓名:王二小
年龄:16


c:remove 用来删除指定范围中的属性;

c_remove.jsp

<c:set var="people" value="张三" scope="request"></c:set>
<h2><c:out value="${people}" default="没人啊"></c:out></h2>
<c:remove var="people" scope="request"/>
<h2><c:out value="${people}" default="没人啊"></c:out></h2>

http://localhost:8080/HeadFirstJspServletChap08/c_remove.jsp
张三
没人啊


c:catch 用来处理程序中产生的异常;

c_catch.jsp

<c:catch var="errMsg">
    <%
        int a=1/0;
    %>
</c:catch>
<h2>异常信息:${errMsg }</h2>

http://localhost:8080/HeadFirstJspServletChap08/c_catch.jsp
异常信息:java.lang.ArithmeticException: / by zero


c:if 用来条件判断;

c_if.jsp

<jsp:useBean id="people" class="com.andrew.model.People" scope="page"></jsp:useBean>
<c:set property="id" target="${people }" value="007"></c:set>
<c:set property="name" target="${people }" value="王二小"></c:set>
<c:set property="age" target="${people }" value="16"></c:set>
<c:if test="${people.name=='王二小' }" var="r" scope="page">
    <h2>是王二小</h2>
</c:if>
<c:if test="${people.age<18 }">
    <h2>是未成年</h2>
</c:if>

http://localhost:8080/HeadFirstJspServletChap08/c_if.jsp
是王二小
是未成年


c:choose、c:when、c:otherwise 用来多条件判断;

c_choose.jsp

<jsp:useBean id="people" class="com.andrew.model.People" scope="page"></jsp:useBean>
<c:set property="id" target="${people }" value="007"></c:set>
<c:set property="name" target="${people }" value="王二小"></c:set>
<c:set property="age" target="${people }" value="19"></c:set>
<c:choose>
    <c:when test="${people.age<18 }">
        <h2>小于18</h2>
    </c:when>
    <c:when test="${people.age==18 }">
        <h2>等于18</h2>
    </c:when>
    <c:otherwise>
        <h2>大于18</h2>
    </c:otherwise>
</c:choose>

http://localhost:8080/HeadFirstJspServletChap08/c_choose.jsp
大于18


c:forEach 用来遍历数组或者集合;

c_forEach.jsp

<%@ page import="com.andrew.model.*"%>
<%@ page import="java.util.*"%>
<%
    String dogs[]={"小黑","小黄","小白","小小"};
    pageContext.setAttribute("dogs",dogs);
%>
<c:forEach var="dog" items="${dogs }">
    ${dog }
</c:forEach>
<hr/>
<c:forEach var="dog" items="${dogs }" step="2">
    ${dog }
</c:forEach>
<hr/>
<c:forEach var="dog" items="${dogs }" begin="1" end="2">
    ${dog }
</c:forEach>
<hr/>
<%
    List<People> pList = new ArrayList<People>();
    pList.add(new People(1,"张三",10));
    pList.add(new People(2,"李四",20));
    pList.add(new People(3,"王五",30));
    pageContext.setAttribute("pList",pList);
%>
<table>
    <tr>
        <th>编号</th>
        <th>姓名</th>
        <th>年龄</th>
    </tr>
    <c:forEach var="p" items="${pList }">
        <tr>
            <td>${p.id }</td>
            <td>${p.name }</td>
            <td>${p.age }</td>
        </tr>
    </c:forEach>
</table>

http://localhost:8080/HeadFirstJspServletChap08/c_forEach.jsp
小黑 小黄 小白 小小
小黑 小白
小黄 小白
编号 姓名 年龄
1 张三 10 
2 李四 20 
3 王五 30 


c:fortokens 分隔输出;

c_forTokens.jsp

<%
    String str1="www.andrew.com";
    String str2="张三,李四,王五";
    pageContext.setAttribute("str1",str1);
    pageContext.setAttribute("str2",str2);
%>
<c:forTokens items="${str1 }" delims="." var="s1">
    ${s1 }
</c:forTokens>
<hr/>
<c:forTokens items="${str2 }" delims="," var="s2">
    ${s2 }
</c:forTokens>

http://localhost:8080/HeadFirstJspServletChap08/c_forTokens.jsp
www andrew com
张三 李四 王五


c:import 导入页面;

c_import.jsp

<c:import url="c_forEach.jsp"></c:import>
<c:import url="c_if.jsp"></c:import>


c:url 生成一个url地址;

c_url.jsp

<c:url value="http://www.baidu.com" var="url">
    <c:param name="name" value="baidu"></c:param>
    <c:param name="age" value="26"></c:param>
</c:url>
<a href="${url }">百度</a>

http://localhost:8080/HeadFirstJspServletChap08/c_url.jsp
百度 


c:redirect 客户端跳转

c_redirect.jsp

<c:redirect url="target.jsp">
    <c:param name="name" value="xiaofeng"></c:param>
    <c:param name="age" value="26"></c:param>
</c:redirect>

target.jsp

<h2>姓名:${param.name }</h2>
<h2>年龄:${param.age }</h2>

http://localhost:8080/HeadFirstJspServletChap08/c_redirect.jsp
http://localhost:8080/HeadFirstJspServletChap08/target.jsp?name=xiaofeng&age=26
姓名:xiaofeng
年龄:26


4) JSTL国际化标签库

导入standard.jar
导入jstl.jar

fmt:setLocale 设定用户所在的区域;
fmt:formatDate 对日期进行格式化;
fmt:requestEncoding 设置所有的请求编码;
fmt:bundle fmt:message 读取国际化资源;
fmt:formatNumber 格式化数字;
fmt:timeZone 设置临时时区;


fmt_setLocale.jsp

<%@ page import="java.util.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%
    pageContext.setAttribute("date",new Date());
%>
中文日期:
<fmt:setLocale value="zh_CN"/>
<fmt:formatDate value="${date }"/>
<hr/>
英文日期:
<fmt:setLocale value="en_US"/>
<fmt:formatDate value="${date }"/>

fmt_formatDate.jsp

<%@ page import="java.util.*" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!-- value:数值 ;  type:数值类型;  pattern:格式 -->
<%
    Date date=new Date();
    pageContext.setAttribute("date",date);
%>
<fmt:formatDate value="${date }" pattern="yyyy-MM-dd HH:mm:ss"/>
<hr/>
<fmt:formatDate value="${date }" pattern="yyyy-MM-dd"/>

fmt_setrequestEncoding.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<fmt:requestEncoding value="UTF-8"/>

info_en_US.properties
name=张三
info=Current user{0}:Welcome to use our system
info_zh_CN.properties
name=\u5c0f\u950b
info=\u5f53\u524d\u7528\u6237{0}:\u6b22\u8fce\u4f7f\u7528\u672c\u7cfb\u7edf

fmt_bundle.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<fmt:setLocale value="zh_CN"/>
<fmt:bundle basename="info">
    <fmt:message key="name" var="userName"/>
</fmt:bundle>
<h2>姓名:${userName }</h2>
<fmt:bundle basename="info">
    <fmt:message key="info" var="infomation">
        <fmt:param value="<font color='red'>张三</font>"/>
    </fmt:message>
</fmt:bundle>
<h2>信息:${infomation }</h2>
<hr/>
<fmt:setLocale value="en_US"/>
<fmt:bundle basename="info">
    <fmt:message key="name" var="userName"/>
</fmt:bundle>
<h2>姓名:${userName }</h2>
<fmt:bundle basename="info">
    <fmt:message key="info" var="infomation">
        <fmt:param value="<font color='red'>张三</font>"/>
    </fmt:message>
</fmt:bundle>
<h2>信息:${infomation }</h2>

fmt_formatNumber.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!-- value:数值 ;  type:数值类型;  pattern:格式 -->
<fmt:formatNumber value="12" type="currency" pattern="$.00"/> 
<fmt:formatNumber value="12" type="currency" pattern="$.0#"/>
<fmt:formatNumber value="1234567890" type="currency"/> 
<fmt:formatNumber value="123456.7891" pattern="#,#00.0#"/>

fmt_timeZone.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!-- value:数值 ;  type:数值类型;  pattern:格式 -->
<%
    Date date=new Date();
    pageContext.setAttribute("date",date);
%>
当前时间:<fmt:formatDate value="${date }" pattern="yyyy-MM-dd HH:mm:ss"/>
<hr/>
格林尼治时间:
<fmt:timeZone value="GMT">
   <fmt:formatDate value="${date }" pattern="yyyy-MM-dd HH:mm:ss"/>
</fmt:timeZone>


5) JSTL SQL标签库

导入mysql-connector-java-3.1.12-bin.jar

sql:setDataDource 设置JDBC连接;
sql:query 数据库查询操作;
sql:update 数据库添加,修改,删除操作;
sql:transaction 数据库事务;


sql_setDataSource.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<h1>设置JDBC连接</h1>
<sql:setDataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/db_jstl" user="root" password="123456" />

sql_query.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<h1>设置JDBC连接</h1>
<sql:setDataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/db_jstl" user="root" password="123456" />
<sql:query var="result">
    select * from t_student;
</sql:query>
<h2>总记录数:${result.rowCount }</h2>
<table>
    <tr>
        <th>编号</th>
        <th>学号</th>
        <th>姓名</th>
        <th>出生日期</th>
        <th>性别</th>
    </tr>
    <c:forEach var="student"  items="${result.rows }">
    <tr>
        <td>${student.id }</td>
        <td>${student.stuNo }</td>
        <td>${student.stuName }</td>
        <td>${student.birthday }</td>
        <td>${student.sex }</td>
    </tr>
    </c:forEach>
</table>

sql_update001.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<h1>设置JDBC连接</h1>
<sql:setDataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/db_jstl" user="root" password="123456"/>
<h1>添加数据</h1>
<sql:update var="result" >
    insert into t_student values(null,"008","张三","1991-1-1","男");
</sql:update>

sql_update002.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<h1>设置JDBC连接</h1>
<sql:setDataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/db_jstl" user="root" password="123456"/>
<h1>修改数据</h1>
<sql:update var="result" >
    update t_student set stuNo="010",sex="未知" where id=6
</sql:update>

sql_update003.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<h1>设置JDBC连接</h1>
<sql:setDataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/db_jstl" user="root" password="123456"/>
<h1>删除数据</h1>
<sql:update var="result" >
    delete from t_student where id=6
</sql:update>

sql_transaction.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<h1>设置JDBC连接</h1>
<sql:setDataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/db_jstl" user="root" password="123456"/>
<h1>事务</h1>
<sql:transaction>
    <sql:update var="result" >
        insert into t_student values(null,"008","哈喽","1991-1-1","男");
    </sql:update>
</sql:transaction>


6) JSTL XML标签库

导入xalan.jar

x:parse 解析xml;
x:out 输出xml文件的内容;
x:set 把xml读取的内容保存到指定的属性范围;
x:if 判断指定路径的内容是否符合判断的条件;
x:choose x:when x:otherwise 多条件判断;
x:forEach 遍历


usersInfo.xml

<?xml version="1.0" encoding="UTF-8"?>
<users>
    <user>
        <name id="n1">张三</name>
        <birthday>2011-1-1</birthday>
    </user>
</users>

usersInfo2.xml

<?xml version="1.0" encoding="UTF-8"?>
<users>
    <user>
        <name id="n1">张三</name>
        <birthday>2011-1-1</birthday>
    </user>
    <user>
        <name id="n2">王五</name>
        <birthday>2011-1-2</birthday>
    </user>
    <user>
        <name id="n3">赵六</name>
        <birthday>2011-1-3</birthday>
    </user>
</users>

xml_parse.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%>
<c:import var="usersInfo" url="usersInfo.xml" charEncoding="UTF-8"/>
<x:parse var="usersInfoXml" doc="${usersInfo }"/>

xml_out.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%>
<c:import var="usersInfo" url="usersInfo.xml" charEncoding="UTF-8"/>
<x:parse var="usersInfoXml" doc="${usersInfo }"/>
<h2>姓名:<x:out select="$usersInfoXml/users/user/name"/>
(ID:<x:out select="$usersInfoXml/users/user/name/@id"/>)</h2>
<h2>出生日期:<x:out select="$usersInfoXml/users/user/birthday"/></h2>

xml_set.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%>
<c:import var="usersInfo" url="usersInfo.xml" charEncoding="UTF-8"/>
<x:parse var="usersInfoXml" doc="${usersInfo }"/>
<x:set var="userInfoXml" select="$usersInfoXml/users/user"/>
<h2>姓名:<x:out select="$userInfoXml/name"/></h2>

xml_if.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%>
<c:import var="usersInfo" url="usersInfo.xml" charEncoding="UTF-8"/>
<x:parse var="usersInfoXml" doc="${usersInfo }"/>
<x:if select="$usersInfoXml/users/user/name/@id='n1'">
    <h2>有编号是n1的user信息</h2>
</x:if>

xml_choose.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%>
<c:import var="usersInfo" url="usersInfo.xml" charEncoding="UTF-8"/>
<x:parse var="usersInfoXml" doc="${usersInfo }"/>
<x:choose>
    <x:when select="$usersInfoXml/users/user/name/@id='n2'">
        <h2>有编号是n2的user信息</h2>
    </x:when>
    <x:otherwise>
        <h2>没有编号是n2的user信息</h2>
    </x:otherwise>
</x:choose>

xml_forEach.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%>
<c:import var="usersInfo" url="usersInfo2.xml" charEncoding="UTF-8"/>
<x:parse var="usersInfoXml" doc="${usersInfo }"/>
<x:forEach select="$usersInfoXml/users/user" var="userInfoXml">
    <h2>姓名:<x:out select="$userInfoXml/name"/>&nbsp;出生日期:<x:out select="$userInfoXml/birthday"/></h2>
    <hr/>
</x:forEach>


7) JSTL函数标签库

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

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%
    pageContext.setAttribute("info","www.abcd1234.com");
%>
<h2>查找abcd1234位置:${fn:indexOf(info,"abcd1234")}</h2>
<h2>判断abcd1234是否存在:${fn:contains(info,"abcd1234")}</h2>
<h2>截取:${fn:substring(info,0,5)}</h2>
<h2>拆分:${fn:split(info,".")[1]}</h2>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics