18:JavaBean简介及其在表单处理与DAO设计模式中的应用-Java Web

目录

  • 18.1 JavaBean简介
  • 18.2 JavaBean与表单处理
  • 18.3 JavaBean的保存范围
  • 18.4 JavaBean在DAO设计模式中的应用
  • 18.5 JavaBean与表单处理的完整代码示例
  • 18.6 JavaBean在DAO设计模式中的应用示例

在Java Web开发领域,JavaBean作为数据封装和交互的核心组件,在构建健壮且易于维护的Web应用程序中扮演着重要角色。本文将深入浅出地介绍JavaBean的基础概念、基本使用方法,以及其在表单处理和DAO设计模式中的实践,并通过前后端代码示例阐述应用场景和关键区别。

18.1 JavaBean简介

JavaBean是一种遵循特定规范的Java类,主要用于表示可重用的组件,通常用于封装属性(变量)和操作这些属性的方法。一个标准的JavaBean需满足以下条件:

  1. 类必须是公共的(public)。
  2. 属性必须私有化(private),并通过公共的getter/setter方法访问。
  3. 必须有一个无参构造函数。

例如:

public class UserBean {private String username;private String password;public UserBean() {}public String getUsername() { return this.username; }public void setUsername(String username) { this.username = username; }public String getPassword() { return this.password; }public void setPassword(String password) { this.password = password; }
}

18.2 JavaBean与表单处理

在Web开发中,JavaBean常被用来与HTML表单进行数据交换。当用户提交表单时,Servlet或JSP页面可以通过request.getParameter()获取到表单字段的值,然后创建或更新对应的JavaBean实例,从而实现表单数据的绑定。

前端HTML表单示例:

<form action="submitForm" method="post"><input type="text" name="username" /><input type="password" name="password" /><button type="submit">Submit</button>
</form>

后端Servlet处理表单并绑定到JavaBean:

@WebServlet("/submitForm")
public class SubmitFormServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {UserBean user = new UserBean();user.setUsername(request.getParameter("username"));user.setPassword(request.getParameter("password"));// 之后可以将user对象持久化到数据库或其他操作}
}

18.3 JavaBean的保存范围

JavaBean在Java Web中的作用域通常与Servlet相关的四个内置对象相关联:

  • page:仅在当前请求的生命周期内有效,适合于页面内部临时数据存储。
  • request:在一次HTTP请求响应周期内有效,适用于跨多个Servlet/JSP页面共享数据。
  • session:在整个用户会话期间有效,适用于用户登录状态等需要跨多个请求维持的状态信息。
  • application:在整个Web应用程序生命周期内有效,适合于全局共享、不变的数据。

18.4 JavaBean在DAO设计模式中的应用

Data Access Object (DAO)设计模式中,JavaBean通常用于代表从数据库查询得到的数据模型,如实体类。DAO负责与数据库交互,执行CRUD操作,并返回JavaBean实例。

例如,一个简单的UserDAO可能如下所示:

public interface UserDao {List<UserBean> getAllUsers();UserBean getUserById(int id);void addUser(UserBean user);void updateUser(UserBean user);void deleteUser(int id);
}// 实现类略

在实际业务逻辑中,我们使用UserDao来操作数据库并返回或接收UserBean对象,这样实现了数据访问层与业务逻辑层的解耦。

18.5 JavaBean与表单处理的完整代码示例

  1. 创建一个简单的UserBean类:
public class UserBean {private String username;private String password;public UserBean() {}public String getUsername() {return this.username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return this.password;}public void setPassword(String password) {this.password = password;}
}
  1. 前端HTML表单:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>用户注册</title>
</head>
<body><form action="register" method="post"><label for="username">用户名:</label><input type="text" id="username" name="username" required><br><label for="password">密码:</label><input type="password" id="password" name="password" required><br><button type="submit">提交</button></form>
</body>
</html>
  1. 后端Servlet处理表单数据并绑定到JavaBean:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;@WebServlet("/register")
public class RegisterServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 创建JavaBean实例并绑定表单数据UserBean user = new UserBean();user.setUsername(request.getParameter("username"));user.setPassword(request.getParameter("password"));// 在实际项目中,此处应将user对象持久化到数据库等操作List<UserBean> users = new ArrayList<>();users.add(user);// 为了演示,简单地将用户信息转发到结果页面request.setAttribute("users", users);RequestDispatcher dispatcher = request.getRequestDispatcher("/result.jsp");dispatcher.forward(request, response);}
}
  1. 显示结果的JSP页面(result.jsp):
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>用户注册结果</title>
</head>
<body><h1>已成功接收用户信息:</h1><%List<UserBean> users = (List<UserBean>) request.getAttribute("users");for (UserBean user : users) {%><p>用户名: <%= user.getUsername() %></p><p>密码: <%= user.getPassword() %></p><%}%>
</body>
</html>

