[Java Web]实验六 表达式语言的使用 编写一个名为EmployeeBean的JavaBean,其中包括3个 编写JSP文件sum.jsp,使用标签库URI以及函数名调用Java函数,代码如下:

[Java Web]实验六 表达式语言的使用 编写一个名为EmployeeBean的JavaBean,其中包括3个 编写JSP文件sum.jsp,使用标签库URI以及函数名调用Java函数,代码如下:

码农世界 2024-05-27 前端 70 次浏览 0个评论

实验六  表达式语言的使用

一、实验目的

1. 了解表达式语言的功能;

2. 掌握表达式语言的使用。

二、实验原理

表达式语言(EL)是JSP 2.0新增的功能。它是一种简洁的数据访问语言,通过它可以在JSP页面中方便地访问应用程序数据,无需使用JSP表达式(<%=和%>)。EL的目标是使动态网页的设计、开发和维护更加容易。

EL的特点是访问数据可以使用点(.)运算符或方括号([])运算符;可以访问隐含对象;有自己的运算符构造表达式;可以使用Java语言编写的函数等。

三、实验内容与步骤

(一)表达式语言运算符的使用

下面的JSP页面operator.jsp演示了EL运算符的使用:

<%@ page contentType="text/html;charset=gb2312" %>

  
    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 div 4}
\${3/0} ${3/0}
\${10%4} ${10%4}
\${10 mod 4} ${10 mod 4}
\${(1==2) ? 3 : 4} ${(1==2) ? 3 : 4}
         
 

(二)访问作用域变量

编写一个名为EmployeeBean的JavaBean,其中包括3个属性eno表示雇员号、ename表示雇员名和ecompany表示雇员公司名。

【步骤1】EmployeeBean.java程序代码

package com.beans;
public class EmployeeBean {
  private String eno = "";
  private String ename = "";
  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 String getEcompany(){
         return ecompany;
  }
}

【步骤2】编写一个JSP页面,在其中通过表单输入雇员信息,将请求转发到一个Servlet。

<%@ page contentType="text/html;charset=gb2312"%>


请输入雇员信息:
雇员号:
雇员名:
公司名:

【步骤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{
   public 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.setEno(eno);
      employee.setEname(ename);
      employee.setEcompany(ecompany);
     
      request.setAttribute("employee", employee);
      RequestDispatcher view =
           request.getRequestDispatcher("/displayEmployee.jsp");
      view.forward(request, response);
  }
}

【步骤4】下面的JSP使用EL表达式显示用户的信息

<%@ page contentType="text/html;charset=gb2312"%>

雇员的信息如下:
     
  • 雇员号:${employee.eno}  
  • 雇员名:${employee.ename}  
  • 公司名:${employee.ecompany}

(三)隐含对象的使用

下面的JSP页面implicit.jsp演示了EL隐含对象的使用。

<%@ page contentType="text/html;charset=gb2312" %>

  
    EL implicit objects
  
  
    

JSP 2.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"]}
       
 

(四)在JSP页面中使用Java函数

设要在JSP页面中使用一个add()函数,实现两个整数的加法运算。在JSP中使用Java函数要经过如下3个步骤:

【步骤1】函数的定义,创建类文件Compute.java。它定义了要在JSP中使用的add()方法。

package com.example.expsix;
public class Compute{
    public static int add(String x,String y){
        int a = 0;
        int b = 0;
        try{
            a = Integer.parseInt(x);
            b = Integer.parseInt(y);
        }catch(Exception e){
            System.err.println("Number format is illegal.");
        }
        return a+b;
    }
}

package com.example.expsix;
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 vowels = "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
    demo
    http://www.mydomain.com/function
    
        Adding two numbers
        add
        com.example.expsix.Compute
        
            int add( java.lang.String, java.lang.String)
        
    
    
        Reverses the characters in the given String
        reverse
        com.example.expsix.Functions
        java.lang.String reverse( java.lang.String )
    
    
        Counts the number of vowels (a,e,i,o,u) in the given String
        countVowels
        com.example.expsix.Functions
        int numVowels( java.lang.String )
    
    
        Converts the string to all caps
        caps
        com.example.expsix.Functions
        java.lang.String caps( java.lang.String )
    

