1、JavaSSH框架整合原创Java 三大框架整合(HSS) Hibernate &Struts& SpringStruts显示页面,做显示用的,Hibernate 用来连接数据库,Spring用来连接Struts和HibernateHibernate框架,通过映射,和数据库表之间建立对应关系,映射文件在这是Hibernate框架的机制,例如,数据库中有表为User_Tb,这个文件里的ser.java中的属性则只是一些get与set方法,如下图这里实现了序列化接口,“implements Serializable”因为序列化后的内容,才能在内存中传来传去,这里的属性userName等,对应的都是
2、数据库表中的列名属性与之对应的user.hbm.xml则设置其与数据库表中各列的对应关系,如图设置完这些属性后,只需在配置文件(hibernate.cfg.xml)中把er.hbm.xml关联进去,就已经建立了和数据库的表的一一对应关系,如下图:此配置文件hibernate.cfg.xml已经自动生成的一些连接数据库的信息映射文件的加载就在此处(Mapping)hibernate的一些特殊的属性则可以在此对话框中设置, 映射关系建立好后,就可以利用方法对数据库表实现增删改查等功能,如果不用Struts框架,对数据库进行操作时,需要建立一个Dao,写出对应的与数据库连接获得session,提交事
3、务等,如下图配置struts,首先配置struts.xml和struts.propertiesstruts.properties配置如下:struts.action.extension=do(配置扩展名,如果你在*.xml中配置的action的name属性为register,那么就只有register.do才能激发其对应的action方法)struts.multipart.parset=jakartastruts.multipart.saveDir=/tempstruts.objectFactory = springstruts.objectFactory.spring.autoWire =n
4、ame每次执行操作,都要按照这个部署;Structs框架,利用其配置文件(struts.xml,struts.propoties)及其所对应的action,则可以简化以上的部署,struts内部的一些封装的类,已经将这些与数据库的互动做了封装,其配置文件如下(为了便于管理,可以将*.xml配置文件单独写出来,最后直接利用import标签将其加载到struts.xml中,以useroper.xml为例)Struts的作用就是显示作用,当其与web页面结合时,在*.xml中配置好后,可以在其对应的action方法中直接利用get,set方法取得页面中表单项的属性值,在这个三大框架整合中,最后就是利
5、用这个方法获得表单中的username,;也可以说,struts负责的就是页面跳转时的动作,因为页面跳转时需要动态的获得一些值,而struts由于其内部封装的方法,可以很便捷的实现这些功能,如果要手写一些硬代码而不利用struts框架,则必须使用setAttribute或session来取得值Action的 class属性,对应的应该是action的类名(com.softeem.action.RegisterAction)这里利用了Spring框架的一些动作,在此写上useroperaction(它代表了com.softeem.action.RegisterAction)即可.经由spring
6、框架自动生成的配置文件(applicationContext.xml),和struts.xml一样,对于applicationContext.xml的配置,同样也是写在其他的*.xml中,然后导入applicationContext.xml,以applicationContex_action.xml为例.在此bean中,可以看到已经把class=” com.softeem.action.RegisterAction”配置到bean中,因此在以上的useroper.xml配置中,可以直接将class的属性写为此bean的id号,引进此bean,Spring的用法大致如此,在三大框架整合的这个例子
7、中,还有其他地方用到Spring框架的东西.在struts.xml中,只需加入一行代码即可,如下图: com.softeem.action.RegisterAction如下:当在浏览器输入*.do(这里由于前面所配置,应该是register.do)后,即可激发此动作(执行此类中的execute()方法,当然,如果在*.xml中配置了方法名,则会执行你指定的方法,不指定的话,才会执行此默认的execute()方法本例子是一个模板,有分层思想,如果不分层直接在后面加上this.getHibernateTemplate.save()就可以完成数据的插入了,在这里分层思想就是:struts模板只是负责
8、页面,在此也就是负责了取得页面表单中的值,而具体与数据库交互,则交给Hibernate框架. 执行.addUser()这个方法是必须获得 UserOperService对象才行,在此,此方法体中没有new实例的代码,这里利用了spring框架,在spring框架中配置bean,替代了new的方法,在之前的applicationContex_action.xml视图中,可以清晰的看见,其配置的bean中,已经将com.softeem.action.RegisterAction中的属性userOperService关联到id=”userservice“的bean中,而此bean如下: applic
9、ationContex_service.xml可以看到,次bean的配置,直接指向了com.softeem.dao.UserOperDaoImp类,spring的框架利用这种模式再加上其自身封装的类,实现了这种方式来代替new实例,因此,action方法体中的useroperservice就是UserOperDaoImp的对象;同样,在此bean中,他还为自己的一个属性(userOperDaoImp)用相同的形式将其实例化为UserOperDaoImp的一个对象,同样是利用的导入外部bean的形式,这种一层套一层的导入形式,是一种思想然后,利用 对象调用其自身方法,经过这一层,再次调用到以下的
10、类中public class UserOperDaoImp extends HibernateDaoSupport implements IUserOperDao / Transaction tran = null;/ Session session = null; public void addUser(User user) / TODO Auto-generated method stub / System.out.println(service!);/ session = HibernateSessionFactory.getSession();/ / tran = session.be
11、ginTransaction();/ session.save(user);/ mit();/ /System.out.println(!);/ if (session != null) / session.close();/ this.getHibernateTemplate().save(user); System.out.println(被service调用!数据成功插入!); 在被调用的方法体只有一句代码,实现了数据的插入,也是利用了hibernate框架,被注释的是不用框架时插入数据的方式在这个层次中,struts,hibernate,spring各司其职,简要流程大概为:页面提交表
12、单后,激发action动作,然后struts框架负责将其内容提取,提取后交给service(服务器)处理,service最终将其交给dao(hibernate框架中的dao),而在这些类之间相互跳转调用其方法时,spring在期间负责实例化类,获得对象,在hibernate于struts间起衔接作用以下方法,是可以实现建表的功能,当配置好hibernate映射文件时,可以用此方法在数据库中建立表,可以将其看为hibernate反转的逆方法public class ExportDB public static void main(String args) Configuration config
13、=new Configuration().configure(); SchemaExport export=new SchemaExport(config); export.create(true, true); 下面的配置文件是配置spring的事务,也就是在执行方法之前的一些另外执行的方法来提醒用户这些网址声明就相当于java类中的导包,需要使用哪个标签,就必须把那个标签的地址给导进来 !- 定义通知者(即advisor,它与aspect一样,它是由Pointcut与Advice组成的),一般用于事务的配置 * pointcut-ref:指定要使用的Pointcut,这里指定id即可 * advice-ref:指定Advice,这里指定id即可 * 的含义就是将哪个Advice应用到约定的范围(即Pointcut指定的)上去 - 本文由jinqiu8810远程,转载请注明出处
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1