曾经觉得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.
?
?