JavaWeb---JSP标准标签库(JSTL)

来源:互联网 发布:动物百科全书软件 编辑:程序博客网 时间:2024/04/29 21:50

1.  为什么需要使用JSTL?

虽然EL表达式可以访问JavaBean的属性,但是并不能实现在JSP中进行逻辑判断,因而要使用JSTL标签

2.  什么是JSTL?

JSTLJSP Standard Tag LibraryJSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apachejakarta小组来维护的。JSTL标签库的出现,不仅简化了JSPWEB应用程序的开发,而且在应用程序服务器之间提供了一致的接口,最大程度地提高了WEB应用在各应用服务器之间的移植。而由JSTL1.0发展而来的EL语言更加简化了JSP页面中对变量和对象的访问操作。

3.  JSTL的优点:

a.   提供一组标准标签

b.   可用于编写各种动态 JSP页面

c.   JSTL通常会与EL表达式合作实现JSP页面的编码

4.  JSTL标准标签库内的标签:

JSTL标准标签库à核心标签库à{通用标签(set,remove,out),条件标签(if),迭代标签(foreach)}

5.  通用标签:set out remove

a.set:设置指定范围内的变量值

b.out:计算表达式并将结果输出显示

c.remove:删除指定范围内的变量

引入: <%@tagliburi="http://java.sun.com/jsp/jstl/core"prefix="c"%>

设置变量或属性

   <c:setvar="num"value="${100+1 }"scope="session"/>

   <c:setvar="num1"scope="session">${4+6}</c:set>

   输出变量值:

   <c:outvalue="${num }"/>

   <c:outvalue="${num1}"></c:out>

   <br>移除变量值:

   <c:removevar="num"/>

   <c:removevar="num1"/>

6.  条件标签的使用: if

a)  ifif标签用于判断条件是否成,与Java中的If语句做用用相同

语法:

<c:iftest="${num==100}"var="isnum"scope="page">

   <h4>num的值是100</h4>

   </c:if>

   <c:iftest="${num!=100}"var="isnum"scope="page">

   <h4>num的值不是100</h4>

</c:if>

7.  使用条件标签if做登陆验证:

 <%--

      StringloginName = (String) session.getAttribute("NAME");

   --%>

   <!-- IP:-->

   <!-- <inputtype="text" value="<%--=ip--%>" readonly="readonly"/>-->

   <c:setvar="loginName"value="${sessionScope.NAME}"></c:set>

   <%--

      if(loginName == null) {

   --%>

   <c:iftest="${loginName==null}"var="islogin">

   <formaction="do_login.jsp"method="post"onsubmit="check()">

      登录名:<inputtype="text"name="name"id="name">密码:<input

         type="password"name="pwd"id="pwd"><inputtype="submit"

         value="登陆">

   </form>

   </c:if>

   <%--

      }else if (loginName.equals("admin")) {

   --%>

   <c:iftest="${loginName.equals('admin')}">

   <div>

      欢迎您:<c:outvalue="${loginName}"/><%--=loginName--%>!<ahref="admin.jsp">管理控制台</a><a

         href="loginout.jsp">退出</a>

   </div>

   </c:if>

   <%--

      }else {

   --%>

   <c:iftest="${islogin}">

   <div>

      欢迎您:<c:outvalue="${loginName}"/><%--=loginName--%>!<ahref="loginout.jsp">退出</a>

   </div>

   </c:if>

   <%--

      }

--%>

8.  迭代标签:foreach fortokens

迭代标签用于多次计算标签体

Fortokens标签的属性:

名称

类型

属性描述

items

String

要处理的一系列以特定符号隔开的字符串

delims

String

分隔字符集合

var

Sring

记录当前处理项目的变量

varStatus

String

记录循环状态的变量

begin

int

循环的起始点

end

int

循环的结束位置

step

int

循环步长

 

9.  迭代标签的应用:

forEachfor循环语句的变体,实现集合对象(可以是list、数组等)的处理

<%@ tagliburi="http://java.sun.com/jsp/jstl/core"prefix="c"%><%! String [] numbers = { "1", "2", "3","4" }; %>

<c:setvar="sp"value="ed,saf,wfas;sdafasf:2423/2fsaf"/>

    <c:forEachvar="n"items="${NUMS}"varStatus="s">

          索引:<c:outvalue="${s.index}"/>

      <c:outvalue="${n}"/>

   遍历次数:<c:outvalue="${s.count }"/>

      <br>  </c:forEach>

FortokensJSTL种的另一个迭代循环标签,它可以用来对字符串进行迭代循环,这个字符串是用符号分开的

  <c:forTokensvar="t"items="${sp}"delims=",;:/">

      <c:outvalue="${t}"/>

      <br>

</c:forTokens>

10. 使用foreach改写新闻首页:

 <ulclass="classlist">

                <%

                   List<News>news = nc.selectNews();

                            request.setAttribute("news", news);

                %>

                <c:forEachvar="ns"items="${news}"varStatus="s">

                   <c:iftest="${s.count%5==0}">

                      <liclass='space'></li>

                   </c:if>

                   <li><ahref="new_read.jsp?nid=${ns.nid}"><c:out

                            value="${ns.ntitle}"/></a><span><c:out

                            value="${ns.ncreatedate}"/></span>

                   </li>

                </c:forEach>

             </ul>

0 0
原创粉丝点击