第五章.JSP与JavaBean

目录

# JavaBean 介绍

## 5.1 编写和使用 JavaBean 

### 5.1.1 编写 JavaBean

### 5.1.2 保存 bean 的字节码

### 5.1.3 创建和使用 bean

## 5.3 bean 的辅助类


# JavaBean 介绍

JavaBean 是一种特殊的 Java 类,它遵循了一些规范,使得它可以被其他程序或组件复用和操作。JavaBean 的主要作用是封装数据,方便在不同层之间传递和处理。例如,在 JSP 中,我们可以使用 JavaBean 来存储用户的输入信息,或者从数据库中查询到的数据。

## 5.1 编写和使用 JavaBean 

要编写一个 JavaBean,我们需要遵循以下几个规则:

- 提供一个无参的公有构造方法,以便其他程序可以通过反射技术创建 JavaBean 的实例。
- 实现 java.io.Serializable 接口,以便 JavaBean 可以被序列化和反序列化,从而实现数据的持久化和网络传输。
- 提供一系列的属性(property),每个属性都有对应的 getter 和 setter 方法,以便其他程序可以通过反射技术访问和修改 JavaBean 的属性值。属性的名称和类型可以是任意的,但是 getter 和 setter 方法必须遵循一定的命名规范,即 getPropertyName() 和 setPropertyName() 的形式。

### 5.1.1 编写 JavaBean

下面是一个简单的 JavaBean 的例子,它表示一个学生的信息:

```java
package com.example;

import java.io.Serializable;

public class Student implements Serializable {

    private String name; // 姓名属性
    private int age; // 年龄属性
    private double score; // 成绩属性

    public Student() {
        // 无参构造方法
    }

    public String getName() {
        // 姓名属性的 getter 方法
        return name;
    }

    public void setName(String name) {
        // 姓名属性的 setter 方法
        this.name = name;
    }

    public int getAge() {
        // 年龄属性的 getter 方法
        return age;
    }

    public void setAge(int age) {
        // 年龄属性的 setter 方法
        this.age = age;
    }

    public double getScore() {
        // 成绩属性的 getter 方法
        return score;
    }

    public void setScore(double score) {
        // 成绩属性的 setter 方法
        this.score = score;
    }
}
```

### 5.1.2 保存 bean 的字节码

编译上面的 JavaBean 类后,我们需要将生成的字节码文件(Student.class)保存到合适的位置,以便其他程序可以找到并加载它。通常,我们会将字节码文件保存到 WEB-INF/classes 目录下,并按照包名创建相应的子目录。

### 5.1.3 创建和使用 bean

创建了 JavaBean 之后,我们就可以在其他程序中使用它了。例如,在 JSP 中,我们可以使用以下标签来声明和操作 JavaBean:

- `<jsp:useBean>` 标签:用于在 JSP 页面中创建或获取一个 JavaBean 的实例,并指定其 id 和作用域(scope)。
- `<jsp:setProperty>` 标签:用于给 JavaBean 的某个属性赋值。
- `<jsp:getProperty>` 标签:用于获取 JavaBean 的某个属性的值。

下面是一个 JSP 页面的例子,它使用了上面定义的 Student 类作为 JavaBean,并显示了其属性值:

```jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>JavaBean 示例</title>
</head>
<body>
<jsp:useBean id="student" class="com.example.Student" scope="page"/>
<!-- 创建一个 Student 类型的 JavaBean,并指定其 id 为 student,作用域为 page -->
<jsp:setProperty name="student" property="name" value="张三"/>
<!-- 给 student 的 name 属性赋值为 张三 -->
<jsp:setProperty name="student" property="age" value="18"/>
<!-- 给 student 的 age 属性赋值为 18 -->
<jsp:setProperty name="student" property="score" value="90.5"/>
<!-- 给 student 的 score 属性赋值为 90.5 -->
<p>学生姓名:<jsp:getProperty name="student" property="name"/></p>
<!-- 获取 student 的 name 属性并显示 -->
<p>学生年龄:<jsp:getProperty name="student" property="age"/></p>
<!-- 获取 student 的 age 属性并显示 -->
<p>学生成绩:<jsp:getProperty name="student" property="score"/></p>
<!-- 获取 student 的 score 属性并显示 -->
</body>
</html>

## 5.3 bean 的辅助类

除了上面介绍的两个标签外,还有一些辅助类可以用来操作 JavaBean。这些辅助类都位于 javax.servlet.jsp.el 包中,主要有以下几个:

- ExpressionEvaluator:用于解析和计算表达式的值。
- VariableResolver:用于解析变量的名称和值。
- FunctionMapper:用于解析自定义函数的名称和方法。
- Expression:用于表示一个表达式的对象。

这些辅助类可以让我们在 JSP 页面中使用更复杂和灵活的表达式,例如:

```jsp
<%-- 使用 ExpressionEvaluator 解析表达式 --%>
<%
  // 创建一个 ExpressionEvaluator 对象
  ExpressionEvaluator evaluator = new ExpressionEvaluatorImpl();
  // 创建一个 VariableResolver 对象
  VariableResolver resolver = new ImplicitObjectELResolver(pageContext);
  // 定义一个表达式
  String expression = "${student.name + '的年龄是' + student.age}";
  // 解析表达式的值
  Object value = evaluator.evaluate(expression, String.class, resolver, null);
%>
<p>表达式的值为:<%= value %></p>
```

这样,我们就实现了使用 JavaBean 辅助类在 JSP 页面中解析和计算表达式的功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值