曾经觉得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. Python学习笔记之默认参数

    函数定义时 参数定义的顺序必须是:必选参数.默认参数.可变参数和关键字参数. def test(a,b,c=1,*d,**e) pass

  2. karma+requirejs+angular 测试

    http://karma-runner.github.io/0.8/plus/RequireJS.html karma 不是测试框架,只是一个运行测试框架的服务器 karma测试的原理是,将所有的文件 ...

  3. SQL SERVER 2008 在某表中新增一列时失败

    背景:新增列语句如:“alter table 表名 add 列名 float default 0 with values”(用VS2010做网站,这句话是在C#代码里执行的) 报错提示: 警告: 已经 ...

  4. Sturts2几个常用内建拦截器的介绍

    Sturts2几个常用内建拦截器的介绍:1)conversation:这是一个处理类型转换错误的拦截器,它负责将类型转换错误从ActionContext中取出,并转换成Action的FieldErro ...

  5. C++ 程序的编译

    一.编译器都具备集成开发环境(Integrated Developed Environment,IDE) 二.程序源文件命名约定: C++ 的后缀一般是 .cpp .cc .C .cpp .cxx 三 ...

  6. c++写入txt

    用ofstream 输出流,#include <fstream> ofstream outf; outf.open("abc.txt");outf<<123 ...

  7. @EnableConfigurationProperties

    参考:https://www.jianshu.com/p/7f54da1cb2eb 使用 @ConfigurationProperties 注解的类生效. 如果一个配置类只配置@Configurati ...

  8. idea之快速查看类所在jar包

  9. Python之UDP编程

    参考原文 廖雪峰Python教程 TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据.相对TCP,UDP则是面向无连接的协议. 使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口 ...

  10. axios在vue项目中的一种封装方法

    记录下之前领导封装的axios请求 npm install axios // 安装 单独写个文件配置axios,此处为request.js import axios from 'axios' //自定 ...