JavaWeb中的JSTL操作

来源:互联网 发布:页面加载时执行js 编辑:程序博客网 时间:2024/06/14 07:09

  前边我们讲过了JavaWeb中的EL表达式语言和如何自定义标签,下边我们来说一说Javaweb提供的一个JSP标准标签库,JSTL。开发人员可以借助于EL表达式语言和标准标签库来完成web程序,取代传统的直接在JSP页面上编写Java代码的方式,提高程序的可读性和维护性。

  1. 简介JSTL

  Javaserver page standard tag library , 中文名称是Java服务器页面标准标签库,即JSP标准标签库

  2.JSTL的分类

  ① 核心标签库:重点

  ② I18N国际化标签库:了解

  ③ SLQ标签库:基本不用

  ④ XML标签库:基本不用

  ⑤ 函数标签库:基本不用

  需要注意的是:这些JSTL的标签库支持EL表达式语言,即可以在其标签的value属性中使用EL来在JSP页面上输出域对象中的值一般JSTL也要结合EL表达式来完成JSP页面的开发

  需要注意的是:大部分标签的显示值或者传入值或者输出值都必须使用EL表达式通过域对象完成操作,而不可以直接使用Java对象来当做值。

  3.使用步骤

  ① 导入两个jar包:standard.jar和JSTL.jar

  ② 在页面上使用taglib指导入这些标签库

  4.核心标签库的分类

  ① 表达式操作:out/set/remove

  out标签:和EL表达式的功能一致,都是将域对象中的属性的值输出到JSP页面上,但是比EL表达式的功能更强,可以自动转义,例如:输出<<java>>这个字符串就无法使用EL表达式完成,但是却可以使用out的标签结合EL表达式完成。<c:out value="${}">

  set标签:这个标签一是可以将Java变量的键值对放入到域对象中,如:<c:set var="name" value="liucc" scope=“page”></c:set>

                    二是可以将请求参数的值赋值给域对象中的属性的属性,如:<c:set value="${param.id}" target="${requestScope.user}" property="id"></c:set>

  ② 流程控制:if/choose/when/otherwise

    <c:if />标签:这个标签没有else if /else操作,但是可以将判断内容的返回值true/false保存在域对象中供下次使用,如:<c:if test="${requestScope.user.id>20}" var="id" scope="page" ><c:if>

    <c:choose><c:when></c:when><c:otherwise></c:otherwise></c:choose>可以实现if00else if -- else的操作,但是有点麻烦。

  ③ 迭代操作:forEach/forTokens

     <c:forEach />:这个标签可以循环遍历数组、集合、Map。

     各个属性:items表示正在遍历的集合/Map/数组。var表示集合/Map/数组中正在遍历的对象。begin表示开始遍历的下标位置(需要注意的是:这个下标位置和对象所在的容器当中的下标位置是一致的)。end表示结束遍历的下标位置。varStatus这个标识正在遍历对象的状态信息,如此对象所在容器中的索引位置等等信息。如:<c:forEach items="${requestSope.users}" var="user" > ${user.id}  , ${user.name} </c:forEach>  <c:forEach items="${requestSope.users}" var="user" varStatus="status"> ${user.id}  , ${user.name}  , ${status.index} , ${status.count} </c:forEach>

      需要注意的是:在<c:forEach/>标签的处理类中,实际上是将每一个遍历的对象都放入到了pageContext域对象中,所以我们在标签体内通过${pageContext.user.id}也是可以获取的。

    <c:forTokens />:这个标签可以遍历浏览一个字符串中以特定间隔符号分割的所有子串成员。如:<c:forTokens items=""  var=""  delims=""><c:forTokens>  

  ④ URL操作:forward/url/import

      <c:redirect url="" />:这个标签可以重定向请求到新的页面。需要注意的是,这个标签中的/代表的是当前WEB应用的根目录,因为他首先是一个标签,需要web服务器来先进行解析。而response.sendRedirect()方法中的/代表的是当前站点的根目录,因为他发送了两次请求,第一次请求的响应需要先交给浏览器处理。我们还可以使用<jsp:forward url="" />来转发到一个页面。

     <c:import url="" />:这个标签可以将任何的页面包含到当前页面。

     <c:url value="" var="" scope="" /> :这个标签标示产生一个URL地址,可以将其存入到域对象中,并且可以智能的判断cookie是否需要智能的进行URL重写(即当cookie禁用时,将JSESSIONID放入到URL的后边传递)。其中的value属性值的/代表当前WEB引用的根目录,因为它首先是一个标签,需要交由WEB服务器去测试。·

 


原创粉丝点击