java标签库分分为上述几种,一般经常使用的是核心和函数,接下来会分别讲解这几种,和常见的用法。

一般标签库会和el表达式一起使用,所以在学习标签库前最后也学习下el表达式的使用。

导入后展开

可以从jar包查看相对应的标签库得tld文档,里面会描述每个标签的说明和用法

先从核心标签库开始

tld文档有几个重点,第一个就是uri,这是等下在jsp页面引入标签库时是的uri

基本一个tld文档的重点内容就这么多了,分开看其实也不是很难

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

在jsp页面头使用该标签来导入标签库,uri对应tld文档中的uri,prefix标识符

 <jsp:useBean id="userBean"  class="bean.userBean" scope="page"></jsp:useBean><!-- 创建出一个实体bean -->
<c:set target="${userBean}" property="name">孤傲苍狼</c:set>
获取属性:<jsp:getProperty property="name" name="userBean"/>
<!-- 使用核心标签库中的set标签对实体bean赋值 -->

jsp:userBean 使用jsp内置标签库实例化出一个实体类,并且存入page域中(默认page),在使用以c为别名的核心标签库种的set标签进行赋值和取值

target要赋值的对象,记住这里得使用el表达式,对应上面的id名,property要赋值的对象的属性名

记住基本上标签库中的对象和值都是存放在域中的,默认是page。

在使用getProperty标签 name要取值的对象名  property要去值的属性名

<c:remove var="userBean"/><!-- 要移除的对象名,不使用el表达式 -->
<c:catch var="errorInfo"><!-- 捕获异常,var异常的信息对象 -->
<jsp:getProperty property="name" name="userBean"/>
</c:catch>
<!-- 异常的信息获取 -->
异常:<c:out value="${errorInfo }"/><br/>
异常 errorInfo.getMessage:<c:out value="${errorInfo.message }"></c:out><br/>
异常 errorInfo.getCause: <c:out value="${errorInfo.cause }"></c:out><br/>
异常 errorInfo.getStackTrace: <c:out value="${errorInfo.stackTrace }"></c:out>
<c:if test="${errorInfo ne null }" var="resutl" scope="page">
结果<c:out value="${resutl}"></c:out>
</c:if>
<c:set var="score" value="0"></c:set>
<c:choose>
<!-- 当test的值为真的时候执行 -->
<c:when test="${score>=90 }">牛逼啊</c:when>
<c:when test="${score>=70 }">可以啊</c:when>
<!-- 其他情况 -->
<c:otherwise>弱鸡</c:otherwise>
</c:choose>
<c:out value="begin起始位置,items=要循环的对象,var=每次的元素end结束位置,step自增数 varStatus当前信息"></c:out><br/>
<c:forEach var="va" items="${list}" begin="0" end="5" step="2" varStatus="s">
值:<c:out value="${va}"/>
下标:<c:out value="${s.index}" />
是否是第一: <c:out value="${s.first}" />
是否是最后一个: <c:out value="${s.last}" />
<br/>
</c:forEach>

核心标签库的常用这么多,其他的可以查看tld

函数标签库

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

转换大写
${fn:toLowerCase("Www.CNBLOGS.COM") }

函数标签只能写在el表达式里,大部分都是对字符串的处理,比如格式化成数组,检索indexof等

xml标签库

  <h3>xml标签库</h3>
<c:import url="http://localhost:8080/jspStudey/test.xml" var="bookInfo"/>
<c:import url="http://localhost:8080/jspStudey/test.xsl" var="xslt"/>
<x:parse xml="${bookInfo }" var="output"/>
<%-- <x:out select="$output/books/book[1]/name" /> --%>
<x:transform xml="${bookInfo }" xslt="${xslt}"/>

使用import导入xml,在使用 x:parse 进行处理。xml=xml的资源对象 var=处理好的xml对象

x:out 把值输出跟核心的out差不多,xml处理后要输出只能用这个这个输出 select查询,第一个$(没有括号) 处理好的var名 /分割 根节点名 /子节点名

