三问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表达式

页面展示我们使用了EL表达式,比以前的获取用户value=<%=user.getUserName() %>>要简单了,但是一点要明确,我们使用的是javaBean中类的私用成员变量,不再是getUserId属性。

小结:

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

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

 

 

你可能感兴趣的:(【Java】)

用户代码: 
*用户名称: