三问JavaBean

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

什么是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属性。

小结:

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

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

 

 

posted @ 2018-02-27 20:00  llguanli  阅读(128)  评论(0编辑  收藏  举报