Java标准标签库学习小结


 Java标准设计规范:jsp页面只展示数据界面,不做数据处理;Servlet只做业务逻辑处理,不做界面展示
 EL表达式的出现,是希望jsp页面中不在出现Java代码,便于维护和阅读
 但是EL表达式有局限性:1.不能赋值,只能获取数据;
      2.没有条件判断、循环遍历的功能
 为了弥补El表达式的不足,推出了JSTL标签库。
 
 JSTL:Java standard tag library:Java标准标签库
 使用JSTL需要导入两个jar包  jstl-1.2.jar和standard-1.1.2.jar
 放在WebContent\WEB-INF\lib文件夹下面,通过Build path导入到项目中
 使用JSTL标签时,需要在jsp页面中通过taglib指令来导入 ,需要配置如下两个参数
 uri="",标签所在路径 uri在导入的JSTL标签库的META-INF文件夹c.tld(核心标签库)文件中的
 <uri> http://java.sun.com/jsp/jstl/core</uri>;标签中。
 高版本的eclipse或者Javaee5.0以上的工程会自动提示以供选择    使用什么标签,都要设定对应的uri
 prefix=""标签的前缀,在对应标签的<short-name>c</short-name>中可以找到
 JSTL标签库中的标签,在导入以后,都是以前缀名作为标志的
 
 JSTL标签中的c标签,被称为核心标签
 
 JSTL标签库包含有:核心标签库(c标签):主要封装的是一些基本的核心业务逻辑
    <%@ taglib uri=" http://java.sun.com/jsp/jstl/core" prefix="c"%>
     格式化和国际化标签库(fmt标签):主要封装的是一些进行数据格式化和国际化的业务。比如如期格式化等。
     <%@ taglib uri=" http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
      数据库标签库(aql标签):主要封装的是操作数据库的业务逻辑
      <%@ taglib uri=" http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
    xml标签库(x标签) :主要封装的是一些解析xml数据的业务逻辑
    <%@ taglib uri=" http://java.sun.com/jsp/jstl/xml" prefix="xml"%>
    JSTL函数标签库(fn函数):主要封装的是常见函数。如string。
    <%@ taglib uri=" http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
 重点掌握:核心标签库(c标签)  函数标签库(fn标签)格式化和 国际化标签库(fmt标签)
 
 核心标签库包括:
  1.c:out标签:<c:out escapeXml="" default="" value="">
   标签作用:向页面输出指定内容
   escapeXml:指定是否输出为xml格式输出  ,只能接受参数true/false
     true:会对输出的数据进行转义(转义只针对特殊字符)
     false:不会对输出内容进行转义
   default:指定默认的输出值
   value:输出的内容。可以是<%= %>表达式和EL表达式
   <c:out value="${hehe1}"></c:out>
   等价于pageContext.getAttribute("hehe1");
   
  2.c:set标签:<c:set scope="" value="" property="" var="" target=""></c:set>
   标签的作用:设置一个域或者集合中的属性
   var:指定域中的属性名
   value:指定域中的属性值
   scope:指定域对象
   target:指定集合名或者对象名 ,即赋值的目标。可以是EL表达式
   property:指定集合的属性名或者对象的属性名,即需要赋值的对象属性
   
   2.1保存数据:在设置值的时候可以通过scope:指定数据存放的域对象
    <c:set var="hehe1" value="hehe"></c:set>
    默认情况下数据放在pageContext域中
    保存的值可以通过EL表达式取出 ,不能直接用<%= %>表达式取出
    ${hehe }或者<c:out value="${hehe1}"></c:out>
   2.2可以给域中的对象赋值
    <%
     //创建对象
     User user = new User();
     //把对象放到域中
     pageContext.setAttribute("user", user);
     //给对象赋值
    %>
   <c:set target="${user}" property="name" value="dslfkl"> </c:set>
   <c:set target="${user}" property="name" value="password"> </c:set>
   获取设置的值
   ${user.name }  ${user.password}
   
   
  3.c:remove标签 <c:remove var="" scope=""/>
   标签作用:删除域中的属性
   var:指定要删除的属性的名称
   scope:指定域名
   
   <c:set var="salary" scope="session" value="${2000*2}"/>
    <p>Before Remove Value: <c:out value="${salary}"/></p>
    <c:remove var="salary"/>
   <p>After Remove Value: <c:out value="${salary}"/></p>
   
   
  4.c:catch标签  <c:catch var=""></c:catch>
   标签作用:捕获异常
   var:指定异常对象以什么属性存储在page域中
   <c:catch var ="catchException">
       <% int x = 5/0;%>
   </c:catch>
   <c:if test = "${catchException != null}">
       <p>The exception is : ${catchException} <br />
       There is an exception: ${catchException.message}</p>
   </c:if>
   
   
   
   
  5.c:if标签<c:if test=""></c:if>相当于if语句
   标签作用:对于指定的条件语句,如果成立,则执行标签体内容
   test:指定判断条件 
   
  6.c:choose标签  <c:choose>
      <c:when test=""></c:when>
      <c:otherwise></c:otherwise>
     </c:choose>
   标签作用:实现if else的功能
   <c:choose>:外部选择
   <c:when test="">指定条件语句成立时执行的标签内容
     test:指定判断的条件语句
   <c:otherwise>指定的条件不成立时执行的标签内容
   
   
  7.c:forEach标签<c:forEach items="" var=""</c:forEach>
   标签作用:该标签实现的功能是Java中forEach的功能
        属性              属性描述                                                                是否必要         默认值
       items              要被循环的信息                                                           否                    无
       begin              开始的元素(0=第一个元素,1=第二个元素)            否                   0
       end                  最后一个元素(0=第一个元素,1=第二个元素)        否                    Last element
       step                 每一次迭代的步长                                                         否                   1
       var                  代表当前条目的变量名称                                                否                   无
       varStatus         代表循环状态的变量名称                                                否                   无
       items:             要迭代的对象或变量名
       var:              迭代变量名
   //准备数据
   List<User> userList = new ArrayList<User>();
   userList.add(new User("aa","aa"));
   userList.add(new User("bb","bb"));
   userList.add(new User("cc","cc"));
   userList.add(new User("dd","dd"));
   //把数据放进域中
   pageContext.setAttribute("userList", userList);
   <c:forEach items="userList" var="user">
   姓名:${user.username}  密码:${user.password}
   </c:forEach>
   
   <c:forEach var="i" begin="1" end="5">
       Item <c:out value="${i}"/><p>
   </c:forEach>
   
  8.c:url标签 <c:url context="" scope="" value="" var="">
     <c:param name="" value="">
      标签作用:指定链接跳转时的参数
      name:指定参数的属性名称
      value:指定参数的值
     </c:param>
     </c:url>
    标签作用:指定跳转链接
    context:指定网站/网址
    scope:指定域
    value:指定属性的值
    var:指定属性的名称
     <c:url context="aa" scope="page" value=" http://www.baidu.com" var="index">
    <c:param name="name" value="hehe">
    </c:param>
    </c:url>
 
  9.c:redirect标签(实现重定向功能)<c:redirect context="" url=""></c:redirect>
   标签作用:重定向到指定页面
   url:目标URL 无默认值
   context:一个本地网络应用程序的名称,默认为当前应用
   <c:redirect url=" http://www.w3cschool.cc"/>
   
   
  10.c:forTokens标签
   标签作用:该标签实现的功能是Java中forEach的功能
        属性              属性描述                                                                    是否必要                 默认值
       items              要被循环的信息                                                            否                           无
       begin              开始的元素(0=第一个元素,1=第二个元素)             否                          0
       end                 最后一个元素(0=第一个元素,1=第二个元素)          否                      Last element
       step                每一次迭代的步长                                                          否                           1
       var                  代表当前条目的变量名称                                               否                           无
       varStatus        代表循环状态的变量名称                                               否                           无
       delims             分隔符                                                                            是                            无
       items:           要迭代的对象或变量名
       var:               迭代变量名
   
   <c:forTokens items="Zara,nuha,roshy" delims="," var="name">
      <c:out value="${name}"/><p>
   </c:forTokens>
   
  11.c:import标签
  标签作用<c:import>标签提供了所有<jsp:include>行为标签所具有的功能,同时也允许包含绝对URL
  属性                    属性描述                                                   是否必要             默认值
  url                        需要检索和引入的页面的URL                     是                           无
  context                 /紧接着一个本地网络应用程序的名称         否                   当前应用程序
  charEncoding      所引入的数据的字符编码集                          否                  ISO-8859-1
  var                        用于存储所引入的文本的变量                     否                   Print to page
  scope                    var属性的作用域                                        否                      Page
  varReader           可选的用于提供java.io.Reader对象的变量  否                       无
  <c:import var="data" url=" http://www.w3cschool.cc"/>
  <c:out value="${data}"/>
 
 格式化标签
 JSTL格式化标签用来格式化并输出文本、日期、时间、数字。引用格式化标签库的语法如下:
 <%@ 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的字符编码

你可能感兴趣的:(jsp,javaee,jstl,格式化)