sql标签库

 <sql:setDataSource var="con"
driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:1433;databaseName=work" user="sa" password="sasa"/>
<sql:query var="result" dataSource="${con }" >select * from stu;</sql:query>
<c:forEach var="row" items="${result.rows }">
<c:out value="${row.stuId }"></c:out>
<c:out value="${row.stuname }"/>
</c:forEach>
<%-- <sql:update dataSource="${con }" var="result" >insert into stu values(1006,'gaoxiao2',20,80);</sql:update> --%>
<c:set var="empId" value="1003"></c:set>
<sql:update dataSource="${con}" var="count" >
delete from stu where stuId=?;
<sql:param value="${empId}" />
</sql:update>
<c:if test="${count eq 0}">没有删除数据</c:if>
</body>

本人在学sql标签库很纳闷,额还是觉得在jsp上写sql语句很别扭很不喜欢

setDataSource 设置数据源 var=数据源对象名  driver=驱动类  url=连接语句 user=数据库用户名 password=密码 这里使用的是sqlserver 不同的数据库和版本不同咯
query 查询语句 dataSource=数据源名 中间查询语句
然后循环输出 其他看代码应该看的懂把 国际话标签库
本人觉得这个会比较麻烦点,会讲的详细点

src下的包里的资源文件,最后一个是模版文件,很重要。其他文件的命名必须是   模版文件名_国家名.properties  这是规定,原因是检索的机制

系统会去检索这个资源包下的文件,指定模版文件名,然后会根据当前的国家名,比如中国就时zh,然后它会在模版名后面家上 _ 下划线 然后在加上国家名,

然后去检索这文件名的文件

文件的内容 :以键值对的形式

jsp使用

 <%
//request.getLocale()获取访问用户所在的国家地区
ResourceBundle myResourcesBundle=ResourceBundle.getBundle("myproperties.myproperties",request.getLocale());
%>
<body>
<form>
<%=myResourcesBundle.getString("username") %>: <%=myResourcesBundle.getString("password") %>
</form> <fmt:setBundle basename="myproperties.myproperties" var="bundle"/>
<fmt:message bundle="${bundle }" key="username"></fmt:message> : <fmt:message bundle="${bundle }" key="password"></fmt:message>

先贴上代码,在详细的讲,前面是小脚本的写法,后面是fmt国际化标签库得写法,标签库就是这样,把事情写在类了,而在jsp页面上进行精细化,让jsp变的很简洁

小脚本中 先获取当前的国家名 然后2个参数,一个资源的模版文件的路径 ,存放在src根下,第二个是国家名,然后会自动去找他该文件,在通过名字就可以获取到对应的值

标签库更简单,指定名字后就可以直接获取了。

注意的是资源文件,中文的进行转码,jdk中有工具可以进行转码的,native2ascii.exe可以使用这个查询对应的ascall码

差不多就这样了,标签库不是很难,主要的就是得的看的懂el表达式和tld文档,如果看的懂基本上就使用就没问题了。而且在后面自定义标签库时也会轻松很多。

快1点了,第一篇博客差不多该结束了。送上我老师的一句话,拿来主义,共享精神。

