javabean的属性可读写_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`

  • 标签用于在指定的域范围内查找指定名称的JavaBean对象
  • 存在则直接返回该JavaBean对象的引用
  • 不存在则实例化一个新的JavaBean对象并将它以指定的名称存储到指定的域范围中
  • 语法:
  • 如果JSP不支持这个行为,我们要使用Person类是这样使用的
 
  • 效果如下
f167a446bb1c931ade0114aa182acbf0.png
  • 我们使用就显得非常简洁,不用导包,不用new出对象
 
  • 也可以实现同样的效果:
0182a4eccb599ad29dffa9a808dc2ce1.png
  • 有人可能会想,凭什么写一个``这样的代码就可以创建出一个对象出来
  • 现在我把JavaBean中无参的构造函数改成有参的,我们看看会出现什么情况,出现异常了!
 public Person(int age) { this.age = age; }
d2e672314414e7d9601579c77df774bb.png
  • 内部原理是这样子的:
d9e2ecd2bb9a675bb69ee282e5ff6198.png
  • 通过上面的代码我们也知道了为什么要有一个无参的构造函数内部在new 对象的时候是没有传递参数进去的!

`jsp:setProperty`

  • 语法:
  • 在语法上可分为4种模式
  • 自动匹配
  • 指定属性
  • 指定参数【很少用】
  • 指定内容【很少用】
  • 我们没有学习到时,我们获取表单的信息,然后导入到javaBean对象中是这样的一种情况
  • 这是表单的页面代码
用户名: 年龄:
  • 这是处理表单提交过来数据的jsp的代码
  • 这是可以完成的,但是相对来说,比较麻烦!
1a38880f826722d508421f972a5fc20d.png
  • 我们来使用了来看看:
  • 也可以完成,并且代码更少,功能更强大
4a09a8f4f802a198b9efd2e372760a12.png
  • 代码更少可以直观看出来,为什么我说它功能更加强大呢?表单提交过来的数据都是字符串,在我们没有用前,我们存储设置int类型或其他非字符串类型的数据是需要强转的!但是
  • 不需要我们强转,它内部自动帮我们转换了
  • 我们再来使用一下自动匹配来感受它的强大之处吧
  • 我们再来看一下效果:
652013b961d37e071c5e63ba292ed217.png
  • 看到这里,有人可能会觉得好神奇:只要设置property的值就可以将表单传递过来的数据封装到JavaBean对象中了!这究竟是这样做到的???
  • 细心的朋友会发现,JavaBean的属性名称和表单的name属性设置的名称是一模一样的
private String username ;private int age;用户名:年龄:
  • 如果我设置不一样还能不能用?我们试试:表单name属性的username改成是user
用户名:
  • 我们再来看看还能不能把表单的数据完整地封装JavaBean对象中
b1323a005e965207ff165da039e69cea.png
  • 我们可以发现:要想能够把表单带过来的数据成功封装到JavaBean对象上,名字要一致!也就是说:JavaBean属性名要和表单的name的名称一致
  • 至于原理,它是通过反射来做的,调用了内省的方法!,我们看编译后的JSP就明白了。
16e9722370311654d4481f69e05d0b6f.png

jsp:getProperty

  • 语法:
  • 该jsp行为十分简单,我们来使用一下就知道了。
输出--%>
  • 效果:
2de37e86247ff83b3ae50f82259b1259.png
  • 原理如下
6eef55ac8632b64e31485f7d6c594466.png

原文链接:https://dwz.cn/kfJIwxxt

作者:Java3y

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值