就是get和set我都知道怎么拿
可是我看人家封装数据库的时候有的方法没写get set 为什么呢我被这个问题一直捆绕 就感觉卡在这里了
反正特别混乱根本摸不找头脑了 我希望通过大哥你门对我的帮助能让我会真正的使用JAVABEAN来封装一些逻辑代码 小弟再次谢过大家了 谢谢!!
我也看了好多网上讲数据库封装的 可是还是搞不懂...

解决方案 »

  1.   

    Java Bean其实就是一个简单的Java类,对于每个属性未必都有get或者set方法,因为外界不一定使用它
      

  2.   

     
      ResultSet rs = null;public List exselect(String sql) {    
            List list = new ArrayList();///new util里 List集合
            
      //////////连接数据库///////
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    ·····················
    ····················
     rs = s.executeQuery(sql);        try {
               
                while (rs.next()) {
                    JavaBean bean = new JavaBean();/////创建JavaBean对象                bean.setId(rs.getInt(1));     ////循环取出数据库对应每个列的值, 这里就是 get 和 set 的用法
                    bean.setTitlename(rs.getString(2));/////get是 数据库 列的的类型  set 是JavaBean里的数据列名
                    list.add(bean);  然后放进List 集合里·
                }
                return list;  
            } catch (SQLException ex1) {
                return null;
            }
      

  3.   

    当一个属性需要被外界访问到,则需要提供get方法
    如果需要被修改,则提供 set方法如果都不需要呢? 那就啥也不提供!
      

  4.   

    让我来告诉你吧,这个是因为有的框架他提供了低层字节码修改的功能,你从源码上看不出来添加了,他是在运行的时候添加的,或者说是运行的时候可以通过反射直接操作javabean的属性,并不一定需要get set方法,你研究一下java 反射机制吧 
      

  5.   

    SET GET在VO类里一般都要用.但在和数据库打交道时.有时是可以没有的.比如要插入一个对像.直接有一个INSERT(OBJECT O)就可以了.要SET GET干嘛?
      

  6.   

    package com.nastation.workflow.flowInstance.manager;import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Iterator;
    import java.util.List;import com.nastation.workflow.dbconnection.DBconnectionPool;
    import com.nastation.workflow.flowInstance.model.Active;public class ActiveManager {
    DBconnectionPool dbc= new DBconnectionPool();
    public Active getActive(int activeId,int wfdId) throws SQLException { Active active = null;
    ResultSet rs;
    String sql = "select activeId,activename,activetype from active where activeid = "+activeId+"" +
    "and wfdid="+wfdId+"";
    rs = dbc.executeQuery(sql);
    while (rs.next()) {
    active = new Active();
    active.setActivename(rs.getString("activename"));
    active.setActiveId(rs.getInt("activeId"));
    active.setActivetype(rs.getInt("activetype"));
    }
    dbc.close();
    return active; }
    public static void main(String[] args) throws SQLException{ ActiveManager am = new ActiveManager();
    Active ac = am.getActive(2, 1);
    System.out.println(ac.getActivename());
    }
    }以上的是逻辑的javabean
    下面给你看数据的javabean
    package com.nastation.workflow.flowInstance.model;import java.util.List;public class Active {
    private int activeId;// 活动定义编号 private String activename;// 活动定义名称 private int activetype;// 活动类型编号 private int activepriority;// 活动优先级 private int wfdId;// 工作流定义编号 private String activedes;// 活动的描述 private String comeLimit;// 流入限制 private String expression;// 表达式 private int activeroute;// 活动的路由方式 private int currentActive;// 当前活动的Id private int rollback;// 是否回退 private String promptInfo;// 提示信息 private int messageFlag;// 是否发送消息 private int hasten;// 是否可催办 private int commission;// 是否可代办 private List activeList;// 存放活动的列表 public String getActivedes() {
    return activedes;
    } public void setActivedes(String activedes) {
    this.activedes = activedes;
    } public int getActiveId() {
    return activeId;
    } public void setActiveId(int activeId) {
    this.activeId = activeId;
    } public String getActivename() {
    return activename;
    } public void setActivename(String activename) {
    this.activename = activename;
    } public int getActivepriority() {
    return activepriority;
    } public void setActivepriority(int activepriority) {
    this.activepriority = activepriority;
    } public int getActiveroute() {
    return activeroute;
    } public void setActiveroute(int activeroute) {
    this.activeroute = activeroute;
    } public int getActivetype() {
    return activetype;
    } public void setActivetype(int activetype) {
    this.activetype = activetype;
    } public String getComeLimit() {
    return comeLimit;
    } public void setComeLimit(String comeLimit) {
    this.comeLimit = comeLimit;
    } public int getCommission() {
    return commission;
    } public void setCommission(int commission) {
    this.commission = commission;
    } public String getExpression() {
    return expression;
    } public void setExpression(String expression) {
    this.expression = expression;
    } public int getHasten() {
    return hasten;
    } public void setHasten(int hasten) {
    this.hasten = hasten;
    } public int getMessageFlag() {
    return messageFlag;
    } public void setMessageFlag(int messageFlag) {
    this.messageFlag = messageFlag;
    } public String getPromptInfo() {
    return promptInfo;
    } public void setPromptInfo(String promptInfo) {
    this.promptInfo = promptInfo;
    } public int getRollback() {
    return rollback;
    } public void setRollback(int rollback) {
    this.rollback = rollback;
    } public int getWfdId() {
    return wfdId;
    } public void setWfdId(int wfdId) {
    this.wfdId = wfdId;
    } public List getActiveList() {
    return activeList;
    } public void setActiveList(List activeList) {
    this.activeList = activeList;
    } public int getCurrentActive() {
    return currentActive;
    } public void setCurrentActive(int currentActive) {
    this.currentActive = currentActive;
    }}
    看明白了么??
      

  7.   

    我来说两句 
      我认为你应该先了解他的原理 通俗的讲 JAVABEAN 就是个存储箱 你可以把属性扔进去 也个取出来用 在JAVA中设置SET GET 就是扔和取的一个动作而已  你所说的有写不用SET 和GET 就能取数据 那是因为里面已经封装掉了
      

  8.   

        您可以学学Hibernate中使用JavaBean的知识,说得很详细。
      

  9.   

    不是我知道GET SET设置和获得属性
    可是有的BEAN里写了比如 public void XXXX(){
    file f = new file();
    XXXXX
    业务逻辑等等}
    然后我就不知道这些东西怎么拿到JSP里获得?那要是可以获得那我把所有的代码写在BEAN里不就完了吗?为什么还有人把代码写在JSP里呢?要是不能那写这些方法象读文件啊 封装数据库啊又怎么用他们呢?
    现在就是对这个特别迷糊,...其实象概念那些封装我觉的自己还是能理解一些的 在次谢谢说明白一些 谢谢大家了 另外...告诉我怎么给分呵呵....
      

  10.   

    自己会写java 吧?你在jsp 上调用这个写好的java  会不会??javabean 跟这个原理是一样的!
      

  11.   

    如果有时间需要当面教教你一些原理 靠在帖子里找到头绪估计越找越多问题 加我QQ吧 晚上Q我 给你讲解讲解496912821
      

  12.   

    get set只是JAVA要求的标准的属性写法 按这样的写法可以方便的进行反射控制
      

  13.   

    javabean 很好有业务逻辑在里面  最多也就是加个验证什么的 业务方面的还是放在action里面比较好
      

  14.   

    呵呵,不知道楼主是怎样找到这个csdn的,
      

  15.   

    在JSP中引用BEAN和引用普通java类是一样的,所谓封装,就是把这些常用的方法啊 ,属性什么的放到一个类里统一管理,方便
    使用以及维护,重用而已~~
    当然,你也可以把代码都写到页面中,但那样写的话阅读和维护都很不方便~~
      

  16.   

    当一个对象的某些属性需要被重写入数据库的时候,一般要用到SET,
    当一个对象的属性需要被显示出去的时候一般要用到GET,
    没有用到的属性可以不用注明GET和SET方法。
      

  17.   

    恩 我大概明白了 其实主要是不知道那里不懂呵呵
    你们说我这样说对吗?JAVABEAN就是一个类嘛 然后旧跟咱用的JDK 人家写的那些类一样比如IO啊什么的 我们写BEAN虽说没那么厉害但大概意思是这样对吧?
    然后在JSP里USEBEAN掉 想掉方法掉方法 要用属性就GET 或SET设置和拿到 对吗?这样理解不知道算不算对...
    另外大家给我说说怎么给分啊 让我把分散给大家啊......
    我自己觉的基础还可以只是有时候对一些问题没人讲解就容易乱成一团了 再次谢谢大家的帮助!
      

  18.   

    最好能把代码贴出来给大家瞧瞧,哪块儿不懂指出来。bean很简单,通俗理解就是数据库每一条记录的实例对象。
      

  19.   

    一般来讲一个javabean必须至少有一个属性提供了get或者set方法,如果任何属性都没有get,set方法那么你的这个类就谈不上是一个JavaBean了,就是
    JavaBean体现了java中的对变量的封装性,使得外界只能够通过相应的get,set方法来访问属性,另外在MVC框架中,javabean可以处理业务逻辑,例如Struts2中的action类,既有属性以及属性的get,set方法,同时还具有业务逻辑处理方法execute,这个execute方法是Struts2框架自动调用的,再比如在EJB中,分为3种Bean,业务逻辑Bean,消息驱动bean,和实体bean,通常实体bean中没有其他业务逻辑方法,而业务逻辑bean中则要放一些方法来处理相应的业务逻辑。
      

  20.   

    import javax.servlet.http.*;  
    import java.sql.*; //定义DBCon类别实做HttpSessionBindingListener介面 
    public class DBCon  

    //与数据库连结有关的Bean属性 
    private Connection con = null; 
     private void BulidConnection() 

    try 
     { 
                   Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
                   String url ="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=stu";
                   String user = "sa";
                   String password = "123456";
                   con = DriverManager.getConnection(url, user, password);
                    
     //建立数据库连线             

    catch(Exception ex) 
     {     
    System.out.println(ex.toString()); 
    }         
    } private void close() 

    try 

    con.close(); //关闭Connection对象         
    con =  null; 

    catch(SQLException sex) 
    {     
    System.out.println(sex.toString()); 
    }     

    /** 
    * 方法名:getConnection 
    * 级别:public 
    * @param     (无) 
    * @return    Connection     数据库联机 
    * @throws    (无) 
    * 作用:返回一个数据库联机 
    */ 
    public Connection getConnection() 
    {  
    //若con为null时, 重新建立数据库连结 
    if(con == null) 
    BulidConnection(); 

     return this.con; 
    }     
    /** 
    * 方法名:valueBound 
    * 级别:public 
    * @param     HttpSessionBindingEvent     事件 
    * @return    (无) 
    * @throws    (无) 
     * 作用:建立一个数据库联机,并输出相关信息 
     */ 
     public void valueBound() 

     BulidConnection(); 
     System.out.println("会话级别的数据库连接已经建立!!!"); 
     } 
    /** 
    * 方法名:valueUnbound 
    * 级别:public 
     * @param     HttpSessionBindingEvent     事件 
    * @return    (无) 
    * @throws    (无) 
    * 作用:关闭一个数据库联机,并输出相关信息 
     */ 
     public void valueUnbound() 

    if(con != null) 
    close(); //呼叫close方法 
    System.out.println("会话级别的数据库连接已经关闭!!!"); 
     } 
    }
    为什么要这样封装呢...直接把结果集拿到只在JSP里掉其不是更能分离前后台吗?
    你门说的我都知道啊 因为我现在在学J2EE所以很乱 JSP SERVLET 不都能请求和响应吗?为什么还要控制器???JSP一个做最终还是转为SERVLET啊 真是乱
      

  21.   


    一切都是为了代码重用!!高内聚低耦合!在Ruby里.当有一个方法的代码超过10行就要考虑是不是可以松散耦合..在JAVA里也是一样.一下子将大量的逻辑都写在一个方法里..后期维护会很困难.自己看代码页很迷糊