javaweb (三)——javabean

简介: javaweb (三)——javabean

1.1 javabean简介


为什么要引入javabean


JavaBean 是一种 Java 类,它遵循特定的命名约定并实现特定接口和规范。使用 JavaBean 可以将数据封装成对象,这样可以方便地进行操作和管理。引入 JavaBean 的主要目的是为了提高 Java 代码的可维护性和可重用性。


JavaBean 具有以下几个优点:


  1. 封装性:将数据封装在对象内,只暴露必要的属性和方法,屏蔽内部实现细节,提高安全性。
  2. 可重用性:JavaBean 可以被其他程序调用,使得代码具有更好的可重用性,减少了代码的冗余。
  3. 可扩展性:JavaBean 支持继承和多态特性,可以方便地扩展和修改代码,使得代码更加灵活和易于维护。
  4. 规范性:JavaBean 遵循一定的规范,使得代码结构清晰、易读易懂,并且符合 Java 编程的惯例和标准。
  5. 工具支持:JavaBean 可以被各种开发工具支持,如 Eclipse、NetBeans 等,方便编写和调试代码。

因此,引入 JavaBean 可以帮助开发人员更好地组织和管理代码,提高代码的可维护性和可重用性。


javabean的种类

JavaBean是指一种符合特定规范的Java类,它可以用于描述一个可重用的组件。不同类型的JavaBean可以根据其作用和实现方式进行分类,下面是几种常见的JavaBean分类:


1.实体类Bean(Entity Bean):主要用于封装持久化数据的JavaBean。


2.会话Bean(Session Bean):主要用于支持应用程序的业务逻辑处理。

3.消息驱动Bean(Message-Driven Bean):主要用于在分布式系统中处理异步消息。

4.工具类Bean(Utility Bean):主要包含各种工具方法,如日期处理、字符串处理等。

5.显示类Bean(GUI Bean):主要用于实现用户界面组件,如文本框、按钮等。


6.事件类Bean(Event Bean):主要用于封装事件信息,如鼠标点击事件、键盘事件等。


7.配置类Bean(Configuration Bean):主要用于存储应用程序的配置信息,如数据库连接信息、邮件服务器信息等。


8.验证类Bean(Validation Bean):主要用于验证表单输入数据的合法性,如身份证号码、电话号码等。


javabean的设计要求

JavaBean 是一种遵循特定规则的 Java 类,用于构建可重用的组件。它们通常用于表示业务对象,如用户、订单、产品等。


以下是 JavaBean 的设计要求:


必须提供一个默认的公共构造函数,不带参数,并且没有返回值。


所有属性必须是私有的,并且必须使用公共 getter 和 setter 方法来访问和修改属性的值。


属性名必须遵循标准的命名规范,例如:属性 foo 的 getter 方法应该命名为 getFoo(),setter 方法应该命名为 setFoo()。


应该实现 java.io.Serializable 接口,以允许 JavaBean 实例在网络上进行传输或存储到文件中。


如果需要,可以提供自定义的序列化和反序列化方法,以便对属性进行更精细的控制。


请注意,这些规则并非硬性要求,您可以根据需要选择性地遵循它们。但是,如果您的类符合这些规则,您将能够利用诸如 IDE 自动生成代码、JavaBean 之间的互操作性等工具和功能。


开发第一个javabean

下面是一个简单的 JavaBean 的示例代码:

public class Person implements Serializable {
  private String name;
  private int age;
  private String gender;
  public Person() {
    // 默认构造函数
  }
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public int getAge() {
    return age;
  }
  public void setAge(int age) {
    this.age = age;
  }
  public String getGender() {
    return gender;
  }
  public void setGender(String gender) {
    this.gender = gender;
  }
}

这个 JavaBean 表示一个人的基本信息,包括姓名、年龄和性别。它遵循了上面提到的 JavaBean 设计要求,具有默认构造函数、私有属性和公共 getter/setter 方法,并实现了 Serializable 接口。


使用这个 JavaBean 非常简单,您可以创建一个新的 Person 实例并访问其属性:

