曾经觉得javabenan是一些java类.后来查看了一些百科
.javabean是java组件技术,又是遵循一些约定.不是非常理解.

什么是javabean?

 在jsp程序中用来封装业务逻辑,数据库操作与实体的类.

怎样理解上面的组件技术?

这些编写的java类,被放在一个特定的包中,能够打包这些类为jar等格式,复用性强,一次编译,可任意执行.

何为遵循特性约束?

1由 property,method,event组成.

2必须有public的无參构造函数

3类命名XXXBean

综合来看, javabean就是我们曾经封装的一个具无參构造函数的类,该类有属性方法等.

我们用实例来看

javabean中 User类

package com.bjpower.drp.sysmgr.domain;
import java.util.Date;
public class User {
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getContactTel() {
return contactTel== null? "" : contactTel;
}
public void setContactTel(String contactTel) {
this.contactTel = contactTel;
}
public String getEmail() {
return email == null ? "" : email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
// userID
private String userId;
// username
private String userName;
// password
private String password; private String contactTel;
private String email;
// util Date
private Date createDate;
}

该类中,我们将成员变量设置为private,将属性设置为public,而且为getXXXX(变量名).

Control类

package com.bjpower.sysmgr;//c+f+o
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.bjpower.drp.sysmgr.domain.User;
import com.bjpower.drp.util.DbUtil;
import com.bjpower.drp.util.PageModel; /**
* 採用单例模式
* @author v-hanyk
*
*/
public class userManager {
private static userManager instance=null; private userManager(){ }
//入口方法
public static synchronized userManager getUserMangwer(){ if(instance== null){
instance = new userManager();
}
return instance;
} @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 必须显示调用父类方法 if (Constants.ADD.equals(GetCommand())) {
add(req, resp);
} else if (Constants.DEL.equals(GetCommand())) {
delete(req, resp);
} else if (Constants.MOIDFY.equals(GetCommand())) {
modify(req, resp);
} else if (Constants.SHOW_ADD.equals(GetCommand())) {
showAdd(req, resp);
} else if (Constants.QUERY.equals(GetCommand())) {
//查询
findUserById(req, resp);
}
} /**
* 依据用户代码查询用户
* @param req
*@param resq
* @return
* @throws SQLException
*/
public void findUserById(HttpServletRequest req, HttpServletResponse resp) throws Exception {
StringBuffer sql= new StringBuffer();
sql.append("select user_id, user_name, password, contact_tel, email, create_date from t_user where user_id= ?");
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs= null;
User user=null;
String userId=req.getParameter("userId");
try{
conn= DbUtil.getconnection();
pstmt=conn.prepareStatement(sql.toString());
pstmt.setString(1, userId);
rs=pstmt.executeQuery();
if(rs.next()){
user=new User(); user.setUserId(rs.getString("user_id"));
user.setUserName(rs.getString("user_name"));
user.setPassword(rs.getString("password"));
user.setContactTel(rs.getString("contact_tel"));
user.setEmail(rs.getString("email"));
user.setCreateDate(rs.getTimestamp("create_date"));
}
req.setAttribute("user", user);
//转发。带resq与resq,若是重定向。则没有req,resq则没有数据
resp.getRequestDispatcher("flowcard/modifyuser.jsp").forward(req, resp); }catch(SQLException e){
e.printStackTrace(); }finally{
DbUtil.close(rs);
DbUtil.close(pstmt);
DbUtil.close(conn);
}
return user;
}
}

 

Control类是一个简单的业务处理类。

View页面获取javaBean中数据

通过EL表达式

<table width="95%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="22%" height="29">
<div align="right">
用户代码: 
</div>
</td>
<td width="78%">
<input name="userId" type="text" class="text1" id="userId"
size="10" maxlength="10" readonly="true" value=${user.Id}>
</td>
</tr>
<tr>
<td height="26">
<div align="right">
<font color="#FF0000">*</font>用户名称: 
</div>
</td>
<td>
<input name="userName" type="text" class="text1" id="userName"
size="20" maxlength="20" value=${user.userName}>
</td>
</tr>

页面展示我们使用了EL表达式,比曾经的获取用户value=<%=user.getUserName()
%>>要简单了。可是一点要明白,我们使用的是javaBean中类的私用成员变量,不再是getUserId属性。

小结:

通过一些具体了解。认识到javabean在MVC中的作用,以及什么是javabean。它的特点等。

 在mvc设计模型中是model,又称模型,在一般的程序中,我们称为数据层,就是用来设置数据的属性和一些行为的get与set.

 

 

