JavaSSH框架整合原创.docx

上传人:b****5 文档编号:6532270 上传时间:2023-01-07 格式:DOCX 页数:12 大小:310.47KB
下载 相关 举报
JavaSSH框架整合原创.docx_第1页
第1页 / 共12页
JavaSSH框架整合原创.docx_第2页
第2页 / 共12页
JavaSSH框架整合原创.docx_第3页
第3页 / 共12页
JavaSSH框架整合原创.docx_第4页
第4页 / 共12页
JavaSSH框架整合原创.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

JavaSSH框架整合原创.docx

《JavaSSH框架整合原创.docx》由会员分享,可在线阅读,更多相关《JavaSSH框架整合原创.docx(12页珍藏版)》请在冰豆网上搜索。

JavaSSH框架整合原创.docx

JavaSSH框架整合原创

Java

三大框架整合(HSS)Hibernate&Struts&Spring

Struts显示页面,做显示用的,Hibernate用来连接数据库,Spring用来连接Struts和Hibernate

Hibernate框架,通过映射,和数据库表之间建立对应关系,映射文件在

这是Hibernate框架的机制,例如,数据库中有表为User_Tb,这个文件里的ser.java中的属性则只是一些get与set方法,如下图

这里实现了序列化接口,

“implementsSerializable”

因为序列化后的内容,才能在内存中传来传去,这里的属性userName等,对应的都是数据库表中的列名属性

与之对应的user.hbm.xml则设置其与数据库表中各列的对应关系,如图

设置完这些属性后,只需在配置文件(hibernate.cfg.xml)中把er.hbm.xml关联进去,就已经建立了和数据库的表的一一对应关系,如下图:

此配置文件hibernate.cfg.xml已经自动生成的一些连接数据库的信息

映射文件的加载就在此处(Mapping)

hibernate的一些特殊的属性则可以在此对话框中设置

映射关系建立好后,就可以利用方法对数据库表实现增删改查等功能,如果不用Struts框架,对数据库进行操作时,需要建立一个Dao,写出对应的与数据库连接获得session,提交事务等,如下图

配置struts,首先配置struts.xml和struts.properties

struts.properties配置如下:

struts.action.extension=do(配置扩展名,如果你在*.xml中配置的action的name属性为register,那么就只有register.do才能激发其对应的action方法)

struts.multipart.parset=jakarta

struts.multipart.saveDir=/temp

struts.objectFactory=spring

struts.objectFactory.spring.autoWire=name

每次执行操作,都要按照这个部署;Structs框架,利用其配置文件(struts.xml,struts.propoties)及其所对应的action,则可以简化以上的部署,struts内部的一些封装的类,已经将这些与数据库的互动做了封装,其配置文件如下(为了便于管理,可以将*.xml配置文件单独写出来,最后直接利用import标签将其加载到struts.xml中,以useroper.xml为例)

Struts的作用就是显示作用,当其与web页面结合时,在*.xml中配置好后,可以在其对应的action方法中直接利用get,set方法取得页面中表单项的属性值,在这个三大框架整合中,最后就是利用这个方法获得表单中的username,;也可以说,struts负责的就是页面跳转时的动作,因为页面跳转时需要动态的获得一些值,而struts由于其内部封装的方法,可以很便捷的实现这些功能,如果要手写一些硬代码而不利用struts框架,则必须使用setAttribute或session来取得值

Action的class属性,对应的应该是action的类名(com.softeem.action.RegisterAction)这里利用了Spring框架的一些动作,在此写上useroperaction(它代表了com.softeem.action.RegisterAction)即可.