Person person = new Person();
person.setName("John");
person.setAge(30);
person.setGender("Male");
System.out.println(person.getName()); // 输出 "John"
System.out.println(person.getAge()); // 输出 "30"
System.out.println(person.getGender()); // 输出 "Male"

当然,这只是一个非常简单的示例,实际的 JavaBean 可以更复杂,具有更多的属性和方法。


1.2 javabean应用


如何在jsp中使用javabean

1.使用jsp的page指令的import属性导入javabean


可以使用JSP页面指令的import属性导入JavaBean类。通过在 JSP 页面中使用 import 指令,可以将 JavaBean 类添加到 JSP 页面的作用域中,以便在 JSP 页面中访问它们的属性和方法。

下面是一个示例:


<%@ page import="com.example.MyBean" %>
<html>
<head>
  <title>My JSP Page</title>
</head>
<body>
  <%-- 创建一个 MyBean 实例 --%>
  <%
    MyBean myBean = new MyBean();
    myBean.setName("John");
    myBean.setAge(30);
  %>
  <%-- 输出 MyBean 的属性值 --%>
  <p>Name: <%= myBean.getName() %></p>
  <p>Age: <%= myBean.getAge() %></p>
</body>
</html>

在上面的示例中,我们通过在 JSP 页面的顶部使用 import 指令,将 MyBean 类导入到 JSP 页面中。然后,在 JSP 页面中创建了一个 MyBean 实例,并设置了它的属性值。最后,通过在 JSP 页面中使用 <%= ... %> 语法,输出了该实例的属性值。

请注意,如果您使用的是 MVC 模式,通常不会直接在 JSP 页面中创建 JavaBean 实例。而是在 Controller 中创建 JavaBean 实例,并将其添加到请求的属性中,然后在 JSP 页面中使用 EL 表达式获取这些属性值。


2使用jsp提供的jsp:userbean动作标识完成操作

jsp:useBean动作标记用于实例化JavaBean对象,并将其绑定到指定的范围,如request、session或application。下面是一个简单的示例:


<jsp:useBean id="user" class="com.example.User" scope="session"/>

在此示例中,我们创建了一个名为“user”的JavaBean对象,并将其绑定到会话范围。如果当前会话中不存在名为“user”的对象,则该标记将自动调用类的默认构造函数来创建新对象。如果范围中已经存在具有相同名称的对象,则该对象将被重用。


可以使用jsp:setProperty和jsp:getProperty标记来访问JavaBean对象的属性值。例如,在上面的示例中,我们可以通过以下方式设置和获取User对象的属性值:

<jsp:setProperty name="user" property="name" value="John"/>
<jsp:getProperty name="user" property="name"/>

在此示例中,我们将User对象的“name”属性设置为“John”,然后使用jsp:getProperty标记获取该属性的值。


jsp:userbean的语法格式

<jsp:userbean> 是 JSP 标签库中的标签之一,用于在 JSP 页面中声明一个 JavaBean 对象以便在页面中访问该对象的属性和方法。其语法格式如下:

<jsp:useBean id="beanInstanceName" class="fully.qualified.class.name" scope="page|request|session|application" />

其中,参数含义如下:

  • id: 声明的 JavaBean 对象的实例名称。
  • class: 声明的 JavaBean 对象的全限定类名。
  • scope: 声明的 JavaBean 对象的作用域,可选值为 pagerequestsessionapplication

例如,以下代码在 JSP 页面中声明了一个名为 user 的 JavaBean 对象,并将其作用域设为 session

<jsp:useBean id="user" class="com.example.User" scope="session" />

此时,在 JSP 页面的其他部分就可以使用 EL 表达式或 JSP 脚本片段来访问 user 对象的属性和方法了。例如:

<!-- 使用 EL 表达式输出 user 对象的属性值 -->
${user.username}
<!-- 在 JSP 脚本片段中调用 user 对象的方法 -->
<%
    user.login();
%>

1.2.1 javabean与表单

JavaBean是一种特殊的Java类,它遵循了特定的编程规范,包括必须有一个无参构造函数、所有属性必须是私有的并提供公共的getter和setter方法等。JavaBean在开发Web应用中经常被用来表示持久化数据或业务对象。