三问JavaBean的更多相关文章

  1. 【GDI+编程】--从三问开始

    一. GDI+三问 1.1 GDI+是什么? GDI+是GDI(Graphics Device Interface)的后继者,是一种图形设备的接口,它构成了Win XP操作系统的子系统的API. 1. ...

  2. RESTful三问

    我觉得学习一个技术,其实就是要弄明白三件事情:是什么(what),为什么(why),怎么用(how).正是所谓的三W方法. 所以打算总结一个"三问"系列.为了自己学习,也分享给别人 ...

  3. 别人 echo 、你也 echo ,是问 echo 知多少?-- Shell十三问<第三问>

    别人 echo .你也 echo ,是问 echo 知多少?-- Shell十三问<第三问> 承接上一章所介绍的 command line ,这里我们用 echo 这个命令加以进一步说明. ...

  4. 三问助你Fundebug

    译者按: Debug也要三省吾身! 原文: Three Questions About Each Bug You Find 译者: Fundebug 为了保证可读性,本文采用意译而非直译.另外,本文版 ...

  5. 三问助你Debug

    译者按: Debug也要三省吾身! 原文: Three Questions About Each Bug You Find 译者: Fundebug 为了保证可读性,本文采用意译而非直译.另外,本文版 ...

  6. mysql.user细节三问

    一.如何拒绝用户从某个精确ip访问数据库假如在mysql.user表中存在用户'mydba'@'192.168.85.%',现在想拒绝此用户从某个精确ip访问数据库 # 创建精确ip用户,分配不同的密 ...

  7. 不同角度看Handler——另类三问

    之前有一章节介绍了Handler的常见面试题,今天就来说说另类的,可能你没关注的其他问题,一起看看吧. 系统为什么提供Handler 这点大家应该都知道一些,就是为了切换线程,主要就是为了解决在子线程 ...

  8. 虚拟dom?diff算法?key?Vue原理的核心三问?打包教你搞定。

    为什么需要虚拟DOM 先介绍浏览器加载一个HTML文件需要做哪些事,帮助我们理解为什么我们需要虚拟DOM.webkit引擎的处理流程,如下图所示: 所有浏览器的引擎工作流程都差不多,如上图大致分5步: ...

  9. Kafka 入门三问

    目录 1 Kafka 是什么? 1.1 背景 1.2 定位 1.3 产生的原因 1.4 Kafka 有哪些特征 消息和批次 模式 主题和分区 生产者和消费者 broker 和 集群 1.5 Kafka ...

随机推荐

  1. AndroidStudio3.0 Canary 8注解报错Annotation processors must be explicitly declared now.

    体验最新版AndroidStudio3. Canary 8的时候,发现之前项目的butter knife报错,用到注解的应该都会报错 Error:Execution failed for task ' ...

  2. Android 比SwipeRefreshLayout更漂亮和强大的下拉刷新控件:Android-MaterialRefreshLayout

    这是一个下拉刷新的控件,它比SwipeRefreshLayout更加漂亮和强大.它易于使用并且支持API LEVEL >= 8.希望你能够喜欢. Now let me talk about Ma ...

  3. Raspberry Pi开发之旅-控制蜂鸣器演奏乐曲

    一.无源蜂鸣器和有源蜂鸣器 步进电机以及无源蜂鸣器这些都需要脉冲信号才能够驱动,这次尝试用GPIO的PWM接口驱动无源蜂鸣器弹奏一曲<一闪一闪亮晶晶>. 无源蜂鸣器: 无源内部没有震荡源, ...

  4. [Windows Server 2012] 更换PHP版本方法

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:更换PHP ...

  5. Xcode 动态库及Framework 安装路径设置

    使用Xcode开发动态库及Framework时,需要为其设置Install path.在设置Install path时,可能会使用到以下几个路径: 1)绝对路径:               绝对路径 ...

  6. CAD把自定义实体,变成普通实体(com接口VB语言)

    主要用到函数说明: MxDrawXCustomEvent::MxDrawXCustomEntity::explode 把自定义实体,变成普通实体,详细说明如下: 参数 说明 LONGLONG lEnt ...

  7. java虚拟机(五)--垃圾回收机制GC5

    什么样的对象需要回收 如果对象已经死亡了,就可以进行回收,判断方式如下 1).引用计数器:给对象添加一个计数器,有地方引用,就+1,当引用失效,就-1.当计数器为0时,判断对象不能再使用,但是当对象相 ...

  8. 如何快速的vue init 属于自己的vue模板?

    相信很多接触过vue的小伙伴非常熟悉了,我们在开启项目之前都需要vue init webpack xx来初始化自己的项目目录.但是在实际开发中我们往往会根据公司要求或者业务的需要会对目录进行局部的调整 ...

  9. 对vuex的一点理解

    vuex是vue.js的一个状态管理工具,它适用于解决平行组件之间的数据共享问题.一般情况下,我们更多的是父子组件之间通过props或$emit来实现传值,如何不满足以上情况那只有使用vuex进行解决 ...

  10. A2. JVM 类加载机制

    [概述] 虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是虚拟机的类加载机制. 与那些在编译时需要进行连接 ...