struts2_spring_hibernate

合集下载

Struts2+Spring框架简介+Hibernate查询语言

Struts2+Spring框架简介+Hibernate查询语言

出自Gavin King的手笔,目前最流行的开源ORM框架,其灵巧的设计,优秀的 性能,还有丰富的文档,都是其迅速风靡全球的重要因素。

Entity EJB

Entity EJB实质上也是一种ORM技术,这是一种备受争议的组件技术,很多人 说它非常优秀,也有人说它一钱不值。事实上,EJB为J2EE的蓬勃发展赢得了 极高的声誉,EJB作为一种重量级、高花费的ORM技术上,具有不可比拟的优势。 但由于其必须运行在EJB容器内,而且学习曲线陡峭,开发周期、成本相对较 高,因而限制EJB的广泛使用。

添加自动注解配置(自动扫描@Service,@Repository等注解)

<context:component-scan base-package="test,a"/>
<context:annotation-config/> 该配置将隐式地向Spring容器注册4个 BeanPostProcessor
<bean id="hello" class="test.HelloWorld" abstract="false“ lazy-init="default" autowire="default" dependencycheck="default"> <property name="helloWorld"> <value type="ng.String">Hello World From IOC</value> </property> </bean>

Struts2、spring2、hibernate_的整合

Struts2、spring2、hibernate_的整合

一.struts 2 与spring2struts2 本身就采用了类似于spring的IOC容器机制,可以利用struts2官方提供的插件struts2-spring-plugin-2.0.11.1.jar,直接与spring进行整合,配置文件中只需要设置struts.objectFactory=spring这样,就将struts2的对象管理交给了spring2的IOC容器。

在struts.xml中配置的action<package name="maintaince" extends="struts-default"><action name="serverInfoList" class="serverInfoService" method="getAllServersInfo"><result name="list">/jsp/server_info/server_info_list.jsp</result></action>在spring的配置文件中配置的bean<bean id="serverInfoService" class="com.wod.service.impl.ServerInfoServiceImpl"><property name="serverInfoDao" ref="serverInfoDao"/><property name="sib" ref="serverInfoBean"/></bean>可以看出,struts2可以直接只用在spring2中配置的bean,引用过来作为action。

Hibernate+Spring+struts这三个框架的好处

Hibernate+Spring+struts这三个框架的好处

Hibernate+Spring+struts这三个框架的好处SpringSpring中的概念说明:控制反转:主要是当主类调用被调用类中的方法时,不是在主类中直接创建被调用类对象,而是由Spring容器创建。

反射注入:就是由Spring容器创建的被调用类的实例注入到主类中。

面向方面的aop编程:主要是为了实现处理日志、异常、权限等。

利用Spring的好处:利用控制反转的好处:就是在反复调用主类时不用在主类中反复地创建被调用类的实例,而是由spring容器创建一次就可以(单例模式),这样就节省了内存空间,还有就是解耦。

面向方面的aop编程的好处:例如:假如处理日志,只要写一个日志类就可以了,不用在每个类中引用这个类。

而是把写好的日志类配置到spring配置文件中。

其它的都类似。

这样就减少了代码的编写量,提高了系统的维护性。

Struts2Struts2的说明:它主要是进行界面的设计。

它可以与Ajax、Jsf、Hibernate、Spring等结合。

它的功能比struts1强大几倍。

Struts2的好处:它的好处是:例如:用是在jsp页面中实现一个日历控件,假如不用struts2,只能在页面中引入javascript脚本。

这样会提高代码的编写量和页面的刷新时间。

假如用struts2,在页面中只要引入struts2的标签库就可以了。

因为它有日历控件标签。

HibernateHibernate的分析说明:运行效率:如果JDBC的代码写的非常优化,那么JDBC架构运行效率最高,但是实际项目中,这一点几乎做不到,这需要程序员非常精通JDBC,运用Batch语句,调整PreapredStatement的Batch Size和Fetch Size等参数,以及在必要的情况下采用结果集cache等等。

而一般情况下程序员是做不到这一点的。

因此Hibernate架构表现出最快的运行效率。

EB的架构效率会差的很远开发效率:在有JBuilder的支持下以及简单的项目,EB架构开发效率最高,JDBC次之,Hibernate最差。

Struts2+Spring+Hibernate搭建详解(包含代码)-13页word资料

Struts2+Spring+Hibernate搭建详解(包含代码)-13页word资料

Struts2+Spring+Hibernate搭建全解!Struts2+Spring+Hibernate是J2EE的最新流行框架。

本篇是我搭建这个框架的经验总结,有很多人搭建这个框架总会遇到大大小小的问题,网上也没有什么行之有效的方案或成体系的介绍,所以我就决定总结一下我的搭建过程。

给一些搭建尚存问题的朋友提供帮助。

我用这个框架,实现的是基本的CRUD功能的一个雇员管理系统,本来打算丰富一下功能,但是一直没能抽出空去搞。

