JavaBean入门笔记
看了JavaBean感觉很困惑,不知道什么意思,直到查看了资料发现自己理解错误,把JavaBean误当成一种技术,其实Java Bean只是符合一定规范的Java类,便于封装重用。符合这种规范的Java类可以被其他程序员或框架使用。这些规范包括:
1、所有的属性都必须为private 2、提供默认构造方法 3、提供getter和setter 4、实现Serializable接口
我们下面就来看一个JavaBean的例子。
一般网页登陆都需要用户名和密码,我们可以把用户名和密码存放在JavaBean中。
代码如下:
- package mytrain.formbean;
- public class userBean {
- private String name;
- private String password;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- }
有了JavaBean以后,我们怎么在JSP页面中访问它呢?
方法有2种: 直接访问和JSP标签访问
(不过我们推荐通过标签来访问)
1)直接访问
a) 声明bean
在页面顶部导入JavaBean类: <%@ page import="mytrain.formbean.userBean" %>
在JSP段实例化类: <% userBean user = new userBean(); %>
b) 访问bean
<% user.setXXX(aa); %>
<%=user.getXXX();%>
2)标签访问
(推荐)
a) 声明bean
使用userBean标签:
<jsp:useBean id="user" class="mytrain.formbean.userBean"/>
b) 访问bean
通过setProperty标签来设置:
<jsp:setProperty name="user" property="name" param="mUserName"/>
通过getProperty标签来取得:
<jsp:getProperty name="user" property="name"/>
完整的代码:
标签访问法:
- Html代码
- <%@ page language="java" pageEncoding="GBK"%>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <title>表单Bean例子2</title>
- <link rel="StyleSheet" href="../../CSS/style.css" type="text/css" />
- </head>
- <body>
- <form action="" method="post">
- <table>
- <tr>
- <td>
- <span class="blue10">用户名:</span>
- </td>
- <td>
- <input type="text" name="mUserName" size="20"><br>
- </td>
- </tr>
- <tr>
- <td>
- <span class="blue10">密 码:</span>
- </td>
- <td>
- <input type="password" name="mPassword" size="20"><br>
- </td>
- </tr>
- <tr>
- <td>
- </td>
- <td>
-
- <input type=submit value="submit"/>
- </td>
- </tr>
- </table>
- </form>
- <jsp:useBean id="user" class="mytrain.formbean.userBean"/>
- <jsp:setProperty name="user" property="name" param="mUserName"/>
- <jsp:setProperty name="user" property="password" param="mPassword"/>
- <hr/>
- 用户名:<jsp:getProperty name="user" property="name"/>
- <br>
- 密 码:<jsp:getProperty name="user" property="password"/>
- </body>
- </html>
直接访问法:
- <%@ page language="java" pageEncoding="GBK"%>
- <%@ page import="mytrain.formbean.userBean" %>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <title>表单Bean例子3</title>
- <link rel="StyleSheet" href="../../CSS/style.css" type="text/css" />
- </head>
- <body>
- <form action="" method="post">
- <table>
- <tr>
- <td>
- <span class="blue10">用户名:</span>
- </td>
- <td>
- <input type="text" name="mUserName" size="20"><br>
- </td>
- </tr>
- <tr>
- <td>
- <span class="blue10">密 码:</span>
- </td>
- <td>
- <input type="password" name="mPassword" size="20"><br>
- </td>
- </tr>
- <tr>
- <td>
- </td>
- <td>
-
- <input type=submit value="submit"/>
- </td>
- </tr>
- </table>
- </form>
- <%
- userBean user = new userBean();
- user.setName(request.getParameter("mUserName"));
- user.setPassword(request.getParameter("mPassword"));
- %>
- <hr/>
- 用户名:<%=user.getName()%>
- <br>
- 密 码:<%=user.getPassword()%>
- </body>
- </html>
举个例子,假如有人要用Java实现一个单向链表类,可能会这样写:
- public 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);
有一天,作者决定要节省内存,不要缓存size变量了,把代码改成这样:
- public 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;
- }
- }
这个故事告诉我们,如果不想被暴打致死,你就必须保持向后兼容性。太阳公司在设计Java语言时,也懂得这个道理。所以Java标准库中,绝对不会出现public int size这样的代码,而一定会一开始就写成:
- private int size;
- public int getSize() { return size; }
让用户一开始就使用getSize,以便有朝一日修改getSize实现时,不破坏向后兼容性。这种public int getSize() { return size; }的惯用手法,就是Java Bean。
JavaBean入门笔记的更多相关文章
- 每天成长一点---WEB前端学习入门笔记
WEB前端学习入门笔记 从今天开始,本人就要学习WEB前端了. 经过老师的建议,说到他每天都会记录下来新的知识点,每天都是在围绕着这些问题来度过,很有必要每天抽出半个小时来写一个知识总结,及时对一天工 ...
- ES6入门笔记
ES6入门笔记 02 Let&Const.md 增加了块级作用域. 常量 避免了变量提升 03 变量的解构赋值.md var [a, b, c] = [1, 2, 3]; var [[a,d] ...
- [Java入门笔记] 面向对象编程基础(二):方法详解
什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...
- React.js入门笔记
# React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...
- redis入门笔记(2)
redis入门笔记(2) 上篇文章介绍了redis的基本情况和支持的数据类型,本篇文章将介绍redis持久化.主从复制.简单的事务支持及发布订阅功能. 持久化 •redis是一个支持持久化的内存数据库 ...
- redis入门笔记(1)
redis入门笔记(1) 1. Redis 简介 •Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure serv ...
- OpenGLES入门笔记四
原文参考地址:http://www.cnblogs.com/zilongshanren/archive/2011/08/08/2131019.html 一.编译Vertex Shaders和Fragm ...
- OpenGLES入门笔记三
在入门笔记一中比较详细的介绍了顶点着色器和片面着色器. 在入门笔记二中讲解了简单的创建OpenGL场景流程的实现,但是如果在场景中渲染任何一种几何图形,还是需要入门笔记一中的知识:Vertex Sha ...
- unity入门笔记
我于2010年4月1日硕士毕业加入完美时空, 至今5年整.刚刚从一家公司的微端(就是端游技术+页游思想, 具体点就是c++开发, directX渲染, 资源采取所需才会下载)项目的前端主程职位离职, ...
随机推荐
- javascript设计模式——迭代器模式
前面的话 迭代器模式是指提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示.迭代器模式可以把迭代的过程从业务逻辑中分离出来,在使用迭代器模式之后,即使不关心对象的内部构造,也 ...
- html5的结构
目录 一.新增的主体结构元素 1.1.article元素 1.2.section元素 1.3.nav元素 1.4.aside元素 1.5.time元素 1.6.pubdate元素 二.新增的非主体结构 ...
- 【Java入门提高篇】Day8 Java内部类——匿名内部类
今天来看看另一个更加神奇的类--匿名内部类. 就像它的名字表示的那样,这个类是匿名的,用完之后,深藏功与名,就像扫地僧那样默默潜藏于深山之中.匿名内部类不仅没有名字,连class关键字都省掉了,而且匿 ...
- 本地创建Duplicate数据库
本地创建Duplicate数据库,新创建的文件路径与目标数据库不同,并且辅助实例的初始化參数DB_NAME与目标数据库不能同样. 1.创建辅助实例的秘钥文件 [oracle@linux5 dbs]$ ...
- POJ-1250
#include<iostream> #include<string> #include<list> #include<algorithm> using ...
- 机器学习——深度学习(Deep Learning)
Deep Learning是机器学习中一个非常接近AI的领域,其动机在于建立.模拟人脑进行分析学习的神经网络,近期研究了机器学习中一些深度学习的相关知识,本文给出一些非常实用的资料和心得. Key W ...
- Matlab 2014b For Mac安装破解
1.Matlab 2014b 的安装和破解文件下载: 安装文件:http://www.cncrk.com/downinfo/80718.html 破解文件:http://pan.baidu.com/s ...
- redis 报Operation against a key holding the wrong kind of value警告的解决方法
WRONGTYPE Operation against a key holding the wrong kind of value github:https://github.com/antirez/ ...
- spring boot利用swagger和spring doc生成在线和离线文档
参考博客地址: 在线文档:http://blog.didispace.com/springbootswagger2/ 离线文档:http://www.jianshu.com/p/af7a6f29bf4 ...
- 数据分析与展示——NumPy数据存取与函数
NumPy库入门 NumPy数据存取和函数 数据的CSV文件存取 CSV文件 CSV(Comma-Separated Value,逗号分隔值)是一种常见的文件格式,用来存储批量数据. np.savet ...