首页 > 代码库 > java 标签库(核心,xml,sql ,国际化,函数)

java 标签库(核心,xml,sql ,国际化,函数)

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

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

技术分享导入后展开

技术分享

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

先从核心标签库开始

技术分享

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

技术分享

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

 

 

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

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

1 <jsp:useBean id="userBean"  class="bean.userBean" scope="page"></jsp:useBean><!-- 创建出一个实体bean -->
2 <c:set target="${userBean}" property="name">孤傲苍狼</c:set>
3 获取属性:<jsp:getProperty property="name" name="userBean"/>
4 <!-- 使用核心标签库中的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="http://www.mamicode.com/${errorInfo }"/><br/>
      异常 errorInfo.getMessage:<c:out value="http://www.mamicode.com/${errorInfo.message }"></c:out><br/>
      异常 errorInfo.getCause: <c:out value="http://www.mamicode.com/${errorInfo.cause }"></c:out><br/>
      异常 errorInfo.getStackTrace:    <c:out value="http://www.mamicode.com/${errorInfo.stackTrace }"></c:out>
        <c:if test="${errorInfo ne null }" var="resutl" scope="page">
            结果<c:out value="http://www.mamicode.com/${resutl}"></c:out>
        </c:if>
<c:set var="score" value="http://www.mamicode.com/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="http://www.mamicode.com/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="http://www.mamicode.com/${va}"/>
                    下标:<c:out value="http://www.mamicode.com/${s.index}" />
                    是否是第一: <c:out value="http://www.mamicode.com/${s.first}" />
                    是否是最后一个: <c:out value="http://www.mamicode.com/${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标签库

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

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

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

sql标签库

 1 <sql:setDataSource var="con" 
 2          driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
 3          url="jdbc:sqlserver://localhost:1433;databaseName=work" user="sa" password="sasa"/>
 4          <sql:query var="result" dataSource="${con }" >select * from stu;</sql:query>
 5          <c:forEach var="row" items="${result.rows }">
 6              <c:out value="http://www.mamicode.com/${row.stuId }"></c:out>
 7              <c:out value="http://www.mamicode.com/${row.stuname }"/>
 8          </c:forEach>
 9          <%--  <sql:update dataSource="${con }" var="result" >insert into stu values(1006,‘gaoxiao2‘,20,80);</sql:update> --%>        
10         <c:set var="empId" value="http://www.mamicode.com/1003"></c:set>
11         <sql:update dataSource="${con}" var="count" >
12               delete from stu where stuId=?;
13              <sql:param value="http://www.mamicode.com/${empId}" />
14         </sql:update>
15         <c:if test="${count eq 0}">没有删除数据</c:if>
16           </body>

 

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

setDataSource 设置数据源 var=数据源对象名  driver=驱动类  url=连接语句 user=数据库用户名 password=密码 这里使用的是sqlserver 不同的数据库和版本不同咯
query 查询语句 dataSource=数据源名 中间查询语句
然后循环输出 其他看代码应该看的懂把


国际话标签库
本人觉得这个会比较麻烦点,会讲的详细点

技术分享

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

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

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

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

技术分享技术分享

技术分享

 

jsp使用

 1 <%
 2     //request.getLocale()获取访问用户所在的国家地区
 3     ResourceBundle myResourcesBundle=ResourceBundle.getBundle("myproperties.myproperties",request.getLocale());
 4 %>
 5 <body>
 6     <form>
 7         <%=myResourcesBundle.getString("username") %>: <%=myResourcesBundle.getString("password") %>
 8     </form>
 9 
10 <fmt:setBundle basename="myproperties.myproperties"  var="bundle"/>
11 <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 ,国际化,函数)