目前版本暂定为1.0,除了CRUD外还配置了表单验证框架JSValidation。

功能都能很顺利的实现。

现在分享部分源码,来说明一些注意事项。

以下是部分搭建过程及源码:1.先组合实现Hibernate3.2+Spring2.5支持,删除hibernate.cfg.xml文件,修改applicationContext.xml文件的内容,增加SessionFactory和dataSource的设置。

2.通过MyEclipse的向导方式,生成POJO类和对应的映射文件。

3.修改applicationContext.xml文件中<property name="mappingResources">元素的内容。

4.编写DAO接口和实现类。

5.修改applicationContext.xml文件,增加对Dao实现类的配置。

6.组合Struts2和Spring2.5,修改web.xml文件,增加struts2的所需要的过滤器配置。

7.增加struts2相应类库,增加struts2与spring的配置jar包。

8.拷贝struts.xml文件到src根目录下,再修改struts.xml文件,进行常量配置。

9.修改web.xml文件,配置Spring监听器,和上下文变量。

并增加OpenSessionInViewFilter的设置。

10.写入action类。

11.配置struts.xml文件。

Struts2、Spring、Hibernate 高效开发的最佳实践

Struts2、Spring、Hibernate 高效开发的最佳实践

Struts2、Spring、Hibernate 高效开发的最佳实践的规约有了上面的配置,我们还不能做到彻低脱离配置。

比如,我们定义了一个 Action 类继承于 ActionSupport,我们知道用法ModelDriven 可以将用户上传的数据封装到一个业务 Bean 里,而不用挺直在 Action 里声明变量,这很重要。

我信任有无数读者碰到过这个问题。

当业务 Bean 不同时,也就是需要用户上传的数据不同时,我们就要随之添加新的 Action,这挺直导致修改 struts.xml 的配置,然后还要修改 appliionContt.xml 的事务配置、Bean 的配置,哪天我们不要这个业务了,又要重复的修改删除配置,笔者开头时为此事近乎抓狂,为什么我们不能只定义一个 Action,而 ModelDriven 的模型动态转变呢?认真考虑 Struts2 的机制,Struts2 将客户端的参数装配到 ModelDriven 的模型里,是通过“装配拦截器”装配的。

只要我们在装配拦截器执行前,转变 ModelDriven 里的模型对象就行了。

这就需要我们自定义一个拦截器,struts2 提供了这个机制。

在自定义的拦截器里,我们按照用户调用的 Action 办法,新建一个模型,并且将模型设置到 Action 中,这样模型就可以是动态的了,记住,这个拦截器需要放在 defaultStack 的前面。

同样,新的问题是如何按照 Action 办法动态的挑选业务模型呢?莫非重复的写 if 办法吗?固然不能这样,动态的模型,就应当来自于动态的办法。

因此定义的action 办法需要有规约,笔者在自己的程序中,是这样定义规约的。

Action 办法是这样组成:_$_,用法美元符隔开(美元符是 Java 办法合法的标识符),前部分是操作名,可以随意取,后部分是业务模型的类名。

同时,全部的业务模型,都放到指定的一个包里,假设该包名为 com.dw.business。

struts2+spring+hibernate整合步骤

struts2+spring+hibernate整合步骤

引用struts2、hibernate、spring所需jar包struts-core-2.x.x.jar ----struts核心包xwork-core-2.x.x.jar -----身体ruts在其撒很难过构建ognl-2.6.x.jar ----对象导航语言freemarker-2.3.x.jar ------struts2的ui标签的模板使用commons-fileupload-1.2.x.jar ----文件上传组件 2.1.6版本后需加入此文件struts-spring-plugin-2.x.x.jar ---用于struts2继承spring的插件hibernate核心安装包下的(下载路径:/ ,点击Hibernate Core 右边的download)hibernate2.jarlib\bytecode\hibernate-cglib-repack-2.1_3.jarlib\required\*.jarhibernate安装包下的(下载路径:/;点击Hibernate Annotations 右边的下载)hibernate-annotations.jarlib\ejb3-persistence.jar、hibernate-commons-annotations.jar hibernate针对JPA的实现包(下载路径:/ ,点击Hibernate Entitymanager右边下载)hibernate-entitymanager.jarlib\test\log4j.jar、 slf4j-log4j12.jarspring安装包下的dist\spring.jarlib\c3p0\c3p0-0.9.1.2.jarlib\aspecti\aspectjweaver.jaraspectjrt.jarlib\colib\cglib-nodep-2.1_3.jarlib\j2ee\common-annotations.jarvlib\log4j\log4j-1.2.15.jarlib\jakarta-commons\commons_loggin.jar数据库驱动包引用创建mysql数据库ssh 设置编码为utf-8 语句:create database ssh character set 'utf8' collate 'utf8_general_ci'引用1.先整合spring和hibernate*将spring和hibernate的jar包放入lib下;*创建spring的beans.xml配置文件Java代码1.<?xml version="1.0" encoding="UTF-8"?>2.<beans xmlns="/schema/beans"3. xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"4. xmlns:aop="/schema/aop"xmlns:tx="/schema/tx"5. xsi:schemaLocation="/schema/beans6./schema/beans/spring-beans-2.5.xsd7. /schema/context8./schema/context/spring-context-2.5.xsd 9. /schema/aop/schema/aop/spring-aop-2.5.xsd10. /schema/tx/schema/tx/spring-tx-2.5.xsd">11.12. <!-- 将bean交由spring管理可以用<bean></bean>和扫描加注 -->13. <!--14. 扫描该包及该包下的子包15. -->16. <context:component-scanbase-package="com.yss"></context:component-scan>17.18.19. <!-- 集成hibernate sessionFactory单例模式线程安全创建耗内存-->20. <!-- 将hibernate的事务也交由spring管理 -->21. <bean id="dataSource"class="boPooledDataSource"22. destroy-method="close">23. <property name="driverClass"value="org.gjt.mm.mysql.Driver" />24. <property name="jdbcUrl"25.value="jdbc:mysql://localhost:3306/ssh?useUnicode=true&amp;characterE ncoding=UTF-8" />26. <property name="user" value="root" />27. <property name="password" value="root" />28. <!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize 之间。

