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渲染, 资源采取所需才会下载)项目的前端主程职位离职, ...
随机推荐
- 数据库介绍(MySQL安装 体系结构、基本管理)
第1章 数据库介绍及mysql安装 1.1 数据库简介 数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增.截取.更新.删除等操作. 所谓“数据库”系以一定方式 ...
- NOIP2014无线网络发射器选址改编1
问题描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129条东西向街道和129条南北向街道所形成的网格状,并且相邻的平 ...
- vue2的keep-alive的总结
vue2的keep-alive的总结 keep-alive 是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM.结合vue-router中使用,可以缓存某个view的整个内容 ...
- Effective Java 第三版——4. 使用私有构造方法执行非实例化
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- 柯塔娜(Cortana):从科幻虚构到真实人生
依照商业法理.7月29日.随着Win10公布的东风."小娜"与"小冰"两姊妹相会于中国北京. 在"小娜"眼中,"小冰"仅 ...
- .NET Core 2.0下载和文档
.NET Core 2.0 RTM 正式版2017/8/14 发布.对应发布 ASP.NET Core 2.0 .EF Core 2.0以及.NET Standard 2.0. 你可以通过 Visua ...
- SharePoint Framework 简介
作者:陈希章 发表于 2017年12月25日 前言 通过前面几篇文章,我相信大家对于SharePoint Online的开发有了更加全面的认识,上一篇 介绍的SharePoint Add-in的开发, ...
- TextMesh Pro 超链接解析失败
前言 软件环境 Unity3D 5.3.7p4 TextMesh Pro 1.0.555.0b11(Jul 06.2017) UGUI做为UI解决方案 文档资料 TextMesh Pro的资料,可以参 ...
- (转)java内部类详解
本文转自http://www.cnblogs.com/dolphin0520/p/3811445.html,谢谢作者 说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能 ...
- 盘点selenium phantomJS使用的坑
参考:http://www.jianshu.com/p/9d408e21dc3a http://www.cnblogs.com/luxiaojun/p/6144748.html 豆瓣应该是ip被封 ...