表单则是Web应用中常见的一种用户交互界面,它通常包含一些输入控件如文本框、下拉框、单选按钮等,用于接收用户输入的数据。这些输入控件的数据通常需要被提交到服务器端进行处理和存储。


当JavaBean和表单结合使用时,JavaBean通常被用来表示表单数据的模型,并通过相应的Getter和Setter方法将表单数据与JavaBean属性进行映射。这样做的好处是可以简化表单数据的处理和验证过程,并提高代码可读性和可维护性。


具体而言,实现表单与JavaBean数据之间的映射可以采用以下三种方式:


手动映射:即手动编写代码将表单数据赋值给JavaBean属性,或从JavaBean属性中获取数据并展示到表单中。


使用第三方框架:如Apache Struts、Spring MVC等框架都提供了表单数据绑定的机制,可以自动将表单数据与JavaBean属性进行映射。


基于注解的映射:可以通过在JavaBean属性上添加特定的注解来实现表单数据与JavaBean属性之间的映射。常见的注解包括@ModelAttribute、@RequestParam等。


总之,通过JavaBean和表单的结合使用,我们可以使Web应用中的表单数据处理更加方便、高效和可维护。


1.2.2 设置属性:jsp:setProperty


jsp:setProperty 标签用于设置 JavaBean 对象的属性值。JavaBean 是一个符合一定规范的 Java 类,它的属性可以通过 get/set 方法来访问和修改。使用 jsp:setProperty 标签可以在 JSP 页面中方便地对 JavaBean 的属性进行赋值。

jsp:setProperty 标签有以下语法:

<jsp:setProperty name="beanName" property="propertyName" value="propertyValue"/>

其中,

  • name 属性指定了要设置属性的 JavaBean 的名称或 ID。
  • property 属性指定了要设置的 JavaBean 属性名。
  • value 属性指定了要设置的属性值。

也可以用 <jsp:getProperty> 标签来获取 JavaBean 的属性值。

例如,假设有如下的 JavaBean 类定义:

public class User {
    private String name;
    private int age;
    public void setName(String name) {
        this.name = name;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
}

在 JSP 页面中,可以这样使用 jsp:setProperty 标签来设置该 JavaBean 的属性值:

<jsp:useBean id="user" class="User"/>
<jsp:setProperty name="user" property="name" value="张三"/>
<jsp:setProperty name="user" property="age" value="20"/>
姓名:<jsp:getProperty name="user" property="name"/><br/>
年龄:<jsp:getProperty name="user" property="age"/><br/>

上面的 JSP 页面代码中,首先使用 jsp:useBean 标签创建了一个 ID 为 “user” 的 JavaBean 对象,然后使用 jsp:setProperty 标签分别设置了该对象的 name 和 age 属性。最后使用 jsp:getProperty 标签获取了该对象的属性值并在页面上输出。


1.2.3 取得属性:jsp:getProperty


jsp:getProperty 标签用于获取 JavaBean 对象的属性值。JavaBean 是一个符合一定规范的 Java 类,它的属性可以通过 get/set 方法来访问和修改。使用 jsp:getProperty 标签可以在 JSP 页面中方便地获取 JavaBean 的属性值并在页面上输出。


jsp:getProperty 标签有以下语法:

<jsp:getProperty name="beanName" property="propertyName"/>

其中,


name 属性指定了要获取属性值的 JavaBean 的名称或 ID。


property 属性指定了要获取的 JavaBean 属性名。


也可以用 <jsp:setProperty> 标签来设置 JavaBean 的属性值。


例如,假设有如下的 JavaBean 类定义:

public class User {
    private String name;
    private int age;
    public void setName(String name) {
        this.name = name;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
}

在 JSP 页面中,可以这样使用 jsp:getProperty 标签来获取该 JavaBean 的属性值:

<jsp:useBean id="user" class="User"/>
姓名:<jsp:getProperty name="user" property="name"/><br/>
年龄:<jsp:getProperty name="user" property="age"/><br/>

上面的 JSP 页面代码中,首先使用 jsp:useBean 标签创建了一个 ID 为 “user” 的 JavaBean 对象,然后使用 jsp:getProperty 标签分别获取了该对象的 name 和 age 属性值并在页面上输出。


1.3 dao设计模式


DAO(Data Access Object)是一种设计模式,它将数据访问逻辑从业务逻辑中分离出来,以达到解耦的目的。


DAO 模式通常包含以下组成部分:


DAO 接口:定义了数据访问对象的方法。


DAO 实现类:实现了 DAO 接口中定义的方法。


数据库访问类:负责和数据库进行交互,提供增删改查等基本操作。


使用 DAO 模式的好处在于,可以使业务逻辑和数据访问逻辑分别独立开来,降低了彼此之间的耦合。这样,当需要修改数据访问逻辑时,不会影响到业务逻辑;同样,当需要修改业务逻辑时,也不会影响到数据访问逻辑。


下面是一个简单的 DAO 示例:

// DAO 接口
public interface UserDao {
    // 增加用户
    void addUser(User user);
    // 删除用户
    void deleteUser(int userId);
    // 更新用户
    void updateUser(User user);
    // 获取用户列表
    List<User> getUserList();
}
// DAO 实现类
public class UserDaoImpl implements UserDao {
    // 数据库访问类
    private JdbcTemplate jdbcTemplate;
    public void setDataSource(DataSource dataSource) {
        this.jdbcTemplate = new JdbcTemplate(dataSource);
    }
    @Override
    public void addUser(User user) {
        String sql = "INSERT INTO user(name, age) VALUES (?, ?)";
        jdbcTemplate.update(sql, user.getName(), user.getAge());
    }
    @Override
    public void deleteUser(int userId) {
        String sql = "DELETE FROM user WHERE id = ?";
        jdbcTemplate.update(sql, userId);
    }
    @Override
    public void updateUser(User user) {
        String sql = "UPDATE user SET name = ?, age = ? WHERE id = ?";
        jdbcTemplate.update(sql, user.getName(), user.getAge(), user.getId());
    }
    @Override
    public List<User> getUserList() {
        String sql = "SELECT * FROM user";
        return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));
    }
}
// 数据库访问类
public class DataSource {
    // 省略数据库连接等相关的代码
    public Connection getConnection() {
        // 获取数据库连接
        // ...
        return connection;
    }
}

在上面的例子中,我们定义了一个 UserDao 接口,然后实现了它的方法。在 UserDaoImpl 类中,我们使用 JdbcTemplate 类来操作数据库。JdbcTemplate 是 Spring 框架提供的一个简化 JDBC 开发的工具类,它封装了 JDBC 操作中的一些常用方法,使得我们可以更方便地进行数据库操作。


同时,我们还需要一个 DataSource 类来获取数据库连接,这里只是给出了一个简化版的实现,实际情况下可能会更为复杂。

相关文章
|
5月前
|
存储 前端开发 JavaScript
基于JavaWeb实现停车场管理系统
基于JavaWeb实现停车场管理系统
|
5月前
|
前端开发 JavaScript Java
图书借阅管理平台|基于JavaWeb实现图书借阅系统
图书借阅管理平台|基于JavaWeb实现图书借阅系统
109 1
|
2月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
368 37
|
27天前
|
前端开发 Java 应用服务中间件
Javaweb学习
【10月更文挑战第1天】Javaweb学习
29 2
|
1月前
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
44 5
|
2月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
5月前
|
前端开发 Java 关系型数据库
JavaWeb开发简介
JavaWeb开发简介
53 0
|
2月前
|
安全 Java Android开发
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
JavaWeb解压缩漏洞之ZipSlip与Zip炸弹
92 2
|
6月前
|
Java
排课系统【JSP+Servlet+JavaBean】(Java课设)
排课系统【JSP+Servlet+JavaBean】(Java课设)
64 5
|
6月前
|
Java
仓库管理系统【JSP+Servlet+JavaBean】(Java课设)
仓库管理系统【JSP+Servlet+JavaBean】(Java课设)
171 1