struts2+spring+hibernate分页显示完整代码

struts2+spring+hibernate分页显示完整代码

分页显示一直是web开发中一大烦琐的难题,传统的网页设计只在一个JSP或者ASP页面中书写所有关于数据库操作的代码,那样做分页可能简单一点,但当把网站分层开发后,分页就比较困难了,下面是我做Spring+Hibernate+Struts2项目时设计的分页代码,与大家分享交流。

1、DAO层接口的设计,在MemberDao接口中定义了如下两个方法:publicinterface MemberDao {@SuppressWarnings("unchecked")/*** 分页查询* @param hql查询的条件* @param offset 开始记录* @param length 一次查询几条记录* @return*/public List queryForPage(final Stringhql,finalint offset,finalint length);/*** 查询所有记录数* @param hql查询的条件* @param offset 开始记录* @return总记录数*/publicint getAllRowCount(String hql);}2、DAO层实现类MemberDaoImpl对上面两个方法的实现如下:publicclass MemberDaoImpl extends HibernateDaoSupport implements Me mberDao {/*** 查询所有记录数* @return总记录数*/publicint getAllRowCount(String hql) {return getHibernateTemplate().find(hql).size();}/*** 分页查询* @param hql查询的条件* @param offset 开始记录* @param length 一次查询几条记录* @return*/@SuppressWarnings("unchecked")public List queryForPage(final String hql, finalint offset, finalint length) {List list =getHibernateTemplate().executeFind(new HibernateCallback(){ public Object doInHibernate(Session session)throws HibernateException, SQLException {Query query = session.createQuery(hql);query.setFirstResult(offset);query.setMaxResults(length);List list = query.list();return list;}});return list;}}细心的读者会发现,这个类继承了HibernateDaoSupport类,HibernateDaoSupport是Spring 提供的对Hibernate支持的类,getHibernateTemplate().executeFind(new HibernateCallback(){....})方法中的参数,我们使用了接口回调,在其参数内,我们能像原生的Hibernate一样调用query.setFirstResult(offset)和query.setMaxResults(length)来实现分页查询功能。

Struts2,Spring,Hibernate整合步骤及一个简单实例

Struts2,Spring,Hibernate整合步骤及一个简单实例

Struts2,Spring,Hibernate整合步骤(自己笔记)配步骤的例子一个:请参看:Struts2,Spring,Hibernate整合例子一个1.建立web项目2.在web.xml 配置 struts2,和 spring ,<!-- 配置Struts2 --><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher(struts的过滤器)</filter-class></filter><filter-mapping>(加载struts2)<filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 配置Spring --><listener><listener-class>org.springframework.web.context.ContextLoaderListener(spring监听器)</listener-class></listener><!-- 查找spring配置文件 --><context-param>(程序从此处开始加载.xml 文件,并执行)<param-name>contextConfigLocation</param-name><param-value>classpath*:*.xml</param-value></context-param>3.在src根目录下创建struts.xml文件<include file="struts-default.xml"/>固定格式,用到此包4.在src根目录创建hibernate.cfg.xml文件<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN" "/hibernate-configura tion-3.0.dtd"><hibernate-configuration><session-factory><!-- 基本配置 --><property name="dialect">org.hibernate.dialect.Oracle9Dialect</property><property name="show_sql">false</property><property name="format_sql">true</property><propertyname="e_reflection_optimizer">true</property><property name="max_fetch_depth">2</property><property name="default_batch_fetch_size">8</property><property name="jdbc.batch_size">20</property></session-factory></hibernate-configuration>系统给的文件只需要拷贝,都是一些数据库库的基本配置5.在src根目录拷贝struts.properties文件struts.objectFactory = spring 该项是告诉系统用spring来控制hibernate和Actionstruts.action.extension=action 告诉系统访问时以什么结尾。

