首先我们要知道三大框具体的功能与作用,然后就可以大概的了解三大框架的结合点。
一、Struts框架的机制就是MVC:M-model层既实体层,就拿简单的登录界面来说,我们在网页上需要用户名和密码,而用户名和密码就可以封装成一个用户实体类。V-view视图层,我们在前台看到的用html,javaScript,jsp,css等编写的页面就是视图层,C-control控制层,我们得到了实体,就要对实体进行一系列的操作,如查找用户是否存在,插入删除等。
二、Hibernate框架的机制就是ORM,DAO层的持久化操作,以及对JDBC的封装:O-object层实体层,当我们运用了Hibernate框架后,我们就可以用hibernate来管理实体与数据库的关系连接。R-relationShip关系,多个实体间的对应关系。(如学生实体和老师实体的关系,是多对多)。M-mapping映射,实体到关系表的映射。(个人理解)
三、Spring面向抽象和面向接口,如我们在action层用到的sevice层的类都可以通过Spring框架来注入,而不用自己每次的new。面向切口可以用于事务管理,日志等,同样我们可以将多个不同操作的共同功能提取出来进行切口编程。
我们都知道如果只加入了Struts框架的话的运行机制如:点击打开链接
从上图的DAO到db层都是Hibernate的工作,而Spring框架则贯穿了整个过程,如action层用了service层,service层用了DAO层,我们可以使用Spring框架对其进行注入,将类自行的注入给其他对象。同样可以在Service层进行事务管理。
如果是含有Struts框架和hibernate框架的项目的话,web.xml和Struts.xml都不要进行更改,我们需要加入hibernate.cfg.xml的配置,并在加入Struts的访问层次上进行扩展,也就是在action进行扩展,当我们执行到Struts.xml的话我们会找到action名,然后查看后面的class类,执行actionClass的execute方法,在execute方法中我们会对实体进行操作,如插入到数据库操作,当没有Hibernate的时候我们会敲下面的代码:
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/hello?username=&password");
Statement stat = conn.createStatement("insert into hello(username,password) values('"+username+"',");
}
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
而如果使用了hibernate的话则直接对jdbc进行封装,我们可以使用封装类直接得到session对象进行数据库的访问。