注意:将该文件保存在Web应用程序WEB-INF\classes目录中。

还需要新建web.xml文件:



    Archetype Created Web Application
    
    
        
        http://www.mydomain.com/function
        
        /WEB-INF/classes/taglib.tld
    
    

【步骤3】编写JSP文件sum.jsp,使用标签库URI以及函数名调用Java函数,代码如下:

<%@ page contentType="text/html;charset=gb2312" %>
<%@ taglib prefix="demo" uri="http://www.mydomain.com/function" %>
<%@page isELIgnored="false"%>

Using Function 

计算两个整数之和

X = Y =

两个整数的和为:${demo:add(param["x"],param["y"])}

该页面运行结果为:

图10.1 sum.jsp页面的运行结果

(四)编写一个名为palindrome(String str)的Java函数,实现判断用户输入的字符串是否是回文(palindrome)。编写一个JSP页面,通过EL使用该函数。

在Functions类里面加入方法:

public static boolean palindrome(String str){
          StringBuffer sb = new StringBuffer(str);
          if((sb.reverse().toString()).equals(str)){
                   return true;
          }else{
                   return false;
          }
 }

在taglib.tld中加入:

  
        Converts the string to all caps
        palindrome
        com.example.expsix.Functions
        boolean palindrome(java.lang.String)
    

新建jsp文件palindrome.jsp:

<%@ page contentType="text/html;charset=gb2312" %>
<%@ taglib prefix="demo" uri="http://www.mydomain.com/function" %>
<%@page isELIgnored="false"%>

Using Function 

判断字符串是否是回文

S =

字符串是否是回文:${demo:palindrome(param["s"])}

四、思考题

1. 简述JSP表达式语言的主要功能有哪些?

JSP表达式语言(Expression Language,简称EL)的主要功能包括:

(1)简化表达式:EL 提供了在 JSP 中简化表达式的方法。其灵感来自于 ECMAScript 和 XPath 表达式语言,这使得 JSP 写起来更加简单。

(2)访问数据:EL 可以轻松地访问和操纵 JavaBean 中的数据。不论是算术表达式还是逻辑表达式的创建,EL 都可以胜任。

(3)支持多种数据类型:在 EL 表达式内,可以使用整型数、浮点数、字符串、常量 true、false,以及 null。

(4)提供可扩展函数:EL 具有映射到 Java 类中静态方法的可扩展函数。

(5)一组隐式对象:EL 提供了一组隐式对象,这些对象可以在表达式中直接使用,无需声明。

(6)运行时表达式的功能:EL 提供了在 JSP 脚本编制元素范围外使用运行时表达式的功能。

2.简述在JSP页面中使用Java函数的步骤。

在JSP页面中使用Java函数的步骤大致如下:

(1)首先,需要创建一个Java类,并在其中定义想要使用的函数。注意,这个函数必须是静态的。

(2)在JSP页面中,通过 <%@ page import="包.类" %> 的方式引入创建的Java类。

(3)在JSP页面中,可以直接通过类名和方法名调用该函数。例如,如果函数是 public static String sayHello(String name),那么在JSP页面中可以这样调用:<%= 类名.sayHello("world") %>。

注意:虽然在JSP中可以使用Java代码,但这并不是一种好的做法。因为JSP主要应该用于表示层,即显示数据给用户,而业务逻辑和数据处理应该在Servlet或其他Java类中完成。在JSP中过多使用Java代码会使表示层和业务逻辑混在一起,导致代码难以维护和扩展。因此,在实际开发中,应尽量避免在JSP页面中使用过多的Java代码。

转载请注明来自码农世界,本文标题:《[Java Web]实验六 表达式语言的使用 编写一个名为EmployeeBean的JavaBean,其中包括3个 编写JSP文件sum.jsp,使用标签库URI以及函数名调用Java函数,代码如下:》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,70人围观)参与讨论

还没有评论,来说两句吧...

Top