三问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与reqs(在内部)
				resp.sendRedirect(req.getContextPath()
								+ "/servlet/flowcard/FlowCardServlet?command=q");

			}catch(SQLException e){
				e.printStackTrace();

			}finally{
				DbUtil.close(rs);
				DbUtil.close(pstmt);
				DbUtil.close(conn);
			}
			return user;
		}
	}

Control类是一个简单的业务处理类,不是javaBean中的类。

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.

时间: 2024-10-01 12:03:35

三问JavaBean的相关文章

丢掉盔甲,我们依然是骄傲的骑士——Secooler“三问四看”话认证培训

DBA的高薪引无数英雄豪杰掏腰包!很多IT培训机构看准了这一点,认为这里"人傻钱多",于是没有任何数据库行业积淀的人也做起了数据库培训的生意,还将DBA培训简化成了三包服务(包学.包过.包就业),导致现在的很多年轻人成了"三过人才",即"看过.学过.考过"就是没"做过".我并不否定"三过人才",毕竟很多人希望借此进入DBA行业,但是你绝不能只停留在三过状态,我提倡在三过的基础上增加三会,即"会思考

养成每日三问的好习惯

养成每日三问的好习惯 有什么用? 帮助回顾每日工作,不断完善自己: 每天与自己设定的目标对比,敦促自己持续进步: 帮助建立信心 积极与自己的潜意识沟通,发现自己的潜能: 帮助找到目标 知道哪里做的不够好,才会产生改进的动力 怎么做? 每天至少和自己沟通三个问题,问题设定后,在一个阶段周期内(一个月or3个月)就不要在改变: 每日3问的时间最好控制在5分钟,时间太长不容易持续:时间可以选择在早上或是晚上: 对于每日3问的答案,最好有文字记录,这样,可以定期回顾这些答案:发现自己的需求或问题,从而为

《小团队项目管理》第三问 --- 如何看待客户的需求变更?

作为一名码农,在项目开发过程中经常会涉及到项目的需求变更,变更的理由也是多种多样,总结而来分为外部和内部,从外部讲,例如:为了顺应某行业新的工作操作规范,甲方要求现有项目在工作流程环节上进行局部功能的变更:从内部讲,通过对市场环境的不间断调研和数据分析,公司产品在同类产品竞争中处于不利地位,市场份额日渐缩小,那么我们的产品设计人员会积极行动起来对产品的整个定位和新业务展开新的思考以寻求更加稳健的创新突破口,这就会对项目产生一定的需求变更. 此图是从CSDN社区截取下的,我相信很多看到这个问题的筒

三问:linux操作系统安全加固

三问:linux操作系统安全加固 1.为什么要进行安全加固? 安全加固的重要性不言而喻.我这里把操作系统同马斯洛需求层次做了个类比,如有不恰当之处,还请指教.同人一样,操作系统也有自己的生理需求,对于人来说生理需求无非吃喝拉撒等,而对于操作系统来说它的生理需求又是什么了?我个人认为应该是底层硬件的配置,内核的驱动,操作系统基本配置以及设备加电.那么机器加了电,读取硬件信息,驱动内核,启动操作系统后,随之而来最重要事当然是安全需求.人类的安全需求主要包括人身安全,生活稳定以及心灵上追求的安全感等,

职场三问

一问:我能不能在自己的技术范围里找到细分领域? 目前我的技术领域主要专注于Windows平台,在Windows平台里面广度是够了,但是深度还远远不够.这五六年的技术路线在微软的不同产品线之间来回切换,说实话,自己很累.干的运维的活,累的原因就不多说了,核心问题在于:在运维层面耗费太大的精力值得吗?很显然,精力需要重新分配,分配的前提是要聚焦.专注,从而才能保证做到极致. 很多时候,特别是职业生涯早期,对技术领域的选择都是被动的,是职业选择了我,而不是我选择了职业,早期先活下去的因素要更多一些.后

软件测试自我修养(一):修心三问

"授人以鱼,不如授之以渔" 说的是传授给人知识,不如传授给人学习知识的方法.今天我想针对于此从思维层面再做一个升华:"授之以渔,则先令人悟之". 做好软件测试,首先具备的修养是需要弄明白三个问题.这就是上面讲到要的"悟".假如开发人员修改提交了BUG,我们使用"三问"的思想进行测试,对于测试人员了解需求会起到很大的帮助. 何以悟"三问".您一定会问:"哪三问?" 举个例子,咱们来设计一个

“永久免费”承诺破灭, 三问imo收费为哪般

近日有爆料称,国内知名的企业IM运营商--imo办公室宣布自2014年1月起,对公有云实行收费. 一时间,不少企业用户在网上公开闹起情绪.在微博上,关于imo收费的质疑始终不断,围绕"imo为何永久免费承诺变卦"展开各自讨论.据某知情人透露,imo曾致邮件给用户解释收费原因,称其需要资金维持产品运营开发,但这封邮件似乎起到了火上浇油的作用.目前来看,网上针对imo收费有如下疑问. 第一问:imo为何逆互联网免费大环境而行? 在国内,免费邮箱.音乐.书籍等各类免费下载,大家普遍习惯互联网

测试灵魂三问

测试灵魂三问:1.为什么这个bug都测不出来: 2.测试怎么测的,到底会不会测试?3.测试快点啊,为啥总是测试脱后腿,最后才测试出BUG? 答:1.首先测试并不制造BUG,测试的目的只是为了找出更多的BUG,从而提高版本质量. 2.测试并不一定能保证所有的BUG都能被找出来,而且版本质量是靠团队一起来保证的,需要全员参与,并不是测试一个人的事. 3.对于测试流程.测试方法和测试的颗粒度存在不合理的地方,我们可以一起来谈论,持续改进. 影响版本质量有很多因素:1.测试人员的专业技能:2.整个项目组

灵魂三问【纪念】

灵魂三问:你是谁?从哪里来?到哪里去? 这是一个哲学问题,同样也是人们的人生问题.有人说把这三个问题想明白了,人生也就明朗了起来.因为人和人的处境不同,所以并没有标准答案,你的答案就是答案. 第一篇内容选择这个话题,当然是要回答一下的,第一是为了懂得自己,第二是帮助你们了解我,第三是留给未来的我. “你是谁?” 这个问题不应该是简单的自我介绍,更是内心深处的介绍.我自知还不能完美总结自己的内心,这也是为什么要开始写文的原因之一:开放内心. 我是周炜琪,生理年龄二十有一,心理年龄四十有三,是一个想