《实验7-表达式语言与JSTL.doc》由会员分享,可在线阅读,更多相关《实验7-表达式语言与JSTL.doc(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流实验7-表达式语言与JSTL.精品文档.实验7(1) 表达式语言的使用一、实验目的1. 了解表达式语言的功能;2. 掌握表达式语言的使用。二、实验原理表达式语言(EL)是JSP 2.0新增的功能。它是一种简洁的数据访问语言,通过它可以在JSP页面中方便地访问应用程序数据,无需使用JSP表达式()。EL的目标是使动态网页的设计、开发和维护更加容易。EL的特点是访问数据可以使用点(.)运算符或方括号()运算符;可以访问隐含对象;有自己的运算符构造表达式;可以使用Java语言编写的函数等。三、实验内容与步骤(一)表达式语言运算符的使用下面的JSP页
2、面operator.jsp演示了EL运算符的使用: JSP 2.0 Expression Language - Basic Arithmetic JSP 2.0 表达式语言 - 基本算术运算符 该例说明了基本的表达式语言的算术运算符的使用,其中包括加(+),减(-), 乘(*),除(/ 或 div), 取余 (% 或 mod)。 EL 表达式 结果 $1 $1 $1 + 2 $1 + 2 $1.2 + 2.3 $1.2 + 2.3 $1.2E4 + 1.4 $1.2E4 + 1.4 $-4 - 2 $-4 - 2 $21 * 2 $21 * 2 $3/4 $3/4 $3 div 4 $3 di
3、v 4 $3/0 $3/0 $10%4 $10%4 $10 mod 4 $10 mod 4 $(1=2) ? 3 : 4 $(1=2) ? 3 : 4 图7.1 operater.jsp页面的运行结果(二)访问作用域变量编写一个名为EmployeeBean的JavaBean,其中包括3个属性eno表示雇员号、ename表示雇员名和ecompany表示雇员公司名。【步骤1】EmployeeBean.java程序代码package com.beans;public class EmployeeBean private String eno = ; private String ename = ;
4、private String ecompany = ; public EmployeeBean() public void setEno(String eno) this.eno = eno; public void setEname(String ename) this.ename = ename; public void setEcompany(String ecompany) this.ecompany = ecompany; public String getEno() return eno; public String getEname() return ename; public
5、String getEcompany() return ecompany;【步骤2】编写一个JSP页面,在其中通过表单输入雇员信息,将请求转发到一个Servlet。请输入雇员信息:雇员号:雇员名:公司名:【步骤3】下面的Servlet从JSP页面得到客户信息package com.control;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import com.beans.EmployeeBean;public class EmployeeServlet extends HttpServlet publ
6、ic void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException String eno = request.getParameter(eno); String ename = request.getParameter(ename); String ecompany = request.getParameter(ecompany); EmployeeBean employee = new EmployeeBean(); employee.setE
7、no(eno); employee.setEname(ename); employee.setEcompany(ecompany); request.setAttribute(employee, employee); RequestDispatcher view = request.getRequestDispatcher(/displayEmployee.jsp); view.forward(request, response);【步骤4】下面的JSP使用EL表达式显示用户的信息雇员的信息如下: 雇员号:$employee.eno 雇员名:$employee.ename 公司名:$emplo
8、yee.ecompany图7.2.1 employee.jsp页面的运行结果图7.2.2 displayEmployee.jsp页面的运行结果(三)隐含对象的使用下面的JSP页面implicit.jsp演示了EL隐含对象的使用。 EL implicit objects JSP 2.0 表达式语言-隐含对象 输入foo参数值 foo= EL 表达式 结果 $param.foo $param.foo $paramfoo $paramfoo $headerhost $headerhost $headeraccept $headeraccept $headeruser-agen
9、t $headeruser-agent 图7.3 implicit.jsp页面的运行结果(四)在JSP页面中使用Java函数设要在JSP页面中使用一个add()函数,实现两个整数的加法运算。在JSP中使用Java函数要经过如下3个步骤:【步骤1】函数的定义,创建类文件Compute.java。它定义了要在JSP中使用的add()方法。package com.demo;public class Compute public static int add(String x,String y)int a = 0;int b = 0;try a = Integer.parseInt(x); b = I
10、nteger.parseInt(y);catch(Exception e) System.err.println(Number format is illegal.);return a+b;package beans;import java.util.*;public class Functions public static String reverse( String text ) return new StringBuffer( text ).reverse().toString(); public static int numVowels( String text ) String v
11、owels = aeiouAEIOU;int result = 0; for( int i = 0; i text.length(); i+ ) if( vowels.indexOf( text.charAt( i ) ) != -1 ) result+;return result; public static String caps( String text ) return text.toUpperCase();【步骤2】创建标签库描述文件taglib.tld。它实现将每个Java方法与函数名相匹配。 A Simple Taglib File. 1.0 Simple Tag Library
12、 Adding two numbers add com.demo.Compute int add( java.lang.String, java.lang.String) Reverses the characters in the given String reversebeans.Functionsjava.lang.String reverse( java.lang.String ) Counts the number of vowels (a,e,i,o,u) in the given String countVowelsbeans.Functionsjava.lang.String
13、numVowels( java.lang.String ) Converts the string to all caps capsbeans.Functionsjava.lang.String caps( java.lang.String ) 注意:将该文件保存在Web应用程序WEB-INFclasses目录中。【步骤3】编写JSP文件sum.jsp,使用标签库URI以及函数名调用Java函数,代码如下:Using Function 计算两个整数之和 X = Y = 两个整数的和为:$demo:add(paramx,paramy)该页面运行结果为:图7.4 sum.jsp页面的运行结果(五)
14、编写一个名为palindrome(String str)的Java函数,实现判断用户输入的字符串是否是回文(palindrome)。编写一个JSP页面,通过EL使用该函数。public static boolean palindrome(String str) StringBuffer sb = new StringBuffer(str); if(sb.reverse().toString().equals(str) return true; else return false;四、思考题1. 简述JSP表达式语言的主要功能有哪些? 答:动态读取JavaBean中的数据和动态将数据写入Java
15、Bean中一级调用任意静态或公有方法还有动态执行算术运算。2简述在JSP页面中使用Java函数的步骤。答:首先在之间声明方法,该方法在整个JSP页面有效,但是该方法内定义的变量只在该方法内有效。这些方法将在Java程序片中被调用,当方法被调用时,方法内定义的变量被分配内存,调用完毕即可释放内存。实验7(2) JSTL与标签文件一、实验目的1. 了解什么是JSTL?2. 掌握JSTL的核心库标签的使用。3. 掌握标签文件的开发和使用。二、实验原理JSP标准标签库(JSP Standard Tag Library,简称JSTL)是一个为实现Web应用程序的常用功能而开发的标签库集合。功能包括基本输
16、入输出、流程控制、XML文件解析、数据库查询、国际化和文本格式化等。JSTL主要由下面几个库组成: 核心标签库;XML标签库;格式化/国际化标签库;数据库标签库;函数标签库。这些库都很有用,但我们这里只学习核心库的使用。核心库的标签又可以分成四类,如表12.1所示:表12.1 按功能分类的核心库的标签JSTL标签类别JSTL标签标签说明通用目的在页面中显示内容捕获异常变量支持设置一个EL变量值清除一个EL变量流程控制根据一个属性等于一个值改变处理根据一个属性等于一组值改变处理对集合中的每个对象作重复处理对给定一个文本域中的每个子串执行处理URL处理重写URL并对它们的参数编码访问web应用程序
17、外部的内容告诉客户浏览器访问另一个URL标签文件(tag file)也是JSP 2.0新增的功能,它的目的是使JSP页面开发人员仅使用JSP语法就能开发标签库而无须编写Java程序。所谓标签文件就是直接使用JSP语法编写的标签。标签文件的扩展名一般为.tag或.tagx,如果标签文件包含其他完整的或片段的标签文件,JSP 2.0建议其扩展名为.tagf。在JSP页面中使用标签文件,需要在taglib动作中使用tagdir属性指定标签文件所在的目录,例如:三、实验内容与步骤(一)JSTL的安装和测试【步骤1】要在JSP页面中使用JSTL标签,首先必须安装JSTL库。可以到Jakarta网站下载最
18、新版本的JSTL,网址为http:/jakarta.apache.org/,目前最新版本为1.1.2版,它支持JSP 2.0和Servlet 2.4。如果安装了Tomcat,可以在示例应用程序中获得JSTL,它位于webapps examplesWEB-INFlib目录中,共有两个文件:jstl.jar和standard.jar。将这两个文件复制到你的Web应用程序的WEB-INFlib目录中,就安装了JSTL。【步骤2】一个简单的测试JSP页面jstl_test.jspUsing JSTLRequest Method:$pageContext.request.methodRemote Add
19、ress:$pageContext.request.remoteAddr如果页面运行产生下面结果,说明JSTL安装正确,可以使用。图7.2.1 jstl_test.jsp 页面的运行结果说明:使用JSTL我们不用建立标签库描述文件,因为该文件已经包含在standard.jar文件中了,JSP容器可以找到该文件。另外,也可以不用配置web.xml文件,因为JSP容器使用隐含映射的方式可以将标准的URI映射到适当的标签库上。(二)表达式相关标签的使用下面的core_expression.jsp演示了、和标签的使用,代码如下: 表达式相关的标签使用c:out value= /的例子不同作用域的num
20、ber变量的初始值pageScope.number =requestScope.number =sessionScope.number =c:out value=执行之后/pageScope.number =requestScope.number =sessionScope.number =图7.2.2 core_expression.jsp 页面的运行结果(三)流程控制标签的使用。本实验包括2个页面,一个是flowControl.html,一个是flowControl.jsp。【步骤1】flowControl.html的代码如下: JSTL中用于流程控制的标签使用JSTL流程控制标签请选择一
21、个填入文本框中:TomJerryMikeBen 姓名: 【步骤2】flowControl.jsp的代码如下: JSTL中用于流程控制的标签 标签c:if的使用 您好,Tom 您好,Jerry 您好,Mike 您好,Ben 标签c:choose c:when c:otherwise使用 您好,Tom 您好,Jerry 您好,Mike 您好,Ben 执行flowControl.jsp的结果如下图所示:图7.2.3.1 flowControl.html页面的运行结果在文本框中输入Tom后,点击“传送”按钮,则出现下面的结果:图7.2.3.2 flowControl.jsp页面的运行结果(四)URL相
22、关标签的使用【步骤1】included.jsp是被包含的页面,代码如下:Included Page这是被包含页面中的内容用户名:【步骤2】import_test.jsp是包含页面,代码如下:Using URL JSTL这是包含页面中的内容 运行该页面,结果如下图所示:图7.2.4 import_test.jsp页面的运行结果【步骤3】redirect_test.jsp测试了重定向标签的使用,其代码如下:Using Redirect Tag使用redirect标签 该页面的执行结果与前面的图一样。(五)创建简单的标签文件 【步骤1】创建一个名为example.tag的简单的标签文件,代码如下:注意:将该文件存放在Web应用程序的WEB-INF/tags目录中。 【步骤2】创建一个名为example.jsp的页面,代码如下:The first six numbers in the Fibonacci sequence are:执行该JSP页面,结果如下:图7.2.5 example.jsp页面的运行结果(六)使用标签文件指令控制标签 【步骤1】下面的标签文件使用了tag指令的dynamic-attributes属性。dynatt.tag文件的代码如下:$att.value/c:forEa