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

什么是javabean?

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

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

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

何为遵循特性约束?

1由 property,method,event组成.

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

3类命名XXXBean

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

我们用实例来看

javabean中 User类

  1. package com.bjpower.drp.sysmgr.domain;
  2. import java.util.Date;
  3. public class User {
  4. public String getUserId() {
  5. return userId;
  6. }
  7. public void setUserId(String userId) {
  8. this.userId = userId;
  9. }
  10. public String getUserName() {
  11. return userName;
  12. }
  13. public void setUserName(String userName) {
  14. this.userName = userName;
  15. }
  16. public String getPassword() {
  17. return password;
  18. }
  19. public void setPassword(String password) {
  20. this.password = password;
  21. }
  22. public String getContactTel() {
  23. return contactTel== null? "" : contactTel;
  24. }
  25. public void setContactTel(String contactTel) {
  26. this.contactTel = contactTel;
  27. }
  28. public String getEmail() {
  29. return email == null ?
  30.  
  31. "" : email;
  32. }
  33. public void setEmail(String email) {
  34. this.email = email;
  35. }
  36. public Date getCreateDate() {
  37. return createDate;
  38. }
  39. public void setCreateDate(Date createDate) {
  40. this.createDate = createDate;
  41. }
  42. // userID
  43. private String userId;
  44. // username
  45. private String userName;
  46. // password
  47. private String password;
  48.  
  49. private String contactTel;
  50. private String email;
  51. // util Date
  52. private Date createDate;
  53. }

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

Control类

  1. package com.bjpower.sysmgr;//c+f+o
  2. import java.sql.Connection;
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import java.sql.Statement;
  7. import java.sql.Timestamp;
  8. import java.util.ArrayList;
  9. import java.util.Date;
  10. import java.util.List;
  11. import com.bjpower.drp.sysmgr.domain.User;
  12. import com.bjpower.drp.util.DbUtil;
  13. import com.bjpower.drp.util.PageModel;
  14.  
  15. /**
  16. * 採用单例模式
  17. * @author v-hanyk
  18. *
  19. */
  20. public class userManager {
  21. private static userManager instance=null;
  22.  
  23. private userManager(){
  24.  
  25. }
  26. //入口方法
  27. public static synchronized userManager getUserMangwer(){
  28.  
  29. if(instance== null){
  30. instance = new userManager();
  31. }
  32. return instance;
  33. }
  34.  
  35. @Override
  36. protected void doGet(HttpServletRequest req, HttpServletResponse resp)
  37. throws ServletException, IOException {
  38. // 必须显示调用父类方法
  39.  
  40. if (Constants.ADD.equals(GetCommand())) {
  41. add(req, resp);
  42. } else if (Constants.DEL.equals(GetCommand())) {
  43. delete(req, resp);
  44. } else if (Constants.MOIDFY.equals(GetCommand())) {
  45. modify(req, resp);
  46. } else if (Constants.SHOW_ADD.equals(GetCommand())) {
  47. showAdd(req, resp);
  48. } else if (Constants.QUERY.equals(GetCommand())) {
  49. //查询
  50. findUserById(req, resp);
  51. }
  52. }
  53.  
  54. /**
  55. * 依据用户代码查询用户
  56. * @param req
  57. *@param resq
  58. * @return
  59. * @throws SQLException
  60. */
  61. public void findUserById(HttpServletRequest req, HttpServletResponse resp) throws Exception {
  62. StringBuffer sql= new StringBuffer();
  63. sql.append("select user_id, user_name, password, contact_tel, email, create_date from t_user where user_id= ?");
  64. Connection conn=null;
  65. PreparedStatement pstmt=null;
  66. ResultSet rs= null;
  67. User user=null;
  68. String userId=req.getParameter("userId");
  69. try{
  70. conn= DbUtil.getconnection();
  71. pstmt=conn.prepareStatement(sql.toString());
  72. pstmt.setString(1, userId);
  73. rs=pstmt.executeQuery();
  74. if(rs.next()){
  75. user=new User();
  76.  
  77. user.setUserId(rs.getString("user_id"));
  78. user.setUserName(rs.getString("user_name"));
  79. user.setPassword(rs.getString("password"));
  80. user.setContactTel(rs.getString("contact_tel"));
  81. user.setEmail(rs.getString("email"));
  82. user.setCreateDate(rs.getTimestamp("create_date"));
  83. }
  84. req.setAttribute("user", user);
  85. //转发。带resq与resq,若是重定向。则没有req,resq则没有数据
  86. resp.getRequestDispatcher("flowcard/modifyuser.jsp").forward(req, resp);
  87.  
  88. }catch(SQLException e){
  89. e.printStackTrace();
  90.  
  91. }finally{
  92. DbUtil.close(rs);
  93. DbUtil.close(pstmt);
  94. DbUtil.close(conn);
  95. }
  96. return user;
  97. }
  98. }

 

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

