ServletsJsp 实验10表达式语言EL的使用.docx
《ServletsJsp 实验10表达式语言EL的使用.docx》由会员分享,可在线阅读,更多相关《ServletsJsp 实验10表达式语言EL的使用.docx(27页珍藏版)》请在冰豆网上搜索。
ServletsJsp实验10表达式语言EL的使用
10
实验十表达式语言的使用
一.实验目的
1.了解表达式语言的功能;
2.掌握表达式语言的使用。
二.实验内容
1.表达式语言运算符的使用
下面的JSP页面operator.jsp演示了EL运算符的使用:
<%@pagecontentType="text/html;charset=gb2312"%>
JSP2.0ExpressionLanguage-BasicArithmeticJSP2.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} |
\${3div4} | ${3div4} |
\${3/0} | ${3/0} |
\${10%4} | ${10%4} |
\${10mod4} | ${10mod4} |
\${(1==2)? 3: 4} | ${(1==2)? 3: 4} |
2访问作用域变量
编写一个名为EmployeeBean的JavaBean,其中包括3个属性eno表示雇员号、ename表示雇员名和ecompany表示雇员公司名。
【步骤1】EmployeeBean.java程序代码
packagecom.beans;
publicclassEmployeeBean{
privateStringeno="";
privateStringename="";
privateStringecompany="";
publicEmployeeBean(){
}
publicvoidsetEno(Stringeno){
this.eno=eno;
}
publicvoidsetEname(Stringename){
this.ename=ename;
}
publicvoidsetEcompany(Stringecompany){
this.ecompany=ecompany;
}
publicStringgetEno(){
returneno;
}
publicStringgetEname(){
returnename;
}
publicStringgetEcompany(){
returnecompany;
}
}
【步骤2】编写一个JSP页面,在其中通过表单输入雇员信息,将请求转发到一个Servlet。
<%@pagecontentType="text/html;charset=gb2312"%>
请输入雇员信息:
【步骤3】下面的Servlet从JSP页面得到客户信息
packagecom.control;
importjava.io.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
importcom.beans.EmployeeBean;
publicclassEmployeeServletextendsHttpServlet{
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
Stringeno=request.getParameter("eno");
Stringename=request.getParameter("ename");
Stringecompany=request.getParameter("ecompany");
EmployeeBeanemployee=newEmployeeBean();
employee.setEno(eno);
employee.setEname(ename);
employee.setEcompany(ecompany);
request.setAttribute("employee",employee);
RequestDispatcherview=
request.getRequestDispatcher("/displayEmployee.jsp");
view.forward(request,response);
}
}
【步骤4】下面的JSP使用EL表达式显示用户的信息
<%@pagecontentType="text/html;charset=gb2312"%>
雇员的信息如下:
- 雇员号:
${employee.eno}
- 雇员名:
${employee.ename}
- 公司名:
${employee.ecompany}
3.隐含对象的使用
下面的JSP页面implicit.jsp演示了EL隐含对象的使用。
<%@pagecontentType="text/html;charset=gb2312"%>
ELimplicitobjectsJSP2.0表达式语言-隐含对象
输入foo参数值
foo=
EL表达式 | 结果 |
\${param.foo} | ${param.foo} |
\${param["foo"]} | ${param["foo"]} |
\${header["host"]} | ${header["host"]} |
\${header["accept"]} | ${header["accept"]} |
\${header["user-agent"]} | ${header["user-agent"]} |
4.在JSP页面中使用Java函数
设要在JSP页面中使用一个add()函数,实现两个整数的加法运算。
在JSP中使用Java函数要经过如下3个步骤:
【步骤1】函数的定义,创建类文件Compute.java。
它定义了要在JSP中使用的add()方法。
packagecom.demo;
publicclassCompute{
publicstaticintadd(Stringx,Stringy){
inta=0;
intb=0;
try{
a=Integer.parseInt(x);
b=Integer.parseInt(y);
}catch(Exceptione){
System.err.println("Numberformatisillegal.");
}
returna+b;
}
}
【步骤2】创建标签库描述文件taglib.tld。
它实现将每个Java方法与函数名相匹配。
xmlversion="1.0"encoding="UTF-8"?
>
xmlns:
xsi="http:
//www.w3.org/2001/XMLSchema-instance"
xsi:
schemaLocation="
version="2.0">
ASimpleTaglibFile.
1.0
SimpleTagLibrary
Addingtwonumbers
add
com.demo.Compute
intadd(java.lang.String,java.lang.String)
注意:
将该文件保存在Web应用程序WEB-INF\classes目录中。
【步骤3】编写JSP文件sum.jsp,使用标签库URI以及函数名调用Java函数,代码如下:
<%@pagecontentType="text/html;charset=gb2312"%>
<%@taglibprefix="demo"uri="%>
UsingFunction
计算两个整数之和
X=
Y=
两个整数的和为:
${demo:
add(param["x"],param["y"])}
该页面运行结果为:
图10.1sum.jsp页面的运行结果
5.下面在Functions类中定义了reverse()函数用来实现字符串反转、numVowels()函数用来实现统计字符串中元音字母个数、caps()函数用来将一个字符串转换成大写字母、palindrome()函数用来判断一个字符串是否是回文。
编译该文件,编写TLD文件定义这些函数,编写JSP页面使用这些函数。
packagecom.function;
importjava.util.*;
publicclassFunctions{
publicstaticStringoldString(Stringtext)
{
returntext;
}
publicstaticStringreverse(Stringtext){
returnnewStringBuffer(text).reverse().toString();
}
publicstaticintnumVowels(Stringtext){
Stringvowels="aeiouAEIOU";
intresult=0;
for(inti=0;iif(vowels.indexOf(text.charAt(i))!
=-1){
result++;
}
}
returnresult;
}
publicstaticStringcaps(Stringtext){
returntext.toUpperCase();
}
publicstaticbooleanpalinDrome(Stringstr){
StringBuffersb=newStringBuffer(str);
if((sb.reverse().toString()).equals(str)){
returntrue;
}else{
returnfalse;
}
}
}
xmlversion="1.0"encoding="UTF-8"?
>
xmlns:
xsi="http:
//www.w3.org/2001/XMLSchema-instance"
xsi:
schemaLocation="
version="2.0">
ASimpleTaglibFile.
1.0
SimpleTagLibrary
outputtheoldString
oldString
com.function.Functions
java.lang.StringoldString(java.lang.String)
ReversesthecharactersinthegivenString
reverse
com.function.Functions
java.lang.Stringreverse(java.lang.String)
Countsthenumberofvowels(a,e,i,o,u)inthegivenString
numVowels
com.function.Functions
java.lang.intnumVowels(java.lang.String)
Convertsthestringtoallcaps
caps
com.function.Functions
java.lang.Stringcaps(java.lang.String)
JudgeastringifapalinDrome
palinDrome
com.function.Functions
java.lang.BooleanpalinDrome(java.lang.String)
<%@pagecontentType="text/html;charset=gb2312"%>
<%@taglibprefix="function"uri="%>
UsingFunction
函数功能
text:
youentered:
${function:
oldString(param["text"])}
Afterreversing:
${function:
reverse(param["text"])}
Aftercountingvowels:
thereare${function:
numVowels(param["text"])}vowels.
Afterexchanging:
${function:
caps(param["text"])}
Afterjudging:
thetextweatherispalinDrome?
${function:
palinDrome(param["text"])}
三.思考题
1.简述JSP表达式语言的主要功能有哪些?
2.简述在JSP页面中使用Java函数的步骤。
源代码:
1:
(1):
input.jsp
<%@pagecontentType="text/html;charset=gb2312"%>
请输入雇员信息:
(2):
EmployeeServlet.servlet
packagecom.control;
importjava.io.*;
importjavax.servlet.*;
importjavax.servlet.h