三问JavaBean
曾经觉得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的更多相关文章
- 【GDI+编程】--从三问开始
一. GDI+三问 1.1 GDI+是什么? GDI+是GDI(Graphics Device Interface)的后继者,是一种图形设备的接口,它构成了Win XP操作系统的子系统的API. 1. ...
- RESTful三问
我觉得学习一个技术,其实就是要弄明白三件事情:是什么(what),为什么(why),怎么用(how).正是所谓的三W方法. 所以打算总结一个"三问"系列.为了自己学习,也分享给别人 ...
- 别人 echo 、你也 echo ,是问 echo 知多少?-- Shell十三问<第三问>
别人 echo .你也 echo ,是问 echo 知多少?-- Shell十三问<第三问> 承接上一章所介绍的 command line ,这里我们用 echo 这个命令加以进一步说明. ...
- 三问助你Fundebug
译者按: Debug也要三省吾身! 原文: Three Questions About Each Bug You Find 译者: Fundebug 为了保证可读性,本文采用意译而非直译.另外,本文版 ...
- 三问助你Debug
译者按: Debug也要三省吾身! 原文: Three Questions About Each Bug You Find 译者: Fundebug 为了保证可读性,本文采用意译而非直译.另外,本文版 ...
- mysql.user细节三问
一.如何拒绝用户从某个精确ip访问数据库假如在mysql.user表中存在用户'mydba'@'192.168.85.%',现在想拒绝此用户从某个精确ip访问数据库 # 创建精确ip用户,分配不同的密 ...
- 不同角度看Handler——另类三问
之前有一章节介绍了Handler的常见面试题,今天就来说说另类的,可能你没关注的其他问题,一起看看吧. 系统为什么提供Handler 这点大家应该都知道一些,就是为了切换线程,主要就是为了解决在子线程 ...
- 虚拟dom?diff算法?key?Vue原理的核心三问?打包教你搞定。
为什么需要虚拟DOM 先介绍浏览器加载一个HTML文件需要做哪些事,帮助我们理解为什么我们需要虚拟DOM.webkit引擎的处理流程,如下图所示: 所有浏览器的引擎工作流程都差不多,如上图大致分5步: ...
- Kafka 入门三问
目录 1 Kafka 是什么? 1.1 背景 1.2 定位 1.3 产生的原因 1.4 Kafka 有哪些特征 消息和批次 模式 主题和分区 生产者和消费者 broker 和 集群 1.5 Kafka ...
随机推荐
- [转]MapReduce浅析
本文转自http://edisonchou.cnblogs.com/ 一.什么是MapReduce MapReduce是Google的一项重要技术,它首先是一个编程模型,用以进行大数据量的计算.对于大 ...
- mongo 3.4分片集群系列之五:详解平衡器
这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mongo 3.4分片集群系列之三:搭建 ...
- Reuse a SSL socket
It's possible to reuse a SSL socket after proper cleanup. See SSL Socket free and shutdown on stacko ...
- vue路由传参(学习心得)
如果组件通过query来传递num参数为1,相当与在 url 地址后面拼接参数 <template> <div> <h3>首页</h3> <rou ...
- C++ 泛型程序设计与STL模板库(1)---泛型程序设计简介及STL简介与结构
泛型程序设计的基本概念 编写不依赖于具体数据类型的程序 将算法从特定的数据结构中抽象出来,成为通用的 C++的模板为泛型程序设计奠定了关键的基础 术语:概念 用来界定具备一定功能的数据类型.例如: 将 ...
- HDU_2955_Robberies_01背包
A - Robberies Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submi ...
- if语句,while语句,do whlie语句,循环语句
总结: 1.定义数组并赋值: var arr=[1,2,3,4]; 2.通过下标访问数组: var str=arr[0]; 3.自定义数组 var arr=new Array(); 4.数组的赋值 a ...
- 学习笔记——网络编程3(基于TCP协议的网络编程)
TCP协议基础 IP协议是Internet上使用的一个关键协议,它的全称是Internet Protocol,即Internet协议,通常简称IP协议. 使用ServerSocket创建TCP服务 ...
- zip相关知识梳理(一)
zip相关知识梳理(一) 经过对zip文件的长时间研究,对zip文件进行相关知识进行梳理,虽然网上很多牛人对其做了相关基础解析,但是对于特殊情况没有进行说明,比如超过4G的zip文件该以什么格式进行编 ...
- java基础学习日志--异常案例
package test7; public class InvalidScroreException extends Exception { public InvalidScroreException ...