JSP第三篇【JavaBean的介绍、JSP的行为--JavaBean】

什么是javaBean

  • JavaBean就是一个普通的java类,也称之为简单java对象–POJO(Plain Ordinary Java Object),是Java程序设计中一种设计模式,是一种基于 Java 平台的软件组件思想
  • JavaBean遵循着特定的写法,通常有以下的规则:

    • 有无参的构造函数
    • 成员属性私有化
    • 封装的属性如果需要被外所操作,必须编写public类型的setter、getter方法
  • 上面的文字看起来好像很高大上,javaBean其实非常简单,下面的代码就是按照特定写法、规则编写的一个JavaBean对象



    public class Person {
        private String username ;
        private int age;

        public Person() {

        }


        public String getUsername() {
            return username;
        }

        public void setUsername(String username) {
            this.username = username;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }
    }

为什么需要使用Javabean

  • 使用javaBean的好处就是:封装,重用,可读!
  • 下面引用知乎一段回答:

JaveBean你可以理解为一辆货车,在你的java端和web页面进行数据传递的载体,你当然可以每个变量单独传递,或者使用集合传递,但是javabean可以使你的数据更有可读性,方便开发时明确变量的意义,也使其他阅读你代码的人能直接你的意图

如果把bean类与数据库联合使用,一张表使用bean类,可以使你的代码更加简洁高效,易于理解,现在大多数框架都会使用这种机制。


JSP行为–JavaBean

  • JSP技术提供了三个关于JavaBean组件的动作元素,即JSP行为(标签),它们分别为:
    • 【在JSP页面中查找javaBean对象或者实例化javaBean对象】
    • 【设置javaBean的属性】
    • 【获取javaBean的属性】

<jsp:useBean>

  • <jsp:useBean>标签用于在指定的域范围内查找指定名称的JavaBean对象:

    • 存在则直接返回该JavaBean对象的引用。
    • 不存在则实例化一个新的JavaBean对象并将它以指定的名称存储到指定的域范围中。
  • 语法:


    <jsp:useBean id="实例化对象的名称" class="类的全名" scope="保存范围"/>

  • 如果JSP不支持<jsp:useBean>这个行为,我们要使用Person类是这样使用的

    <%--这里需要导入Person类--%>
    <%@ page import="domain.Person" %>

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title></title>
    </head>
    <body>


    <%
        //new出对象
        Person person = new Person();

        person.setName("zhongfucheng");
        System.out.println(person.getName());
    %>

    </body>
    </html>

  • 效果如下

  • 我们使用<jsp:useBean>就显得非常简洁,不用导包,不用new出对象

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title></title>
    </head>
    <body>

    <jsp:useBean id="person" class="domain.Person" scope="page"/>
    <%
        person.setName("zhongfucheng");
        System.out.println(person.getName());
    %>
    </body>
    </html>

  • 也可以实现同样的效果:

  • 有人可能会想,凭什么写一个<jsp:useBean>这样的代码就可以创建出一个对象出来。
  • 现在我把JavaBean中无参的构造函数改成有参的,我们看看会出现什么情况,出现异常了!

     public Person(int age) {
            this.age = age;
        }

  • <jsp:useBean id="person" class="domain.Person" scope="page"/>内部原理是这样子的:

  • 通过上面的代码我们也知道了为什么要有一个无参的构造函数!内部在new 对象的时候是没有传递参数进去的!