struts2+spring+hibernate三大框架环境搭建小小总结

struts2+spring+hibernate三大框架环境搭建小小总结

struts2+spring+hibernate三大框架环境搭建小小总结:一、环境搭建导入各种jar包什么的就不多说了。

二、整个包结构及模式:1、src文件下,由panyname组成一个大的包结构和各项配置文件组成2、companyname下,分成两部分:A、model层B、功能层3、model层下,包含整个项目所要的数据库表名,按照功能来命名包的名称,A、功能包下包含对应的数据库表的java类,里面包含对应数据库表中所有的字段以及get,set方法B、功能包下包含对应的数据库表的hbm.xml类,里面包含对应数据库表中所有字段的定义4、功能层下,可以只有一个功能模块的一个结构,也可以有多个功能模块的包结构,再在包结构下细分到功能模块的结构A、一个完整的功能模块包下包含:action,dao,service层,1>、对应的action层包含对应功能实现的Action类;2>、对应的dao层包含对应功能实现的数据库操作类;3>、对应的service层包含对应功能实现的各service接口;5、各项配置文件:A、首先包含三个大的配置文件:applicationContext.xml,struts.xml,jdbc.propertiesB、applicationContext.xml实现依赖注入,struts.xml实现各响应功能的配置,jdbc.properties配置数据库相关属性三、页面1、所有的页面,js包都放到WebRoot目录下,2、要配置web.xml文件3、所有的jar包放到WebRoot-WEB-INF-lib包下四、功能操作1、定义好model层,配置好对应的model.hbm.xml映射文件2、将对应的model.hbm.xml映射文件映射到applicationContext.xml文件中3、页面中对应的跳转,实现action,到struts-function.xml去增加对应的Action类和方法4、将struts-function.xml映射文件映射到struts.xml映射文件中5、在功能层下建立对应的功能包,包下包含action,dao,service三个层6、根据struts-function.xml映射文件,建立对应的Action类,在类中创建对应的方法7、在service层和dao层下分别建立对应的接口层和实现接口类8、在对应的applicationContext-function.xml映射文件中将dao层方法映射到对应的service 层中9、service层中,包含iservice层和实现iservice层的service10、在service类中实现对应的iservice定义的方法,并return这个dao对象的方法,11、根据这个方法,在idao接口中创建对应的方法,在dao层的实现类中来具体实现方法的业务12、dao层实现之后,将在Action中调用对应的dao层实现的方法,然后保存结果返回到对应的界面去13、至此,简单的一个业务就实现了。

Struts2,Spring与Hibernate整合应用,学生成绩管理系统

Struts2,Spring与Hibernate整合应用,学生成绩管理系统

实验四:Struts2、Spring与Hibernate整合应用————学生成绩管理系统实验要求:(1)整合Struts2、Spring和Hibernate框架(2)实现“登录”功能(3)实现“学生信息管理”功能(4)实现“学生成绩管理”功能(5)实现分页功能实验目的:掌握Struts2的开发步骤掌握Hibernate的开发步骤掌握Spring的开发步骤,理解依赖注入、AOP、事务管理等掌握Struts2、Spring和Hibernate框架的整合掌握分页技术实验思路:1、建库建表2、利用分层思想,建package3、添加Spring开发能力4、添加Hibernate开发能力5、生成Hibernate所需的POJO类和映射文件6、开发DAO层(1)新建DAO层接口。

(2)新建DAO层实现类(该类要实现DAO层接口,继承HibernateDaoSupport类)。

(3)在Spring配置文件中增加该DAO层实现类的定义,并需要依赖注入一个SessionFactory bean的引用。

7、开发Service层(1)新建Service层接口。

(2)新建Service层实现类,该类中需要声明所调用DAO层接口,并生其setter方法。

(3)在Spring配置文件中增加该Service层实现类的定义,并需要依赖注入DAO层的bean。

8、实现WEB层(1)在web.xml中增加struts2的过滤器和Spring的监听器。

(2)增加Spring和Struts2的整合文件struts.properties。

(3)新建所需的jsp文件。

(4)新建Action类,该类要继承ActionSupport,同时该类要依赖注入Service的bean(声明+setter方法)。

(5)在Spring配置文件中增加该Action类的定义,并注入Service 层的bean。

(6)在struts.xml中增加该Action的定义,其中class的属性是在Spring中定义的该Action bean的id。

Spring整合Struts 2与Hibernate

Spring整合Struts 2与Hibernate

