一、Spring与Web项目整合
1)在Servlet中直接加载配置文件,获取对象。
这样做不好,每次请求都会创建一个Spring工厂,这样浪费服务器资源,应该一个项目只有一个工厂。在服务器启动时,创建一个Spring工厂,创建完工厂,将这个工厂类保存到ServletContext里面。每次从ServletContext中获取。
解决方案:使用spring核心监听器ContextLoaderContext
1.引入jar包,Spring-web.war
2.配置监听器:在web.xml下配置
<!--加载Spring的配置文件的路径的,默认加载的/WEB-INf/applicationContext.xml--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!--Spring的核心监听器--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
3.直接在Action中获取工厂。
将对象交给Spring管理
直接从ServletContext中获取工厂,从而获得被Spring管理的对象。
二、SSH整合
1.引入jar包
2.引入配置文件
2.1struts:配置核心过滤器,配置struts.xml,创建Action类
核心过滤器
struts.xml
action类
jsp
创建domain类:其中字段名与jsp表单的name对应
采用模型驱动方式获取参数:
2.2引入Spring
web.xml中配置核心监听器,从而在服务器启动时,将创建的Spring工厂存入ServletContext
引入application.xml文件,同时将service层实现类交给Spring管理
在web层调用Spring工厂
也可以通过导入jar包方式获取工厂:
3.创建包结构
4.创建相关类
5.创建业务层,把业务层交给Spring管理
6.Spring整合struts2
将action交给Spring管理,本来action在strut.xml中进行配置的,但交给Spring进行配置可以进行AOP增强,且方便管理。
7.创建Dao交给Spring管理
创建dao接口,dao实现类
将dao实现类交给Spring管理
8.在业务中注入dao
9.Spring整合Hibernate框架
将Account.hbm.xml引入domain文件夹下,并与表做字段对应
引入jar包:
将数据库配置文件引入
另外写一个hibernateApplicationContext.xml
在其中写入hibernate相关配置,并在主的applicationContext中引入
<!--配置Hibernate--> <!--加载属性文件--> <context:property-placeholder location="classpath:jdbc.properties"/> <!--连接池--> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <!--属性文件中的名称不能和name值一样--> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> <!--Spring整合Hibernate--> <!--引入Hibernate配置信息,前提是导入Spring.orm的jar包--> <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> <!--注入连接池--> <property name="dataSource" ref="dataSource"/> <!--配置Hibernate相关属性--> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop><!--声明使用mysql数据库语言格式,中间要加5--> <prop key="hibernate.show_sql">true</prop><!--生成sql后进行打印--> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="current_session_context_class">thread</prop><!--允许SessionFactory中可以调用getCurrentSession()方法获取当前线程的session--> </props> </property> <!--设置映射文件--> <property name="mappingResources"> <list> <value>com/ual/domain/Account.hbm.xml</value> </list> </property> </bean>
想要使用Hibernate的dao类继承HibernateDaoSupport这个类,
在applicationContext.xml的dao层管理中注入sessionFactory,在注入sessionFactory时,内部自动帮你创建了模板
后面引入的sessionFactory是HibernateApplicationContext中已经声明好的。
直接在dao类中这样获取模板就可以了。
在HIbernateApplicationContext中开启事务
在类上添加注解