<jsp:setProperty>

  • 语法:

    <jsp:setProerty name="对象名称" property="属性名" param="参数名" value="值">
  • 在语法上可分为4种模式

    • 自动匹配
    • 指定属性
    • 指定参数【很少用】
    • 指定内容【很少用】
  • 当我们没有学习到<jsp:setProperty>时,我们获取表单的信息,然后导入到javaBean对象中是这样的一种情况:

  • 这是表单的页面代码:


    <form action="/zhongfucheng/1.jsp" method="post">
        用户名:<input type="text" name="username">
        年龄:<input type="text " name="age">
        <input type="submit" value="提交">
    </form>

  • 这是处理表单提交过来数据的jsp的代码


    <jsp:useBean id="person" class="domain.Person" scope="page"/>
    <%
        int age = Integer.parseInt(request.getParameter("age"));

        person.setAge(age);

        System.out.println(person.getAge());

    %>

  • 这是可以完成的,但是相对来说,比较麻烦!

  • 我们来使用了来看看:

    <jsp:useBean id="person" class="domain.Person" scope="page"/>

    <%--指定属性名称为age--%>
    <jsp:setProperty name="person" property="age"/>
    <%
        System.out.println(person.getAge());
    %>
  • 也可以完成,并且代码更少,功能更强大!

  • 代码更少可以直观看出来,为什么我说它功能更加强大呢?表单提交过来的数据都是字符串,在我们没有用前,我们存储设置int类型或其他非字符串类型的数据是需要强转的!但是不需要我们强转,它内部自动帮我们转换了!
  • 我们再来使用一下自动匹配来感受它的强大之处吧

    <jsp:useBean id="person" class="domain.Person" scope="page"/>

    <%--property的值设置为*就代表自动匹配--%>
    <jsp:setProperty name="person" property="*"/>
    <%
        System.out.println(person.getAge());
        System.out.println(person.getName());
    %>
  • 我们再来看一下效果:

  • 看到这里,有人可能会觉得好神奇:只要设置property的值就可以将表单传递过来的数据封装到JavaBean对象中了!这究竟是这样做到的???
  • 细心的朋友会发现,JavaBean的属性名称和表单的name属性设置的名称是一模一样的!

        private String username ;
        private int age;

        用户名:<input type="text" name="username">
        年龄:<input type="text " name="age">
  • 如果我设置不一样还能不能用?我们试试:表单name属性的username改成是user

    用户名:<input type="text" name="user">
  • 我们再来看看还能不能把表单的数据完整地封装JavaBean对象中

  • 我们可以发现:要想能够把表单带过来的数据成功封装到JavaBean对象上,名字要一致!也就是说:JavaBean属性名要和表单的name的名称一致
  • 至于原理,它是通过反射来做的,调用了内省的方法!,我们看编译后的JSP就明白了。


<jsp:getProperty>

  • 语法:

  • 该jsp行为十分简单,我们来使用一下就知道了。


    <%--使用<jsp:getProperty>输出--%>
    <jsp:getProperty name="person" property="username"/>
    <jsp:getProperty name="person" property="age"/>
  • 效果:

  • 原理如下


<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
在JSP中使用JAVABEAN 假设JSP页面获取用户数据、与数据库交互,最后向用户显示结果。此JSP页面包括应用程序的业务和表示逻辑。业务逻辑包括与数据库交互的代码,而表示逻辑包括将结果格式化进行显示的代码。设计员可能不了解Java的任何知识,但由于页面上会嵌入Java代码,因而在开发表示逻辑时会遇到困难。同样,编写Java代码的程序员可能不熟悉在页面上创建用户界面的所有格式标记。JSP可以使用JavaBean将开发Web应用程序涉及的Web设计员和程序员的角色分开。 阅读详情

相关推荐

C#实战:如何用Bartender 10.1实现动态打印与批量打印(附完整源码)

本文深入探讨了如何在C#项目中高效集成Bartender 10.1,实现企业级的动态打印与批量打印功能。文章提供了从环境配置、COM接口精讲、高可用打印服务类封装,到批量打印性能优化及生产环境部署的全套实战方案与源码,帮助开发者构建健壮、可维护的打印解决方案。

weixin_29290963的博客 435

jsp学习笔记(四)