(2) 添加Spring框架及相关的jar包。
5
20.1.1 环境搭建
将struts-2.5.8-lib.zip解压后的lib目录下如图20-3所示的14个jar包复制到 项目s2sh的WebRoot\WEB-INF\lib目录中。
(3) 添加Struts 2框架的jar包 。
项目最终的目录结构如图20-4所示。
10
20.1.6 Action开发
在项目src目录下创建包com.restaurant.action,用于存放 Action,在包中创建类UsersAction.java。
11
20.1.7 Spring整合Struts 2
Spring整合Struts 2的目的在于使用Spring IOC容器来管理 Struts 2的Action,整合的步骤如下所示:
(1) 在web.xml配置文件中指定以Listerner方式启动Spring,并配 置Struts 2的StrutsPrepareAndExecuteFilter。 (2) 在Spring配置文件中配置UsersAction类 为了保证对每个用户的请求都会创建一个新的Bean实例,在配置 UsersAction的实例时,需要将<bean>元素的scope属性设置为 “prototype”(原型模式)。 (3) 在项目src目录下创建Struts 2的配置文件struts.xml Spring整合Struts 2后,<action>元素中class属性不再使用 UsersAction的全类名,而是引用Spring配置文件中UsersAction类的 Bean实例名usersAction。
8
20.1.4 DAO层开发
在项目s2sh中创建包com.restaurant.dao,在包中创建接口 UsersDAO,在UsersDAO接口中声明方法search,用于登录 验证 。 创建UsersDAO接口的实现类UsersDAOImpl,存放在 com.restaurant.dao.impl包中,实现search方法。

Struts2+Spring+Hibernate框架整合总结详细教程

Struts2+Spring+Hibernate框架整合总结详细教程

Struts2+Spring+Hibernate框架整合总结详细教程⼀.SSH三⼤框架知识总结 Struts 2是Struts的下⼀代产品,是在 struts 1和WebWork的技术基础上进⾏了合并的全新的Struts 2。

其全新的Struts 2的与Struts 1的体系结构差别巨⼤。

Struts 2以WebWork为核⼼,采⽤的机制来处理⽤户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。

虽然从Struts 1到Struts 2有着太⼤的,但是相对于WebWork,Struts 2的变化很⼩。

⼀ Struts2⼯作原理 在Struts2框架中的处理⼤概分为以下⼏个步骤 1 客户端初始化⼀个指向Servlet容器(例如Tomcat)的请求 2 这个请求经过⼀系列的过滤器(Filter)(这些过滤器中有⼀个叫做ActionContextCleanUp的可选过滤器, 这个过滤器对于Struts2和其他框架的集成很有帮助,例 如:SiteMesh Plugin) 3 接着FilterDispatcher被调⽤,FilterDispatcher询问ActionMapper来决定这个请求是否需要调⽤某个Action 4 如果ActionMapper决定需要调⽤某个Action,FilterDispatcher把请求的处理交给ActionProxy 5 ActionProxy通过Configuration Manager询问框架的配置⽂件,找到需要调⽤的Action类 6 ActionProxy创建⼀个ActionInvocation的实例。

7 ActionInvocation实例使⽤命名模式来调⽤,在调⽤Action的过程前后,涉及到相关拦截器(Intercepter)的调⽤。

8 ⼀旦Action执⾏完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。

谈谈对spring_hibernate_struts2的理解

谈谈对spring_hibernate_struts2的理解

面试的时候的一个问题,说得越详细越容易理解越好.我对spring的理解主要有反转控制和面向切面(AOP),面试题:说说你对spring的理解[此问题的推荐答案]spring: 1)是一种开源框架,实际上就是一种容器,是实现了IOC模式的容器,也可以说是一个Bean的工厂,对Bean进行管理。

2)IoC(控制反转),将类的创建和依赖关系写在配置文件里,由配置文件注入,实现了松耦合3)AOP 将安全,事务,log等公共的服务对于程序逻辑相对独立的功能抽取出来,利用spring的配置文件将这些功能插进去,让程序员更专注于业务逻辑的实现,实现了按照方面编程,提高了可维护性和复用性4) ApplicationContext:spring上下文信息,5) Spring DAO6)spring ORM:可以集成多个ORM框架,像Hibernate,Ibatis,JDO,7)spring Web模块,与struts的集成。

8)spring MVCspring容器的接口分级设计。

IoC和AOP是spring最重要的两个特性,面试官差不多就看这个吧,至于spring mvc 之类的估计面试官不一定感兴趣介绍Spring的核心Spring的核心是个轻量级容器(container),实现了IoC(Inversion of Control)模式的容器,Spring 的目标是实现一个全方位的整合框架,在Spring框架下实现多个子框架的组合,这些子框架之间彼此可以独立,也可以使用其它的框架方案加以替代,Spring希望提供one-stop shop的框架整合方案。

Spring不会特別去提出一些子框架来与现有的OpenSource框架竞争,除非它觉得所提出的框架夠新夠好,例如Spring有自己的 MVC框架方案,因为它觉得现有的MVC方案有很多可以改进的地方,但它不强迫您使用它提供的方案,您可以选用您所希望的框架来取代其子框架,例如您仍可以在Spring中整合您的Struts框架。

ch12 Spring、Struts2、Hibernate整合

ch12 Spring、Struts2、Hibernate整合

