ssh整合步骤 只是大体介绍一下

本文详细介绍Spring、Hibernate和Struts框架的整合过程,包括环境搭建、配置文件编写、数据源及SessionFactory配置、事务管理器设置、Struts整合等内容。

 

创建web项目

1,先搞定spring开发包

2,引入spring开发包

3,编写applicationContext.xml文件,先放在src目录下

4,测试spring是否ok

5,加入hibernate开发包

6,因为我们是ssh,所以我们hibernate的核心,就被spring接管了hibernate.cfg.xml文件对象映射文件,SessionFactoryspring文件中配置即可。

7,配置数据源


 

<!--配置数据源-->

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close()">

<property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>

<property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=HiberateProgram"/>

<property name="username" value="sa"/>

<property name="password" value="258005"/>

<!--连接池启动时的初始值  -->

<property name="initialSize" value="3"/>

<!--连接池的最大值  -->

<property name="maxActive" value="500"/>

<!--最大空闲值,当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,,一直减少到maxidel为止  -->

<property name="maxIdle" value="2"/>

<!--最小空闲值,当空闲的连接数少于阈值时,连接池就会预申请一些连接,以免洪峰是来不及申请  -->

<property name="minIdle" value="1"/>

</bean>

 

 

8,配置SessionFactory对象,后边还有优化

 

<!--配置会话工厂  -->                

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

<!--设置数据源 -->

<property name="dataSource" ref="dataSource"/>规定好的

<!--接管了hibernate对象映射文件  -->

<property name="mappingResources">

<list>

<!--对象关系映射文件存放在这里  -->

<value>com/hanqing/domain/Employee.hbm.xml</value>

</list>

</property>

<property name="hibernateProperties">

<value>

hibernate.dialect=org.hibernate.dialect.SQLServerDialect

hibernate.hbm 2ddl.auto=update

hibernate.show_sql=false

hibernate.format_sql=false

</value>

</property>

</bean>

 

9,编写domain对象(Employee)和我们的映射文件(Employee.hbm.xml)

 

public class Employee {

private Integer id;

private String name;

private String email;

private java.util.Date hiredate;

private float salary;

 

set/get方法。。。。。。。。。。

}

 

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE hibernate-mapping PUBLIC

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

 

<hibernate-mapping package="com.hanqing.domain">

<class name="Employee">name表示的是类名

<id name="id" type="java.lang.Integer">

<!--会根据你底层的数据库,自动的帮你选择identity,hilo,sqeuence其中的一种数据库适配器中的定义  -->

 

 

<generator class="native"></generator>

</id>

<property name="name" type="java.lang.String">

<column name="name" length="64"/>

</property>

<property name="email" type="java.lang.String">

<column name="email"/>

</property>

<property name="hiredate" type="java.util.Date">

<column name="hiredate"/>

</property>

<property name="salary" type="java.lang.Float">

<column name="salary"/>

</property>

</class>

</hibernate-mapping>

 

 

10,测试springhibernate是否可以结合使用

 

11,考虑分层开发

 

我们编写一个EmployeeServiceInter接口,里边实现各种方法

然后我们写一个EmployeeService实现该接口,并在我们的EmployeeService这个类中定义一个SessionFactory对象

之后,我们在我们的applicationContext.xml当中配置一个bean,含有SessionFactory对象,然后我们在EmployeeService当中就可以自动的进行操作了

 

12,不合理的地方

          我们对雇员的操作每次都有事务,能不能把我们的事务单独的拿出来呢。

 

13,使用事务管理器来统一管理

 

配置我们的事务管理器,统一管理SessionFactory的事务

 

首先配置我们的事务管理器,并启用它

 

<!--配置我们的事务管理器,name是规定好的,统一管理sessionFactory的事务 ,我们把SessionFactory交给一下的部分来处理 -->

<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

<property name="sessionFactory" ref="sessionFactory"></property>

</bean>                

<!--启用事务注解,如何让事务管理器来管理我们的事务-->

<tx:annotation-driven transaction-manager="txManager"/>

 

还需要在我们事务管理的类或者方法前边加上注解

此时,我们在方法当中就可以这样使用了

 

14,整合Struts

 

1,引入开发包

2,创建struts.xml一般放在我们的src目录下

该文件的标头部分如下

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

    "http://struts.apache.org/dtds/struts-2.0.dtd">

 

3,配置我们的web.xml文件。

                

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5"

xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  <welcome-file-list>

    <welcome-file>index.jsp</welcome-file>

  </welcome-file-list>

  <filter>

        <filter-name>struts2</filter-name>

        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

    </filter>

 

    <filter-mapping>

        <filter-name>struts2</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

 

</web-app>

 

15 web.xml当中配置,让我们在启动tomcat的时候实例化spring容器

 

  <!--指定spring的配置文件,默认从web根目录寻找配置文件,我们可以通过spring提供给的classpath:前缀指定从类路径下寻找  -->

    <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>

   

配置完这句话之后,启动tomcat之后,就会将spring当中的对象加入内存当中

实例化。在我们还没有调用的时候,就已经有了。

这样我们直接取出来就行了,而不用再调用

 


 

以前没有配置之前的获取方式

ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");

EmployeeServiceInter esi=(EmployeeServiceInter)ac.getBean("employeeServiceImp");

现在配置完之后的获取方式(可以直接获取spring容器)

 

下一步,让spring接管我们的struts

 



Cannot locate the chosen ObjectFactory implementation: spring - [unknown location]

 

这是因为没有加入struts2-spring-plugin-2.1.6.jar

 

 

1,在struts.xml文件当中,添加如下的代码配置

       

class指向的是spring容器当中的一个Bean,id

只要我们导入了struts2-spring-plugin-2.1.6.jar就自动的到这里边去找

 

 


 

scope="prototype"request也行表示请求一次实例化一次

这样保证了线程安全

singlton

request

session

gobal session

 

通过这种方式,我们在loginAction当中的属性就可以直接通过set方法来获取了。

 

解决Struts中文乱码的问题

1,自己配置过滤器

首先建一个com.hanqing.web.filter的包

新建一个servlet

import javax.servlet.Filter;


在我们的web.xml当中添加如下配置

 

<!--配置中文乱码的过滤器  -->

<filter>

<filter-name>EncodingFilter</filter-name>

<filter-class>com.hanqing.web.EncodingFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>EncodingFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

 

 

2,使用spring提供的包来完成过滤器的操作啊

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值