[code="java"]package DAO; import java.sql.*; import java.util.ArrayList; public class DBOperation { private Connection conn = null; private Statement st = null; pri...

哇哇~~~ 159

安装oracle 19c 报错INS-06006 INS-44000 INS-32070

数据库版本oracle 19c 操作系统版本:centos7.8 安装oracle19c RAC 配置互信的时候setup显示成功,点test的时候报错INS-44000,继续点yes 报错INS-32070,继续往下点 报错INS-06006 处理过程 1.手动ssh node date 全部成功说明互信时没有问题的 2.查mos 文档ID 2555697.1 如果OpenSSH升级到8.x会有这个问题 MOS上的解决办法 #ssh -V OpenSSH_8.0p1, OpenSSL 1.0.2r 2

cqszpx的博客 1527

JavaWeb开发 JSP技术详解

仅为个人学习使用。

,,,,,,, 6609

【STM32】基于STM32F103C8T6实现步进电机精准调速控制

本文详细介绍了如何使用STM32F103C8T6微控制器实现步进电机的精准调速控制。通过利用其内置定时器生成PWM脉冲,替代低效的延时方法,并结合TB6600驱动器进行硬件连接,可实现平滑、高效的电机速度控制。文章提供了基于HAL库的代码实战,包括速度与方向设置函数,并探讨了加减速规划等高级应用,帮助开发者彻底掌握步进电机驱动技术。

weixin_29169899的博客 484

告别环境配置噩梦:VSCode + MinGW 下 OpenGL (glad/glm/glfw) 一站式配置指南(含常见错误排查)

本文提供了一份详细的VSCode与MinGW下OpenGL开发环境配置指南,涵盖glad、glm和glfw三大核心库的安装与调试。通过逐步指导解决常见错误,帮助开发者快速搭建高效的OpenGL开发环境,特别适合初学者避免环境配置中的常见陷阱。

weixin_42557803的博客 488

用jsp+servlet+jdbc实现登录功能(体现mvc设计思想)

一,数据库 mysql数据库 创建表 CREATE TABLE `user` ( `id` int(20) NOT NULL AUTO_INCREMENT, `name` varchar(40) DEFAULT NULL, `psw` varchar(40) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_

c_hao的博客 1290

android studio 2022打开了v1 签名但是生成的apk没有v1签名问题

我使用了Android Studio Flamingo | 2022.2.1 Patch 2版本的IDE编译了一个apk,但是apksigner查看apk的签名信息时,发现只有v2签名,没有v1签名。试着改小一下minSdkVersion 为23重新编译apk,再检测一下签名版本v1居然打开了!参考网上搜索到的方法,手动在build.gradle里面添加。但是编译出来的apk还是只有v2的签名。里面提到了v1签名还和。

hedalei的博客 465

增删改查的核心

增删改查的核心 本人因为经常要写增删改查,所以把它的核心发下帖,供大家参考: 这是一个工具包(简化代码): package com.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultS

lffxsx的博客 406

Hermes Agent 常见报错排查与问题解决

Hermes Agent 常见报错排查指南 摘要 本文全面梳理了 Hermes Agent 使用过程中的10类常见报错,按阶段划分为安装期、运行期认证类、后端基础设施类和长任务执行类四大类,并提供了系统化的排查流程: 安装期问题:包括命令未找到和Python版本不兼容,主要检查PATH环境和Python版本是否符合要求 认证类问题:涉及API Key认证失败和速率限制,需要验证密钥配置和配额状态 基础设施问题:包含Docker报错、MCP连接失败和OAuth令牌过期,需检查相关服务状态 执行类问题:主要是上

简简单单Onlinezuozuo 1343

CMCC-IPC-A410串口刷机救砖教程

《CMCC-IPC-A410摄像头串口刷机指南》摘要 本指南针对2018年前老款CMCC-IPC-A410摄像头变砖/升级失败的情况,提供串口刷机方案。需准备CH340G串口模块、杜邦线、海康V5.5.82固件等工具。操作包含硬件连接(TX/RX交叉接线)、115200波特率终端配置、CTRL+U进入刷机模式,通过UPF格式化、tftp传输固件、update写入等步骤完成修复。刷机后设备恢复未激活状态,需重置密码,原定制功能可能失效。整个过程需稳定供电,耗时约15-20分钟,注意此操作将使原厂保修失效。(1

海康威视技术支持 1842

一个封装了数据库大部分操作的JavaBean

package beans; import java.sql.*; import java.sql.ResultSet; import java.sql.PreparedStatement; import java.sql.Connection; import java.sql.DriverManager;  /**   * 该Bean是一个数据库操作Bean   * 内部封装了对数据库的

遗失de记忆 1305

《深入掌握MongoDB数据库》 - 专栏介绍和目录

本专栏系统讲解MongoDB从基础到高级的全栈知识,涵盖安装配置、核心操作、性能优化、安全运维等核心内容。基础部分包括CRUD操作、数据类型、查询语法等入门知识;进阶部分深入索引优化、聚合查询、事务处理等高级特性;核心原理解析存储引擎与数据格式;安全运维则聚焦访问控制、认证机制、审计日志等企业级实践。通过实战案例与最佳实践,帮助开发者全面掌握MongoDB在不同场景下的应用,适合各层次技术人员系统学习。

数据知道的博客 2992

JSP第三篇【JavaBean的介绍、JSP的行为--JavaBean】(修订版)

前言只有光头才能变强。文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y什么是javaBeanpub...

3y 381

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Linux软链接与硬链接:inode原理、rm陷阱与发布切换实战

在 Linux 文件系统中,文件名只是目录项到 inode 的映射,inode 保存元数据与链接计数,数据块承载真实内容。硬链接让同一 inode 拥有多个名字,适合磁盘去重、备份快照与容器镜像分层;软链接则是内容为路径字符串的独立文件,支持跨分区、指向目录,常用于版本发布切换与配置入口。理解链接计数与路径解析,能解释硬链接不能跨分区、软链接悬空、删除大文件后 df 不释放等常见问题。工程实践中,ln -sfn、rm 结尾斜杠、rsync --link-dest、find -xtype l 等细节,直接决定

weixin_34302561的博客 406

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

javabean的属性可读写_JSP第三篇「JavaBean的介绍、JSP的行为--JavaBean」(修订版)

什么是javaBeanJavaBean就是一个普通的java类,也称之为简单java对象--POJO(Plain Ordinary Java Object),是Java程序设计中一种设计模式,是一种基于 Java 平台的软件组件思想JavaBean遵循着特定的写法,通常有以下的规则:有无参的构造函数成员属性私有化封装的属性如果需要被外所操作,必须编写public类型的setter、getter方法...

weixin_35726315的博客 257

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

jsp中为什么用不了Java里的方法_JSP第三篇「JavaBean的介绍、JSP的行为--JavaBean」(修订版)...

什么是javaBeanJavaBean就是一个普通的java类,也称之为简单java对象--POJO(Plain Ordinary Java Object),是Java程序设计中一种设计模式,是一种基于 Java 平台的软件组件思想JavaBean遵循着特定的写法,通常有以下的规则:有无参的构造函数成员属性私有化封装的属性如果需要被外所操作,必须编写public类型的setter、getter方法...

weixin_39784263的博客 330

javabean反射改字段内容_JSP第三篇「JavaBean的介绍、JSP的行为--JavaBean」(修订版)...

什么是javaBeanJavaBean就是一个普通的java类,也称之为简单java对象--POJO(Plain Ordinary Java Object),是Java程序设计中一种设计模式,是一种基于 Java 平台的软件组件思想JavaBean遵循着特定的写法,通常有以下的规则:有无参的构造函数成员属性私有化封装的属性如果需要被外所操作,必须编写public类型的setter、getter方法...

weixin_36162883的博客 96

Jsp+JavaBean模式,Jsp+Servlet模式,MVC模式介绍

Jsp+JavaBean模式,Jsp+Servlet模式,MVC模式介绍 鉴于最近一些零基础的朋友要做项目,我梳理一下web项目的运行流程,主要是说一下理解思路,有什么不足或不对的,多多理解。 在N久前,传统的项目有用jsp+JavaBeans开发的,有用JSP+Servlet开发的,还有的是符合mvc的JSP+Servlet+JavaBeans开发的。这些说法都没有错。 前面两个年代久远,不说了...

空空说技术的博客 1万+
上一篇: JSP第二篇【内置对象的介绍、4种属性范围、应用场景】
下一篇: JSP第四篇【EL表达式介绍、获取各类数据、11个内置对象、执行运算、回显数据、自定义函数、fn方法库】...
Java3y
Java3y 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 1万+粉丝 509原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值