如果系统采用Spring框架。Spring负责业务逻辑组件的创建 和生成,并可管理业务逻辑组件的生命周期。可以如此理解: Spring是个性能非常优秀的工厂,可以生产出所有的实例,从 业务逻辑组件,到持久层组件,甚至控制器。 控制器如何访问到Spring容器中的业务逻辑组件?为了让Action 访问Spring的业务逻辑组件,有两种策略: 1、Spring管理控制器,并利用依赖注入为控制器注入业务逻辑 组件。 2、控制器定位Spring工厂,也就是Spring的容器,从Spring容 器中取得所需的业务逻辑组件。 对于这两种策略,Spring与Struts2都提供了对应的整合实现。 Struts 2框架整合Spring很简单,整合的步骤参见课本。

Spring有3个作用:
◦ 允许Spring创建Action、Interceptor和Result ◦ 由Struts创建的对象能够被Spring装配 ◦ 如果没有使用Spring ObjectFactory,提供了两个拦截器 来自动装配action
SS2H三者整合代码比较多,初学者做起来很繁,其实如果理 解为什么要整合、整合所需要的包以及根据书中的配置文件模 板也不是很难。以后项目中就使用该配置文件模板。 整合基本步骤描述如下: 1、先向项目中加入Hibernate3.2+Spring2.支持,删除 hibernate.cfg.xml文件,修改applicationContext.xml文件的内容, 增加SessionFactory和dataSource的设置。 2、通过MyEclipse的向导方式,生成POJO类和对应的映射文件。 3、修改applicationContext.xml文件中<property name="mappingResources">元素的内容。 4、编写DAO接口和实现类。 5、修改applicationContext.xml文件,增加对Dao实现类的配置。

struts2+spring+hibernate整合时所需的jar包

struts2+spring+hibernate整合时所需的jar包

struts2+spring+hibernate整合时所需的jar包[java]view plaincopy1.1. //struts2核心包2.2. struts2-core-2.0.11.2.jar3.3.4.4. //struts2必须 (strust2 webwork的升级,webwork核心包)5.5. xwork-2.0.5.jar6.6.7.7. //struts2必须8.8. freemarker-2.3.8.jar9.9.10.10. //struts2必须11.11. ognl-2.6.11.jar12.12.13.13. //struts2整合Spring插件14.14. struts2-spring-plugin-2.0.11.2.jar15.15.16.16. //Spring整体包17.17. spring.jar18.18.19.19. //Hibernate必须使用,注意此包是包含全部的。

20.20. hibernate3.jar21.21.22.22. //如果使用C3P0数据源实现数据库连接23.23. c3p0-0.9.0.4.jar24.24.25.25. //Mysql JDBC驱动26.26. mysql-connector.jar27.27.28.28. //如果不用,启动时不会出错,但使用Dwr时,会抛出异常:ng.NoClassDefFoundError: antlr/ANTLRException29.29. antlr-2.7.2.jar30.30.31.31. //如果不用此包,在启动时会抛出: nested exception is ng.NoClassDefFoundError: org/o bjectweb/asm/Type32.32. asm.jar33.33.34.34.35.35. //如果不用此包,在启动时抛出:nested exception is ng.NoClassDefFoundError: net/sf/cgli b/proxy/CallbackFilter36.36. cglib-2.1.3.jar37.37.38.38. //如果不用此包,在启动时抛出:nested exception is ng.NoClassDefFoundError: org/apach e/commons/collections/SequencedHashMap39.39. commons-collections-3.1.jar40.40.41.41. //这个似乎可以不用的(用于上传下载)42.42. commons-fileupload-1.2.1.jar43.43.44.44. //这个就不用说啦,几乎所有框架都要使用的45.45. commons-logging-1.0.4.jar46.46.47.47. //如果不用此包会抛出:ng.NoClassDefFoundError:org/dom4j/DocumentException48.48. dom4j-1.6.1.jar49.49.50.50. //dwr必须51.51. dwr.jar52.52.53.53.54.54. //不用此包,在启动时抛出:ng.NoClassDefFoundError:javax/transaction/TransactionM anager55.55. jta.jar56.56.57.57. //如果想用junit测试,必须。

Struts2、Hibernate和Spring整合应用

Struts2、Hibernate和Spring整合应用

8
6.3 添加Spring开发
₪ 在添加Spring开发能力之前先介绍如何自定义User Labraries。右击项目名xscjManage,选择【Build Path】 →【Configure Build Path】菜单项,出现如图6.2所示的 对话框。
图6.2 Properties for xscjManage对话框
17
6.4 实现Hibernate持久层
₪ Kcb.java文件代码如下:
private String kch; private String kcm; private Short kxxq; private Short xs; private int xf; …… //课程号 //课程名 //开学学期 //学时 //学分
₪ Kcb.hbm.xml
<hibernate-mapping> <class name="org.model.Kcb" table="KCB" schema="dbo" catalog="XSCJ"> <id name="kch" type="ng.String"> <column name="KCH" length="4" /> <generator class="assigned" /> </id> <property name="kcm" type="ng.String"> <column name="KCM" length="16" /> </property> <property name="kxxq" type="ng.Short"> <column name="KXXQ" /> </property> <property name="xs" type="ng.Short"> <column name="XS" /> </property> <property name="xf" type="ng.Integer"> <column name="XF" /> </property> </class> </hibernate-mapping>

