您的位置:首页 > 其它

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

2013-12-30 20:34 295 查看
 
创建web项目

1,先搞定spring开发包

2,引入spring开发包

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

4,测试spring是否ok

5,加入hibernate开发包

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

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,测试spring和hibernate是否可以结合使用

 

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提供的包来完成过滤器的操作啊

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: