zoukankan      html  css  js  c++  java
  • 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="${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标签库

    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="${row.stuId }"></c:out>
     7              <c:out value="${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="1003"></c:set>
    11         <sql:update dataSource="${con}" var="count" >
    12               delete from stu where stuId=?;
    13              <sql:param value="${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点了,第一篇博客差不多该结束了。送上我老师的一句话,拿来主义,共享精神。

  • 相关阅读:
    git常用命令及常见问题解析
    如何让一个sprite绕一个点旋转,同时又可以实现指定旋转角度并慢慢停下的效果
    webpack打包,同时将ES6转为ES5,初探
    测试网站接口,nginx篇
    Phaserjs V2的state状态解析及技巧
    Phaserjs怎样用ES6开发游戏
    PIXI屏幕自适应以及强制横屏
    CSS性能优化新属性:will-change
    div,css&table布局有哪些区别
    防止js全局变量污染方法总结
  • 原文地址:https://www.cnblogs.com/xiaohuihui96/p/6021577.html
Copyright © 2011-2022 走看看