博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaBean学习--练习示例
阅读量:4932 次
发布时间:2019-06-11

本文共 3011 字,大约阅读时间需要 10 分钟。

初识Javabean,没感觉这鸟东西有什么好用的,一定是我太笨了

自己用jsp测试了下,这里用application作用域做个示例

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%>
Insert title here

Application数据设置完毕!

本来如果不用javabean的话,需要自己设置student类来new,但是javabean可以直接实例化对象,对应的scope里面则是jsp的作用域,然后把src的包给定,可以直接set值了

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%>
Insert title here

Application中取值

姓名:

年龄:

另外,因为application范围是作用于整个服务器的,所以在不同浏览器里面均可以访问,这个时候用get来获取已经设置好了的值

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%>
Insert title here<% session.removeAttribute("student");%>

javabean已删除!

最后删除的时候,只需要用相应的作用域调用removeAttribute方法即可,然后你可以测试下相应作用域已经不能访问了

简单的说下我的理解吧,重用代码,减少重复代码,然后就不太清楚了,去网上搜了下,看知乎里大牛讲的挺详细的,一起转了过来

Java语言欠缺属性、事件、多重继承功能。所以,如果要在Java程序中实现一些面向对象编程的常见需求,只能手写大量胶水代码。Java Bean正是编写这套胶水代码的惯用模式或约定。这些约定包括getXxx、setXxx、isXxx、addXxxListener、XxxEvent等。遵守上述约定的类可以用于若干工具或库。举个例子,假如有人要用Java实现一个单向链表类,可能会这样写:// 编译成 java-int-list_1.0.jarpublic final class JavaIntList {  static class Node {    public Node next;    public int value;  }  public Node head;  public int size;}上述实现为了能够快速获取链表的大小,把链表大小缓存在size变量中。用法如下:JavaIntList myList = new JavaIntList();System.out.println(myList.size);JavaIntList的作者很满意,于是开源了java-int-list库的1.0版。文件名是java-int-list_1.0.jar。发布后,吸引了许多用户来使用java-int-list_1.0.jar。有一天,作者决定要节省内存,不要缓存size变量了,把代码改成这样:// 编译成 java-int-list_2.0.jarpublic final class JavaIntList {  static final class Node {    public Node next;    public int value;  }  public Node head;  public int getSize() {    Node n = head;    int i = 0;    while (n != null) {      n = n.next;      i++;    }    return i;  }}然后发布了2.0版:java-int-list_2.0.jar。发布后,原有java-int-list_1.0.jar的用户纷纷升级版本到2.0。这些用户一升级,就发现自己的程序全部坏掉了,说是找不到什么size变量。于是这些用户就把作者暴打一顿,再也不敢用java-int-list库了。这个故事告诉我们,如果不想被暴打致死,你就必须保持向后兼容性。太阳公司在设计Java语言时,也懂得这个道理。所以Java标准库中,绝对不会出现public int size这样的代码,而一定会一开始就写成:private int size;public int getSize() { return size; }让用户一开始就使用getSize,以便有朝一日修改getSize实现时,不破坏向后兼容性。这种public int getSize() { return size; }的惯用手法,就是Java Bean。现在是2014年,C#、Scala等比Java新的面向对象语言自身就提供了语言特性来实现这些常用需求,所以根本不需要Java Bean这样繁琐的约定。比如,假如有个Scala版的ScalaIntList:// 编译成 scala-int-list_1.0.jarobject ScalaIntList {  final case class Node(next: Node, value: Int)}final class ScalaIntList {  var head: ScalaIntList.Node = null  var size: Int = 0}用户这样用:val myList = new ScalaIntListprintln(myList.size)有一天你心血来潮改成这样:// 编译成 scala-int-list_2.0.jarobject ScalaIntList {  final case class Node(next: Node, value: Int)}final class ScalaIntList {  var head: ScalaIntList.Node = null  final def size: Int = {    var n = head    var i = 0    while (n != null) {      n = n.next      i++    }    i  }}用户还是照样能用,根本不破坏向后兼容性。所以Scala程序只要不考虑和Java交互,一般就不需要类似Java Bean这样的约定。顺便说一句,向后兼容性分为源代码级和二进制级,Scala的var或val改为final def的话,无论源代码级的向后兼容性,还是二进制级的向后兼容性,都不遭受破坏。但C#的字段改为属性的话,虽然不破坏源代码级的向后兼容性,但是会破坏二进制级的向后兼容性。这是C#的设计缺陷,导致微软的编码规范不得不禁止使用公有字段。
说到底也就是那么回事吧

转载于:https://www.cnblogs.com/yefengCrazy/p/5636668.html

你可能感兴趣的文章
浮点数内存如何存储的
查看>>
JsonCpp 的使用
查看>>
问题账户需求分析
查看>>
hp 服务器通过串口重定向功能的使用
查看>>
此博客不再发表对自己私事的看法
查看>>
导致Asp.Net站点重启的10个原因
查看>>
【PMP】Head First PMP 学习笔记 第一章 引言
查看>>
抓住云机遇编排工作 搞定复杂IT工作流
查看>>
MYSQL的longtext字段能放多少数据?
查看>>
MTK 平台上如何给 camera 添加一种 preview size
查看>>
云计算最大难处
查看>>
mysql定时备份自动上传
查看>>
17岁时少年决定把海洋洗干净,现在21岁的他做到了
查看>>
《写给大忙人看的java se 8》笔记
查看>>
倒计时:计算时间差
查看>>
Linux/windows P2V VMWare ESXi
查看>>
Windows XP倒计时到底意味着什么?
查看>>
运维工程师在干什么学些什么?【致菜鸟】
查看>>
Linux中iptables详解
查看>>
java中回调函数以及关于包装类的Demo
查看>>