经由spring框架自动生成的配置文件(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的用法大致如此,在三大框架整合的这个例子中,还有其他地方用到Spring框架的东西.

在struts.xml中,只需加入一行代码即可,如下图:

 

com.softeem.action.RegisterAction如下:

当在浏览器输入*.do(这里由于前面所配置,应该是register.do)后,即可激发此动作(执行此类中的execute()方法,当然,如果在*.xml中配置了方法名,则会执行你指定的方法,不指定的话,才会执行此默认的execute()方法

本例子是一个模板,有分层思想,如果不分层直接在后面加上this.getHibernateTemplate.save()就可以完成数据的插入了,在这里分层思想就是:

struts模板只是负责页面,在此也就是负责了取得页面表单中的值,而具体与数据库交互,则交给Hibernate框架.

执行.addUser()这个方法是必须获得UserOperService对象才行,在此,此方法体中没有new实例的代码,这里利用了spring框架,在spring框架中配置bean,替代了new的方法,在之前的applicationContex_action.xml视图中,可以清晰的看见,其配置的bean中,已经将com.softeem.action.RegisterAction中的属性userOperService关联到id=”userservice

“的bean中,而此bean如下:

applicationContex_service.xml

可以看到,次bean的配置,直接指向了com.softeem.dao.UserOperDaoImp类,spring的框架利用这种模式再加上其自身封装的类,实现了这种方式来代替new实例,

因此,action方法体中的useroperservice就是UserOperDaoImp的对象;

同样,在此bean中,他还为自己的一个属性(userOperDaoImp)用相同的形式将其实例化为UserOperDaoImp的一个对象,同样是利用的导入外部bean的形式,这种一层套一层的导入形式,是一种思想

然后,利用对象调用其自身方法,经过这一层,再次调用到以下的类中

publicclassUserOperDaoImpextendsHibernateDaoSupportimplementsIUserOperDao{

//Transactiontran=null;

//Sessionsession=null;

publicvoidaddUser(Useruser){

//TODOAuto-generatedmethodstub

//System.out.println("��service����!

");

//session=HibernateSessionFactory.getSession();

//

//

//tran=session.beginTransaction();

//session.save(user);

//mit();

////System.out.println("��ݲ���ɹ�!

");

//if(session!

=null){

//session.close();

//}

this.getHibernateTemplate().save(user);

System.out.println("被service调用!

数据成功插入!

");

}

在被调用的方法体只有一句代码,实现了数据的插入,也是利用了hibernate框架,被注释的是不用框架时插入数据的方式

在这个层次中,struts,hibernate,spring各司其职,,简要流程大概为:

页面提交表单后,激发action动作,然后struts框架负责将其内容提取,提取后交给service(服务器)处理,service最终将其交给dao(hibernate框架中的dao),而在这些类之间相互跳转调用其方法时,spring在期间负责实例化类,获得对象,在hibernate于struts间起衔接作用

以下方法,是可以实现建表的功能,当配置好hibernate映射文件时,可以用此方法在数据库中建立表,可以将其看为hibernate反转的逆方法

publicclassExportDB{

publicstaticvoidmain(String[]args){

Configurationconfig=newConfiguration().configure();

SchemaExportexport=newSchemaExport(config);

export.create(true,true);

}

}

下面的配置文件是配置spring的事务,也就是在执行方法之前的一些另外执行的方法来提醒用户

这些网址声明就相当于java类中的导包,需要使用哪个标签,就必须把那个标签的地址给导进来

xmlversion="1.0"encoding="UTF-8"?

>

//www.springframework.org/schema/beans"

xmlns:

xsi="http:

//www.w3.org/2001/XMLSchema-instance"

xmlns:

p="http:

//www.springframework.org/schema/p"

xmlns:

tx="http:

//www.springframework.org/schema/tx"

xmlns:

aop="http:

//www.springframework.org/schema/aop"

xsi:

schemaLocation="

http:

//www.springframework.org/schema/beanshttp:

//www.springframework.org/schema/beans/spring-beans-2.5.xsd

http:

//www.springframework.org/schema/aophttp:

//www.springframework.org/schema/aop/spring-aop-2.5.xsd

http:

//www.springframework.org/schema/txhttp:

//www.springframework.org/schema/tx/spring-tx-2.5.xsd

">

class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

hibernate.cfg.xml">

--

配置事务管理器

-->

--该sessionFactory是HibernateTransactionManager类的属性名,必须这么写-->

--指定需要管理事务的SessionFactory,即上面配置的-->

--

配置事务传播特性

配置自己的异常

-->

adviceid="txAdvice"transaction-manager="transactionManager">

attributes>

methodname="add*"propagation="REQUIRED"/>

methodname="del*"propagation="REQUIRED"/>

methodname="update*"propagation="REQUIRED"/>

methodname="*"read-only="true"/>

attributes>

advice>

--配置AOP,即使用AOP的方式将事务进行配置起来-->

config>

pointcutid="allManagerMethod"

expression="execution(*com.manager.*.*(..))"/>

--

定义通知者(即advisor,它与aspect一样,它是由Pointcut与Advice组成的),一般用于事务的配置

*pointcut-ref:

指定要使用的Pointcut,这里指定id即可

*advice-ref:

指定Advice,这里指定id即可

*

advisor>的含义就是将哪个Advice应用到约定的范围(即Pointcut指定的)上去

-->

advisorid="daoAdvice"pointcut-ref="allManagerMethod"

advice-ref="txAdvice"/>

config>

本文由jinqiu8810远程,转载请注明出处

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1