struts2_spring_hibernate

struts2_spring_hibernate

一、填空:1.Struts 2以__过滤器__为核心,采用__拦截器__的机制来处理用户的请求。

2.构建Struts 2应用的最基础的几个类库是_struts2-core__、_commons-logging_、_xwork-core_、__freamarker___以及_ognl_。

3.Struts 2中的控制器类是一个普通的_POJO_。

4.如果要在JSP页面中使用Struts 2提供的标签库,首先必须在页面中使用taglib编译指令导入标签库,其中taglib编译指令为_____<%@ taglib prefix=”s” uri=”strut-tags”%>______。

5.在Struts 2表单标签库中,表单标签为_____<s:form/>_____。

6.ActionSupport类实现了__action_________接口和___validateable________等接口。

7.通过控制器类中的____validate()_______方法来输出校验错误信息。

8. 在Hibernate XML影射文件中描述主键生成机制,其属性描述了主键的生成策略,至少写出三种策略名increment 、native 、uuid 。

9. 在Hibernate中级联操作的属性值至少写出三个____none_______ 、_____save-update______、____all_______。

10 Hibernate的会话接口是______Session接口_____,它由接口__SessionFactory接口__创建;Hibernate处理事务的接口是____Transaction接口_______;封装HQL的接口是_____Criteria接口______ 。

21 注入资源的注释是____@Resource ___二、选择:1) 在三层结构中,数据访问层承担的责任是(B)〔选一项〕a) 定义实体类b) 数据的增删改查操作c) 业务逻辑的描述d) 页面展示和控制转发3) 下面关于Hibernate的说法,错误的是(C)〔选择一项〕a) Hibernate是一个“对象-关系映射”的实现b) Hibernate是一种数据持久化技术c) Hibernate是JDBC的替代技术d) 使用Hibernate可以简化持久化层的编码4) Hibernate配置文件中,不包含下面的(AB)〔选择二项〕a) “对象-关系映射”信息b) 实体间关联的配置c) show_sql等参数的配置d) 数据库连接信息5) 在使用了Hibernate的系统中,要想在删除某个客户数据的同时删除该客户对应的所有订单数据,下面方法可行的是(B。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、填空:1.Struts 2以__过滤器__为核心,采用__拦截器__的机制来处理用户的请求。

2.构建Struts 2应用的最基础的几个类库是_struts2-core__、_commons-logging_、_xwork-core_、__freamarker___以及_ognl_。

3.Struts 2中的控制器类是一个普通的_POJO_。

4.如果要在JSP页面中使用Struts 2提供的标签库,首先必须在页面中使用taglib编译指令导入标签库,其中taglib编译指令为_____<%@ taglib prefix=”s” uri=”strut-tags”%>______。

5.在Struts 2表单标签库中,表单标签为_____<s:form/>_____。

6.ActionSupport类实现了__action_________接口和___validateable________等接口。

7.通过控制器类中的____validate()_______方法来输出校验错误信息。

8. 在Hibernate XML影射文件中描述主键生成机制,其属性描述了主键的生成策略,至少写出三种策略名increment 、native 、uuid 。

9. 在Hibernate中级联操作的属性值至少写出三个____none_______ 、_____save-update______、____all_______。

10 Hibernate的会话接口是______Session接口_____,它由接口__SessionFactory接口__创建;Hibernate处理事务的接口是____Transaction接口_______;封装HQL的接口是_____Criteria接口______ 。

21 注入资源的注释是____@Resource ___二、选择:1) 在三层结构中,数据访问层承担的责任是(B)〔选一项〕a) 定义实体类b) 数据的增删改查操作c) 业务逻辑的描述d) 页面展示和控制转发3) 下面关于Hibernate的说法,错误的是(C)〔选择一项〕a) Hibernate是一个“对象-关系映射”的实现b) Hibernate是一种数据持久化技术c) Hibernate是JDBC的替代技术d) 使用Hibernate可以简化持久化层的编码4) Hibernate配置文件中,不包含下面的(AB)〔选择二项〕a) “对象-关系映射”信息b) 实体间关联的配置c) show_sql等参数的配置d) 数据库连接信息5) 在使用了Hibernate的系统中,要想在删除某个客户数据的同时删除该客户对应的所有订单数据,下面方法可行的是(B。

〔选择一项〕a) 配置客户和订单关联的cascade属性为save-updateb) 配置客户和订单关联的cascade属性为allc) 在客户端使用lazy属性为trued) 在客户端使用lazy属性为false6) 执行下面的hql查询,关于返回值的说法,正确的是(B)。