java 标签库(核心,xml,sql ,国际化,函数)的更多相关文章

  1. JSTL标签库--核心标签库

    ->JSTL的使用和EL表达式是分不开的 ->JSTL标签库分为5类 1.核心标签库(这里只介绍该标签库) 2.I18N格式化标签库 3.SQL标签库 4.XML标签库 5.函数标签库 - ...

  2. JSP标准标签库(JSTL)--XML标签库 x

    ³在开发中XML解析的操作是非常烦琐的,幸运的是在JSTL中专门提供了用于XML解析的操作,这样用户就可以不用费力的去研究SAX或DOM等操作的使用,就可以轻松的进行XML文件的解析处理.  XML标 ...

  3. jsp jstl标签库核心标签

    JSTL标签库介绍 JSTL标签库的使用时为了弥补html标签的不足,规范自定义标签的使用而诞生的.使用标签的目的就是不希望在jsp页面中出现java逻辑代码 全称:JSTL标签库分类 核心标签库使用 ...

  4. Struts标签、Ognl表达式、el表达式、jstl标签库这四者之间的关系和各自作用

    我之前虽然会用,但是一直分不清彼此之间有什么区别,所以查找资料,将它们进行整合区分,加深了解, 一 介绍 1.Struts2的作用   Struts2标签库提供了主题.模板支持,极大地简化了视图页面的 ...

  5. java攻城师之路--复习java web之jsp入门_El表达式_JSTL标签库

    JSP 技术掌握:JSP语法 + EL + JSTL 为什么sun推出 JSP技术 ? Servlet 生成网页比较复杂,本身不支持HTML语法,html代码需要通过response输出流输出,JSP ...

  6. JSTL标签库的基本教程之核心标签库(一)

    JSTL介绍 Java Server Pages Standard Tag Libray(JSTL):JSP标准标签库,它封装了JSP应用的通用核心功能.JSTL支持通用的.结构化的任务,比如迭代,条 ...

  7. 复习java web之jsp入门_El表达式_JSTL标签库

    JSP 技术掌握:JSP语法 + EL + JSTL 为什么sun推出 JSP技术 ? Servlet 生成网页比较复杂,本身不支持HTML语法,html代码需要通过response输出流输出,JSP ...

  8. JAVAWEB开发之JSTL标签库的使用、 自己定义EL函数、自己定义标签(带属性的、带标签体的)

    JSTL  JSTL简单介绍: JSTL的全称:JSP Standard Tag Library,JSP标准标签库 JSTL的作用:   提供给Java Web开发者一个标准通用的标签函数库   和E ...

  9. Java Web程序设计笔记 • 【第10章 JSTL标签库】

    全部章节   >>>> 本章目录 10.1 JSTL 概述 10.1.1 JSTL 简介 10.1.1 JSTL 使用 10.1.2 实践练习 10.2 核心标签库 10.2. ...

随机推荐

  1. 【20160722-20160728】NOI2016滚粗记&&酱油记&&游记

    先挖坑 #include <cstdio> using namespace std; int main(){ puts("转载请注明出处:http://www.cnblogs.c ...

  2. Automated Memory Analysis

    catalogue . 静态分析.动态分析.内存镜像分析对比 . Memory Analysis Approach . volatility: An advanced memory forensics ...

  3. View的绘制、事件传递过程

    View绘制过程 onMeasure() onLayout() onDraw() 过程详解 onMeasure() 计算尺寸 onLayout() 为viewGroup类型布局子视图用的. onDra ...

  4. MySQL外键约束

    mysql的五种约束 1.PRIMARY KEY 2.UNIQUE KEY 3.NOT NULL 4.DEFAULT 5.FOREIGN KEY 其中外键约束的使用用法 CREATE TABLE te ...

  5. UVA1625Color Lenth(DP+LCS变形 未AC)

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=105116#problem/C 紫书P276 res[i][j]表示第一个序列移动i个,第 ...

  6. add user and grant privileges on mariadb

    create database foo_db; create user foo_user identified by 'foo_password'; grant all on foo_db.* to ...

  7. 接口测试 postman

    1.可以应用一些简单的测试点 2. api有多个域名,放进collection里面进行批量测试,点击左上角'runner'

  8. opencv_判断两张图片是否相同

    QQ:231469242 pip install opencv 如果找不到版本,去非官方下载opencv第三方包http://www.lfd.uci.edu/~gohlke/pythonlibs/ 下 ...

  9. web api7

  10. [Android]学习笔记之布局

    5大布局,其中前3个是常用的,第四个绝对布局已经提示deprecated ![](http://images2015.cnblogs.com/blog/194303/201611/194303-201 ...