• 三问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.

     

     

  • 相关阅读:
    时间戳(UnixTimestamp)与 《2038年问题》
    端口相关命令
    Ubuntu中的在文件中查找和替换命令
    A Reusable Aspect for Memory Profiling
    acc文件的运行
    A Reusable Aspect for Memory Allocation Checking
    ACC常用语句
    aspectC++常用命令
    c++调用DOS命令,不显示黑屏
    fopen文件目录问题
  • 原文地址:https://www.cnblogs.com/llguanli/p/8480638.html
Copyright © 2020-2023  润新知