select ername,eridfrom er uwhere u is not nulla) 语法错误,不能执行b) 返回一个类型为List的实例c) 返回一个数组d) 当返回结果只有一条时,返回一个数组7) 一般情况下,关系数据模型与对象模型之间有哪些匹配关系(ACD多选)a) 表对应类b) 记录对应对象c) 表的字段对应类的属性d) 表之间的参考关系对应类之间的依赖关系8) 以下关于SessionFactory的说法哪些正确?BCa) 对于每个数据库事务,应该创建一个SessionFactory对象b) 一个SessionFactory对象对应一个数据库存储源。

c) SessionFactory是重量级的对象,不应该随意创建。

如果系统中只有一个数据库存储源,只需要创建一个。

d) SessionFactory的load()方法用于加载持久化对象9) <set>元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade 属性应该取什么值?(D)〔选择一项〕a) noneb) savec) deleted) save-update10) 以下哪些属于Session的方法?ABDa) load()b) save()c) open()d) saveOrUpdate()11) 以下程序的打印结果是什么?Ctx = session.beginTransaction();Customer c1=(Customer)session.load(Customer.class,new Long(1));Customer c2=(Customer)session.load(Customer.class,new Long(1));System.out.println(c1==c2);mit();session.close();a) 运行出错,抛出异常b) 打印falsec) 打印trued) 编译出错12) 以下程序代码对Customer的name属性修改了两次:Btx = session.beginTransaction();Customer customer=(Customer)session.load(Customer.class,new Long(1));customer.setName(\"Jack\");customer.setName(\"Mike\");mit();执行以上程序,Hibernate需要向数据库提交几条update语句?(单选)a) 0b) 1c) 2d) 313) 在持久化层,对象分为哪些状态?(ACD多选)a) 瞬时(Transient)b) 新建(New)c) 脱管(Detached)d) 持久(Persistent)14) 对于以下程序,Customer对象在第几行变为持久化状态?(B单选)Customer customer=new Customer();customer.setName(\"Tom\");Session session1=sessionFactory.openSession();Transaction tx1 = session1.beginTransaction(); //line1session1.save(customer); //line2mit(); //line3session1.close(); //line4a) line1b) line2c) line3d) line415) 对于以下程序,Customer对象在第几行变为游离状态?(D单选)Customer customer=new Customer();customer.setName(\"Tom\");Session session1=sessionFactory.openSession();Transaction tx1 = session1.beginTransaction(); //line1session1.save(customer); //line2mit(); //line3session1.close(); //line4a) line1b) line2c) line3d) line416) 假设对Customer类的orders集合采用延迟检索策略,编译或运行以下程序,会出现什么情况(D单选)Session session=sessionFactory.openSession();tx = session.beginTransaction();Customer customer=(Customer)session.get(Customer.class,new Long(1));mit();session.close();Iterator orderIterator=customer.getOrders().iterator();a) 编译出错b) 编译通过,正常运行,不显示任何信息c) 编译通过,正常运行,并显示出结果d) 编译通过,但运行时抛出异常17) POJO是Aa) Plain Old Java Objectb) Programming Object Java Objectc) Page Old Java Objectd) Plain Object Java Old18) POJO的作用是ACa) 普通的Java对象映射数据库字段b) 数据访问c) 对象的赋值d) 保存客户端对象19) ORM是Aa) 对象关系映射b) 对象实体映射c) 数据传输对象d) 数据访问对象20) 常见的三层分别是ABCa) 应用层b) 业务逻辑层c) 数据访问层d) 通讯层21) 如果你已知某个实例的持久化标识,你可以使用Session的_____方法来获取它Aa) load()b) loadAll()c) getAllData()d) init()22) 如果你不能确定你要寻找的对象的持久化标识符,那么你需要使用查询,使用Session 的____方法Aa) createQuery()b) query()c) queryAll()d) queryObject()23) 使用Session的____会把对象的状态从数据库中移除Aa) delete()b) remove()c) clear()d) removeAll()24) 对原生SQL查询的控制是通过___接口进行的。

Aa) SQLQueryb) Sessionc) Listd) Query25) 下面不是Hibernate映射文件中包含的内容。

(AB选两项)a) 数据库连接信息b) Hibernate属性参数c) 主键生成策略?d) 属性数据类型26) 下面的程序执行后没有报错,但数据总保存不到数据库,最可能的原因是Epublic static void imain(String[] args){SessionFactory sf=new Configration().configure().buildSessionFactory();Session session=sf.openSession();Medal medal=new Medal();medal.setOwner(“totong”);medal.setType(“Gold medal”);session.save(user);session.close();}a) 配置文件配置有误b) 没有在配置文件中包含对映射文件的声明c) 配置文件配置有误d) 没有对持久化操作捕捉异常e) 没有事务管理27) 已知系统中的tbl_user表对应的实体类是User,下列HQL语句中正确的是(AD选两项)a) from Userb) select * from tbluserc) select User from Userd) from User u where u.uname=”15”28.不属于Action接口中定义的字符串常量的是______B_____。

相关文档
最新文档