就是get和set我都知道怎么拿
可是我看人家封装数据库的时候有的方法没写get set 为什么呢我被这个问题一直捆绕 就感觉卡在这里了
反正特别混乱根本摸不找头脑了 我希望通过大哥你门对我的帮助能让我会真正的使用JAVABEAN来封装一些逻辑代码 小弟再次谢过大家了 谢谢!!
我也看了好多网上讲数据库封装的 可是还是搞不懂...
可是我看人家封装数据库的时候有的方法没写get set 为什么呢我被这个问题一直捆绕 就感觉卡在这里了
反正特别混乱根本摸不找头脑了 我希望通过大哥你门对我的帮助能让我会真正的使用JAVABEAN来封装一些逻辑代码 小弟再次谢过大家了 谢谢!!
我也看了好多网上讲数据库封装的 可是还是搞不懂...
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;
}
如果需要被修改,则提供 set方法如果都不需要呢? 那就啥也不提供!
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;
}}
看明白了么??
我认为你应该先了解他的原理 通俗的讲 JAVABEAN 就是个存储箱 你可以把属性扔进去 也个取出来用 在JAVA中设置SET GET 就是扔和取的一个动作而已 你所说的有写不用SET 和GET 就能取数据 那是因为里面已经封装掉了
可是有的BEAN里写了比如 public void XXXX(){
file f = new file();
XXXXX
业务逻辑等等}
然后我就不知道这些东西怎么拿到JSP里获得?那要是可以获得那我把所有的代码写在BEAN里不就完了吗?为什么还有人把代码写在JSP里呢?要是不能那写这些方法象读文件啊 封装数据库啊又怎么用他们呢?
现在就是对这个特别迷糊,...其实象概念那些封装我觉的自己还是能理解一些的 在次谢谢说明白一些 谢谢大家了 另外...告诉我怎么给分呵呵....
使用以及维护,重用而已~~
当然,你也可以把代码都写到页面中,但那样写的话阅读和维护都很不方便~~
当一个对象的属性需要被显示出去的时候一般要用到GET,
没有用到的属性可以不用注明GET和SET方法。
你们说我这样说对吗?JAVABEAN就是一个类嘛 然后旧跟咱用的JDK 人家写的那些类一样比如IO啊什么的 我们写BEAN虽说没那么厉害但大概意思是这样对吧?
然后在JSP里USEBEAN掉 想掉方法掉方法 要用属性就GET 或SET设置和拿到 对吗?这样理解不知道算不算对...
另外大家给我说说怎么给分啊 让我把分散给大家啊......
我自己觉的基础还可以只是有时候对一些问题没人讲解就容易乱成一团了 再次谢谢大家的帮助!
JavaBean体现了java中的对变量的封装性,使得外界只能够通过相应的get,set方法来访问属性,另外在MVC框架中,javabean可以处理业务逻辑,例如Struts2中的action类,既有属性以及属性的get,set方法,同时还具有业务逻辑处理方法execute,这个execute方法是Struts2框架自动调用的,再比如在EJB中,分为3种Bean,业务逻辑Bean,消息驱动bean,和实体bean,通常实体bean中没有其他业务逻辑方法,而业务逻辑bean中则要放一些方法来处理相应的业务逻辑。
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啊 真是乱
一切都是为了代码重用!!高内聚低耦合!在Ruby里.当有一个方法的代码超过10行就要考虑是不是可以松散耦合..在JAVA里也是一样.一下子将大量的逻辑都写在一个方法里..后期维护会很困难.自己看代码页很迷糊