以下为我的个人理解:
view主要是jsp实现显示,一般都是通过标签控制值对象来实现这样
model就是我们平时说的业务逻辑以及值对象(javabean)值对象继承了ActionForm
control就是实现了action的java类一般来说数据库操作都是写在业务逻辑类里面的,我们把要处理的数据封装进值对象然后业务逻辑类对这些值对象进行处理
control类对上述过程进行控制,操作完成后返回相应的页面

解决方案 »

  1.   

    谢谢!我可能没说清楚啊!我看有的教程上规定struts的mvc2中不包括数据访问层啊!m层中只有业务逻辑层啊!数据访问层是要另建的啊!(如果是struts+hibernation,那hibernation就是数据访问层了啊!) 可我问的是单纯的struts程序中(也就是数据访问层不用hibernation)下面的问题怎么回答啊???这二种方法在单纯的struts程序中哪个用得普遍些啊???谢谢!
    数据访问层(比如 添加信息 修改信息 更新信息 插入信息 删除信息等具体的操作过程和连接数据库的字符串)到底是应该像传统的model1那样把select from..  insert into...等直接写在jsp页面的html状态下还是先把(比如 添加信息 修改信息 更新信息 插入信息 删除信息等具体的操作过程和连接数据库的字符串)先编译为java类文件(也就是javabean)然后把数据访问层的javabean放在jsp页面的html状态下调用???这二种方法在单纯的struts程序中(也就是数据访问层不用hibernation)哪个用得普遍些啊???谢谢!
      

  2.   

    不知道是不是你想要得import java.lang.reflect.Field;
    import java.sql.*;
    import java.util.ArrayList;import javax.naming.*;
    import javax.sql.*;public class PmsDBConnection {

    protected static PmsDBConnection instance_m = null; 

    protected static String PMS_JNDI_NAME = "PMS_JNDI"; 

    protected DataSource pmsDataSource_m = null; 

    protected Connection dbCon_m = null; 

    /**
     * 
     */
    protected PmsDBConnection() throws PmsException
    {  
    // try
    // {
    //
    // Context initContext = new InitialContext();
    // Context envCtx = (Context)initContext.lookup("java:comp/env");
    // DataSource ds = (DataSource)envCtx.lookup("jdbc/oracle");
    // } catch (NamingException e)
    // {
    // System.out.println(e.getMessage());
    // throw new PmsException(10); 
    // }
    }

    protected Statement getStatement() throws PmsException
    {
    Context initCtx;
    try

    dbCon_m = pmsDataSource_m.getConnection(); 
    Statement stmt = dbCon_m.createStatement();
    return stmt; 
    }catch (SQLException e)
    {
    //TODO SQLException
    throw new PmsException(1); 

    }

    protected static PmsDBConnection getInstance() throws PmsException
    {
    if(null == instance_m)
    {
    instance_m = new PmsDBConnection(); 
    }
    return instance_m; 
    }
    /*******************************************************************************************/
    public boolean executeUpdate(String sql) throws PmsException
    {
    try
    {
    Connection conn = pmsDataSource_m.getConnection();
    Statement stmt = conn.createStatement(); 
    stmt.executeUpdate(sql); 
    } catch (SQLException e)
    {
    //TODO SQLException
    throw new PmsException(1); 
    }

    return true; 
    }

    public boolean executeUpdate(ArrayList sqls) throws PmsException
    {
    for(int i = 0; i < sqls.size(); i++)
    {
    this.executeUpdate(sqls.get(i).toString()); 
    }
    return true; 
    }


    public ArrayList executeQuery(String sql, String beanName) throws PmsException 

    ArrayList result = new ArrayList(); 
    try
    {
    Connection conn = pmsDataSource_m.getConnection();
    Statement stmt = conn.createStatement(); 
    ResultSet rs = stmt.executeQuery(sql); 
    Class cl = Class.forName(beanName); 
    Field fs [] = cl.getDeclaredFields();  
    while(rs.next())
    {  
    Object obj = cl.newInstance();   
    for(int i = 0; i < fs.length; i++)
    {
    fs[i].set(obj, rs.getObject(fs[i].getName())); 
    }
    result.add(obj); 

    rs.close(); 
    conn.close(); 
    } catch (SQLException e)
    {
    //TODO SQLException
    throw new PmsException(1); 
    } catch (ClassNotFoundException e)
    {
    //TODO ClassNotFoundException
    throw new PmsException(2); 
    } catch (InstantiationException e)
    {
    //TODO InstantiationException
    throw new PmsException(3); 
    } catch (IllegalAccessException e)
    {
    //TODO IllegalAccessException
    throw new PmsException(4); 
    }

    return result; 
    }
    }
      

  3.   

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    public class pmsDataSource
    {
    public static Connection getConnection() 
    {
    // Step1
    Connection theConnection = null;
    try
    {
    DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
     

      //Step2
      String url = "jdbc:oracle:thin:@localhost:1521:DONGDONG";
      String userName = "scott";
      String password = "tiger";

       theConnection = DriverManager.getConnection(url,userName,password);
    }
    catch (SQLException e)
    {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }catch(Exception e)
    {
    e.printStackTrace();
    }
      
    return theConnection;

    }
    }
      

  4.   

    gaojian189(无尽空虚)谢谢你的热心,可我不是这意思啊! 请问有没有这种写法?把(比如 添加信息 修改信息 更新信息 插入信息 删除信息等具体的操作过程和连接数据库的字符)写在javabean中,然后在jsp页面中调用!也就是帮忙回一下下面的问题!谢谢!我觉得我问得很清楚啊!
    在单纯的struts程序中
    数据访问层(比如 添加信息 修改信息 更新信息 插入信息 删除信息等具体的操作过程和连接数据库的字符串)到底是应该像传统的model1那样把select from..  insert into...等直接写在jsp页面的html状态下还是先把(比如 添加信息 修改信息 更新信息 插入信息 删除信息等具体的操作过程和连接数据库的字符串)先编译为java类文件(也就是javabean)然后把数据访问层的javabean放在jsp页面的html状态下调用???这二种方法在单纯的struts程序中(也就是数据访问层不用hibernation)哪个用得普遍些啊???谢谢!
      

  5.   

    还想问一下你:在单纯的struts程序的实际项目中(也就是数据访问层不用hibernation),数据访问层的javaBean是不是也要放在jsp页面的html状态下调用?(就像业务逻辑层的JavaBean那样放在jsp页面的html中)
      

  6.   

    还想问一下:在单纯的struts程序的实际项目中(也就是数据访问层不用hibernation),数据访问层的javaBean是不是也要放在jsp页面的html状态下调用?(就像业务逻辑层的JavaBean那样放在jsp页面的html中)我问这的意思就是 数据访问层的javaBean既然已被业务逻辑层的JavaBean调用了,那还需不需要再把数据访问层的javaBean也像业务逻辑层的JavaBean那样那样直接放在jsp页面的html中???(我以前是搞asp.net的,做过一些三层结构的东西,在asp.net中是这样的: 表示层,也就相当于jsp页面的html,调用业务逻辑层,业务逻辑层再调用数据访问层,不会直接把数据访问层的东西写在表示层中,不知道jsp中是不是也是这样的啊!)
      

  7.   

    还是我回答一下你吧,好像很多人都不懂你的意思。
    其实你完全可以自己写一个数据访问层的,关于数据,无非是query,updata,creat,del,这几种操作,把他们的共同点提取出来,写成javabean.
    建议一:你可以把你的数据库连接类写成一个bean,然后查询类一个bean,添加(也就是注册)写成一个bean,修改一个bean,删除bean,然后根据页面传来的不同标识在control中判断调用哪个bean。关键是你的页面是跟control发生关系,用control来判断调用那个bean进行哪种操作。
    建议二:好像也有这种写法,就是每一个数据处理页面对应一个java类,但我没有这么干过
    不知道我说的够不够清楚了
    最后说一下,楼主的分也忒少了吧,^_^
      

  8.   

    建议看看《企业应用架构模式》,要么用transaction script,要么就用hibernate!
      

  9.   

    就用hibernate吧,为什么要自己写?一个字烦!
      

  10.   

    我才学JAVA几个月,做了个小项目,是5个人完成的(我做的是预算那块),STRUTS框架,数据库(SQL2000)连接是用连接池
    你自己下着看看,看合你要求不: http://my.mofile.com/yyg1107
    提取码:9239199852347203
      

  11.   

    做得不错,谢谢!好像在AM05\webm\WEB-INF\lib下没找到struts.jar文件啊?是怎么回事啊?整个程序中也没找到struts.jar文件啊!
      

  12.   

    做得不错,谢谢!好像在AM05\webm\WEB-INF\lib下没找到struts.jar文件啊?是怎么回事啊?整个程序中也没找到struts.jar文件啊!
      

  13.   

    stuts.jar可以放在tomcat(对于别的web服务器也一样)的common\lib里面的呀..只要在环境变量里加上就可以了..其他的jar文件也一样呵呵,还是觉得张桂元的 <Struts开发入门与项目实践>不错
      

  14.   

    javaboat(毛豆)你好,你说的这方法好像不是太好啊!比如,我要是把这程序传到jsp空间上去,难道别人空间商还会手工的帮你把struts.jar放到tomcat(对于别的web服务器也一样)的common\lib里面吗??请知道的大侠回一下啊!谢谢!
      

  15.   

    HIBERNATE可以封装所有的数据库操作,为什么不用呢?
    当然你可以自己写一个封装了你想要使用的数据库操作!