18.6 JavaBean在DAO设计模式中的应用示例

假设我们有一个数据库表users,包含id, username, 和 password字段。创建对应的实体类UserEntity和DAO接口及其实现类。

  1. UserEntity.java(实体类,继承自UserBean
public class UserEntity extends UserBean {private int id;public int getId() {return id;}public void setId(int id) {this.id = id;}
}
  1. UserDao.java(DAO接口)
import java.util.List;public interface UserDao {List<UserEntity> getAllUsers();UserEntity getUserById(int id);void addUser(UserEntity user);void updateUser(UserEntity user);void deleteUser(int id);
}
  1. UserDaoImpl.java(DAO实现类,这里仅提供框架,具体数据库操作需结合JDBC或ORM框架实现)
public class UserDaoImpl implements UserDao {@Overridepublic List<UserEntity> getAllUsers() {// 实现从数据库获取所有用户并转换为UserEntity列表的逻辑return null;}@Overridepublic UserEntity getUserById(int id) {// 实现根据ID从数据库获取用户并转换为UserEntity的逻辑return null;}@Overridepublic void addUser(UserEntity user) {// 实现将UserEntity对象保存到数据库的逻辑}@Overridepublic void updateUser(UserEntity user) {// 实现更新数据库中对应UserEntity记录的逻辑}@Overridepublic void deleteUser(int id) {// 实现删除数据库中指定ID用户的逻辑}
}

通过上述示例,我们可以看到JavaBean在Java Web开发中如何作为数据传输载体以及在DAO设计模式下扮演重要角色,帮助开发者更好地组织和管理应用程序的数据模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/671391.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

判断大端序还是小端序

1.取值比较法 ​ ​ #include <windows.h> #include <stdio.h>int main(int argc,char *argc[]) {Dword dwSmallnum Ox01020304;/定义一个四字节的数&#xff08;十六进制&#xff09;if(*(BYTE*)&dwSmallnum Ox04)/如果第一个字节为04{printf("Small …

druid配置wall导致无法批量sql

1、现象 2、原配置 spring:autoconfigure:exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfiguredatasource:druid:stat-view-servlet:enabled: trueloginUsername: ***loginPassword: ***allow:web-stat-filter:enabled: truefilter:wall:conf…

MATLAB知识点:矩阵元素的引用

​讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自第3章 3.3.2 矩阵元素的引用 在讲解矩阵元素的引用之…

【Unity优化(一)】音频优化

整理资教程&#xff1a;https://learn.u3d.cn/tutorial/unity-optimization-metaverse 1.音频优化 音频一般不会成为性能瓶颈&#xff0c;是为了节省内存和优化包体大小。 1.0 文件格式和压缩格式 原始音频资源尽量采用WAV格式。 移动平台音频尽量采用Vorbis压缩格式&#x…

net start mysql服务名无效|发生系统错误 解决办法

未输入正确的mysql服务名 解决办法&#xff1a; 使用net start命令查看可用的服务名&#xff0c;找到mysql的服务名 未使用管理员身份运行命令提示符 解决方法&#xff1a; 使用管理员身份运行命令提示符

背包2讲(2.6)

问题1&#xff1a;装箱问题 题解&#xff1a;这题其实本质上也是01背包&#xff0c;只不过算是变式&#xff0c;要求剩余空间最小值&#xff0c;我们可以转换成最大可以装多少的问题&#xff0c;然后就可以很快的写出题的答案 #include<bits/stdc.h> using namespace st…

Positive Technologies 帮助修复了流行的 Yealink 视频会议系统中的一个危险漏洞

Yealink 感谢我们的专家发现了视频会议系统 Yealink Meeting Server 中的一个关键漏洞 该公司在全球 IP 电话市场排名第一&#xff0c;是五大线上会议解决方案供应商之一&#xff0c;其产品已在 140 多个国家和地区使用。 漏洞 YVD-2023-1257833 (BDU:2024-00482) 属于操作系…

打包 iOS 的 IPA 文件

目录 摘要 引言 准备 选择证书类型 创建应用程序 设置应用程序标识和证书 配置构建设置 构建应用程序 导出IPA 签名和导出 代码案例演示 完成 总结 参考资料 摘要 本篇博客将为您介绍如何打包iOS的IPA文件。从APP提交、创建应用程序、设置应用程序标识和证书、配…

ChatGPT高效提问—基础知识(AIGC)

ChatGPT高效提问—基础知识 为了更好地学习AI和prompt相关知识&#xff0c;有必要了解AI领域的几个专业概念。 1.1 初识AIGC AIGC&#xff08;artificial intelligence generated content&#xff09;即人工智能生成的内容&#xff0c;可以理解为利用人工智能技术自动生成文…

centos安装harbor

安装docker yum install epel-release yum-utils#docker官网源 yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repoyum install docker-ce -y 安装docker-compose curl -SL https://github.com/docker/compose/releases/download/v2…

【自然语言处理-工具篇】spaCy<1>--介绍及安装指南

目录 前言 安装指南 pip conda spaCy升级 总结 前言 spaCy是一个开源的自然语言处理库,用于处理和分析文本数据。它提供了许多功能,包括分词、词性标注

2023-总结

文章目录 工作贡献集成登录角色今年的工作感想 总结感想题外话 工作 今年也是换了公司。 在上个公司首先就是学到了技术&#xff0c;拓展了知识层面。至于离开&#xff0c;也是简单得想多去走走试试。感谢公司和同事的栽培和包容。 来到现在任职的公司同事也是非常友好。刚来…

EMC防护

EMI是指电子设备在自身工作过程中产生的电磁波&#xff0c;对外发射并对设备其它部分或外部其它设备造成干扰。EMI测试项目包括电源线传导骚扰&#xff08;CE&#xff09;测试、信号、控制线传导骚扰&#xff08;CE&#xff09;测试、辐射骚扰&#xff08;RE&#xff09;测试、…

记录关于node接收并解析前端上传excel文件formData踩的坑

1.vue2使用插件formidable实现接收文件&#xff0c;首先接口不可以使用任何中间件&#xff0c;否则form.parse()方法不执行。 const express require(express) const multipart require(connect-multiparty); const testController require(../controller/testController)/…

Android 横屏应用开发如何隐藏左边黑色边缘

最近公司开发一个横屏应用的项目&#xff0c;Phone和Pad一套代码编译&#xff0c;需要考虑到全局横屏状态下的应用&#xff0c;起初竖屏的时候代码是没问题的&#xff0c;可是到切换横屏遇到了黑边问题&#xff0c;先来看看竖屏的时候怎么写的 setContentView之前设置 getWind…

力扣53. 最大子数组和(滑动窗口,动态规划)

Problem: 53. 最大子数组和 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 思路1:滑动窗口 1.为求出最大连续的子数组和,我们逻辑上假设有一个窗口在原数组上滑动, 欲求出最大连续,则需要保证窗口中的所有元素和最起码大于0; 2.即当当前窗口中的元素值的和小于0…

[自然语言处理|NLP] 文本分类与情感分析,数据预处理流程,包括了同义词替换和拼写纠正,以及使用NLTK库和TextBlob库进行标记化和情感分析(附代码)

[自然语言处理|NLP] 文本分类与情感分析,数据预处理流程,包括了同义词替换和拼写纠正,以及使用NLTK库和TextBlob库进行标记化和情感分析(附代码)。 自然语言处理(Natural Language Processing,简称NLP)是人工智能领域的一个重要分支,涉及了处理和理解人类语言的技术…

带你实现用自己域名打开Tomcat

文章目录 Tomcat1.1、Tomcat 下载1.2、Tomcat 文件图解1.3、 启动或关闭 Tomcat1.3.1、 启动1.3.2、 关闭程序2.1、 修改端口号2.2、修改主机名称Tomcat 1.1、Tomcat 下载 首先去Tomcat 官网下载找到我们需要下载的版本 1.2、To

Linux 服务器安装maven

1、压缩文件下载Maven – Download Apache Maven 2、解压 tar -xvf apache-maven-3.8.4-bin.tar.gz 3、配置环境变量 在/etc/profile中保存Maven的环境变量&#xff1a; export M2_HOME/opt/server/apache-maven-3.5.4 export PATH$PATH:$M2_HOME/bin 4、通过source生效文件 so…

第4节、电机多段转动【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】&#xff0c;查看本系列全部文章 摘要&#xff1a;本节介绍用控制步进电机三个主要参数角度、速度、方向&#xff0c;实现简单的步进电机多段控制 一、目标功能 输入多个目标角度&#xff0c;以及每个角度对应的速度&#xff0c;实现步进电机的多段多速…