实验15 JSP 标准标签库(JSTL)
15.1实验目的
1.理解什么是JSTL;
2.掌握JSTL的配置方法;
3.掌握核心标签库的使用技巧;
4.掌握国际化和格式化标签库的使用技巧。
15.2 实验环境
1.MyEclipse插件平台、
2.Weblogic(或者Tomcat)容器
15.3实验知识背景
15.3.1 JSTL简介
JSTL (JSP Standard Tag Library, JSP标准标签库)是一个开源项目,是一个标准的已定制好的JSP标签库。它可以替代Java代码实现各种功能,如:输入输出、流程控制、迭代、数据库查询及国际化的应用等。减少JSP中脚本代码的数量。
网络上下载jakarta-taglibs-standard-1.1.2.zip 后,解压后得到两个文件:jstl.jar和standard.jar,其中:jstl.jar包含的是JSTL规范中定义的接口和类,standard.jar包含的是Jakarta小组对JSTL的实现和JSTL中5个标签库的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.jar和standard.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的项目中,继续编写2张JSP页面,要求可以实现用表格显示商品名字和单价,允许用户输入购买的数量,如图15-6所示。当用户点击“提交”按钮后,则提取用户输入数据,进行运算求出货品的总价并且输出。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论