实验15  JSP 标准标签库(JSTL)
15.1实验目的
    1.理解什么是JSTL
    2.掌握JSTL的配置方法;
    3.掌握核心标签库的使用技巧;
    4.掌握国际化和格式化标签库的使用技巧。
15.2 实验环境
1MyEclipse插件平台、
2Weblogic(或者Tomcat)容器
15.3实验知识背景
15.3.1 JSTL简介
JSTL (JSP Standard Tag Library, JSP标准标签库)是一个开源项目,是一个标准的已定制好的JSP标签库。它可以替代Java代码实现各种功能,如:输入输出、流程控制、迭代、数据库查询及国际化的应用等。减少JSP中脚本代码的数量。
网络上下载jakarta-taglibs-standard-1.1.2.zip 后,解压后得到两个文件:jstl.jarstandard.jar,其中:jstl.jar包含的是JSTL规范中定义的接口和类,standard.jar包含的是Jakarta小组对JSTL的实现和JSTL5个标签库的TLD文件。将上述两个文件直接复制到应用程序的WEB-INF\lib目录下即可。在MyEclipse等开发工具中,已包含JSTL内容,不必下载、安装,只要在创建web项目时选择JSTL即可,如图15-1、图15-2所示。
15-1选择jsp创建JSTL版本                                       
15-2 添加包的引用
15.3.2 JSTL语法基础
核心标签库通用格式:
<%@ taglib prefix="c" uri="java.sun/jsp/jstl/core"%>
<c:xxx  属性1=1   属性k=k  >
下面是常用的核心标签库的标签介绍。
(1) <c:out>:主要用来显示数据的内容,如同 <%=表达式 %>
格式1:没有标签体
<c:out value=value [escapeXml=true|false] [default=“默认值] />
格式2:有标签体
<c:out value="value" [escapeXml="true|false"]>   
默认值
</c:out>
(2) <c:set>:用来将变量存储在JSP范围中或JavaBean的属性中。
格式1:将 value的值储存在scope的范围内的 varName 变量中
<c:set value="value" var="varName"  [scope=" page|request|session|application"]/>
<c:set var=varName [scope= page|request|session|application ]>   
标签体内容
</c:set>
格式2:将 value 的值保存至 target 对象的属性中
< c:set value=value target=对象名  property="propertyName" />
<c:set target=“对象名 property=propertyName>
            标签体内容
</c:set>
(3) <c:if> 条件判断
格式:
<c:if test=测试条件"    var="varName"[scope="page|request|session|application"]/>
<c:if test=“测试条件" [var="varName"] [scope="page|request|session|application"]>
        具体内容
</c:if>
(4) <c:param>:为其它标签提供URL的附加参数,如<c:redirect>标签中
格式:
<c:param name=名字 value= />
<c:param name=名字 >
      参数值
</c:param>
(5) <c:redirectl>:实现URL跳转
格式:
<c:redirect url="url" [context="context"] />
<c:redirect url="url" [context="context"] >
    <c:param> (代表查询字符串(Query String)参数)
</c:redirect >
(6) 多分支判断:<c:choose> <c:when> <c:otherwise>.
格式:
<c:choose>
          <c:when test=条件表达式>
                  body
          </c:when>
          <c:when test=条件表达式>
                  body
          </c:when>
            ……
    [ <c:otherwise>
                  body
          </c:otherwise>]
</c:choose>
(7) <c:forEach>:用于对一个集合中的元素进行循环迭代操作,或按指定的次数重复迭代执行
标签体中的内容
格式1:在集合对象中迭代
<c:forEach  [var=变量名] items=集合名 [varStatus=迭代信息状态] [begin=起始索引"][end=终止索引] [step=步长"]>
    标签体内容
< /c:forEach>
格式2:按指定次数进行迭代
<c:forEach  [var=变量名]  [varStatus=迭代信息状态] begin=起始索引 end=终止索引 [step=步长"]>
                    标签体内容
< /c:forEach>
(8) <c:forTokens>:用来浏览一字符串中所有的成员,其成员是由定义符号(delimiters)
分隔的。格式:
<c:forTokens items=“迭代对象 delims=”分隔符" [var="varName"]
[varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>
    标签体内容
</c:forTokens>
15.4 实验内容及步骤
1问题描述:JSTL EL技术进行实现。一个简单的用户注册后显示注册信息的功能。图15-3为用户注册页面,当用户点击“注册”按钮,则提取用户输入信息,运行效果如图15-4所示。
15-3 用户注册页面
15-4注册信息显示页面
(1) 新建web项目,先把jstl.jarstandard.jar拷贝到Web-INF目录中,然后添加引用,项目结构如图15-5所示。
15-5项目结构图
2在项目中新建页面reg.jsp;
源代码:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
    <head>
        <title>注册信息</title>
    </head>
    <body>
    <div align=center>
        <H2>
            用户注册
        </H2>
    </div>
        <hr/>
        <form method="post" action="disp.jsp">
              名:
            <input type="text" name="name">
            <P>
                    码:
                <input type="password" name="password">
            <P>
                密码确认:
                <input type="password" name="rpassword">
            <P>
            性别:<input type="radio" name="sex" value="1"/>
            <input type="radio" name="sex" value="0"/>   
            <p/>       
                业余爱好:
                <input type="checkbox" name="hobby" value="看书">
                看书 
                <input type="checkbox" name="hobby" value="上网">
                上网 
                <input type="checkbox" name="hobby" value="音乐">
                音乐 
                <input type="checkbox" name="hobby" value="旅游">
                旅游 
                <input type="checkbox" name="hobby" value="体育">
                体育 
            <P>
                <input type="submit" name="Submit" value="注册">
                  
                <input type="reset" name="Reset" value="重置">
            <P>
        </form>
    </body>
</html>
3)新建页面disp.jsp
源代码:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="java.sun/jsp/jstl/core"%>
<%request.setCharacterEncoding("utf-8"); %>
<html>
    <head>
        <title>EL+JSTL例子</title>
    </head>
    <body>
       
            用户姓名:${param.name}
            <p>
            用户密码:${param.password }
        <p>
            确认密码:${param.password }
        <p>
            性别:${param.sex=="0"? "":"" }
        <p>
            业余爱好:
        <c:forEach items="${paramValues.hobby}" var="hobby">
            ${hobby}
        </c:forEach>
    </body>
</html>
2问题描述:在上面问题1的项目中,继续编写2JSP页面,要求可以实现用表格显示商品名字和单价,允许用户输入购买的数量,如图15-6所示。当用户点击“提交”按钮后,则提取用户输入数据,进行运算求出货品的总价并且输出。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。