View页面获取javaBean中数据

通过EL表达式

  1. <table width="95%" border="0" cellpadding="0" cellspacing="0">
  2. <tr>
  3. <td width="22%" height="29">
  4. <div align="right">
  5. 用户代码: 
  6. </div>
  7. </td>
  8. <td width="78%">
  9. <input name="userId" type="text" class="text1" id="userId"
  10. size="10" maxlength="10" readonly="true" value=${user.Id}>
  11. </td>
  12. </tr>
  13. <tr>
  14. <td height="26">
  15. <div align="right">
  16. <font color="#FF0000">*</font>用户名称: 
  17. </div>
  18. </td>
  19. <td>
  20. <input name="userName" type="text" class="text1" id="userName"
  21. size="20" maxlength="20" value=${user.userName}>
  22. </td>
  23. </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. [转]MapReduce浅析

    本文转自http://edisonchou.cnblogs.com/ 一.什么是MapReduce MapReduce是Google的一项重要技术,它首先是一个编程模型,用以进行大数据量的计算.对于大 ...

  2. mongo 3.4分片集群系列之五:详解平衡器

    这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mongo 3.4分片集群系列之三:搭建 ...

  3. Reuse a SSL socket

    It's possible to reuse a SSL socket after proper cleanup. See SSL Socket free and shutdown on stacko ...

  4. vue路由传参(学习心得)

    如果组件通过query来传递num参数为1,相当与在 url 地址后面拼接参数 <template> <div> <h3>首页</h3> <rou ...

  5. C++ 泛型程序设计与STL模板库(1)---泛型程序设计简介及STL简介与结构

    泛型程序设计的基本概念 编写不依赖于具体数据类型的程序 将算法从特定的数据结构中抽象出来,成为通用的 C++的模板为泛型程序设计奠定了关键的基础 术语:概念 用来界定具备一定功能的数据类型.例如: 将 ...

  6. HDU_2955_Robberies_01背包

    A - Robberies Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submi ...

  7. if语句,while语句,do whlie语句,循环语句

    总结: 1.定义数组并赋值: var arr=[1,2,3,4]; 2.通过下标访问数组: var str=arr[0]; 3.自定义数组 var arr=new Array(); 4.数组的赋值 a ...

  8. 学习笔记——网络编程3(基于TCP协议的网络编程)

    TCP协议基础 IP协议是Internet上使用的一个关键协议,它的全称是Internet Protocol,即Internet协议,通常简称IP协议.   使用ServerSocket创建TCP服务 ...

  9. zip相关知识梳理(一)

    zip相关知识梳理(一) 经过对zip文件的长时间研究,对zip文件进行相关知识进行梳理,虽然网上很多牛人对其做了相关基础解析,但是对于特殊情况没有进行说明,比如超过4G的zip文件该以什么格式进行编 ...

  10. java基础学习日志--异常案例

    package test7; public class InvalidScroreException extends Exception { public InvalidScroreException ...