ssh,






下面给大家说一下关于java中ssh整合的详细步骤


关于我自己的理解,

1.我第一步先将hibernate先配置好,然后测试 看是否能够连接好数据库

 2.然后再整合hibernate和spring,再进行测试

 3.最后就是整合struts有关页面的数据提交,这样测试通过就代表ssh整合也就完成,框架也就搭好了,自然而然可以开始写你的项目了。下面说一下详细步骤


1.首先第一步肯定是创建spring项目(如果你的eclipse没有下载这种spring插件你得先下载,可以通过本地下载也可以通过网络下载,具体的先不说了),然后就要往你的pom.xml里面引入依赖,首先是引入servlet的依赖,在这里我引入的是4.0.0-b07的版本,然后再引入hibernate的依赖,在这里我引入的是5.2.10版本的,之后就是引用你数据库的依赖,这里我引用的是mysql(5.1.43)版本的,之后创建一个hibernate.cfg.xml文件,注意创建这个需要导入(hibernate插件)不过你手敲一些代码也是可以,创建好之后在<session-factory>里面写上 driver_class,url,password,username等属性,不过也可以勾选!这四个属性是必须的,还有我个人是喜欢将这两个属性写上:

 <property name="show_sql">true</property>
<property name = "format_sql">true</property>  方便找错,之后再<mapping resource="com/entity/User.hbm.xml"/>,读取的你的映射文件,这样去测试一下,测试成功代表的你的hibernate整合成功,第一步也就完成



2.第二步也是至关重要的一步:

首页得引入spring(spring-context)依赖,在这里我引用的是4.3.10.RELEASE版本
创建一个db.properties文件,也就是写连接数据库的一些东西,写上

driver_Class =com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/test
uname = root(最好不要写uers)
upass = root(最好不要谢password,会和后面起冲突)

这些东西,
initPoolSize = 3 (初始连接数)
maxPoolSize = 20(最大连接数),然后在创建一个applicationContext-public.xml文件,核心配置都在这里了,在这里又分为6个小步骤

步骤一:引入db.properties:<context:property-placeholder location="classpath:db.properties" />  将上面创建的文件引入到其中,对于<context>这个节点你可能打不出来,须在开头处配置一下:    xmlns:context="http://www.springframework.org/schema/context" 

xsi:schemaLocation=" http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd",也可以在创建spirng文件的时候勾选(下面的aop,tx节点也一样,只需将关键词改了就ok)

步骤二:配置数据源, 要引用C3PO中的ComboPooledDataSource类,也就是又要引入一个c3p0的依赖,在这里我引用的是 0.9.5.2版本

然后 就在里面读取db.properties的属性

  <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
         <!-- 读取db.properties中的值 -->
         <property name="user" value="${uname}"></property>
         <property name="password" value="${upass}"></property>
   <property name="jdbcUrl" value="${url}"></property>
   <property name="driverClass" value="${driver_Class}"></property>
   <property name="initialPoolSize" value="${initPoolSize}"></property>
   <property name="maxPoolSize" value="${maxPoolSize}"></property>
     </bean>

步骤三:配置sessionfactory,这里要引入一个关于整合 spring和hibernate的依赖

<dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-orm</artifactId>
   <version>4.3.10.RELEASE</version>
</dependency>   然后要引用LocalSessionFactoryBean这个类:


<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
   <!-- 3.1 引入数据源 -->
   <property name="dataSource" ref="dataSource"></property>


   <!-- 3.2 加载hibernate核心配置文件 (hibernate核心文件交给spring来加载)-->
   <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>


   <!-- 3.3 加载hibernate映射文件 -->
   <property name="mappingLocations" value="classpath:com/entity/*.hbm.xml"></property>
  
</bean>

  第三步结束,hibernate.cfg.xml这个文件基本可以删,关于  show_sql和format_sql也可以在第三步骤配置,就不多说了。


步骤四:配置事物:要引用 HibernateTransactionManager这个类


<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
   <property name="sessionFactory" ref="sessionFactory"></property>
</bean>
      

 步骤五: 

 <!-- 5. 配置事务的属性 -->  也就是你项目里面的dao方法,只要是有关增删改的方法都会帮你自定提交事物,但前提是其方法名必须是 以add,update,del(这些名字随意)这些开头,然后就会自动帮你提交事物。
    <tx:advice id="myAdvice"  transaction-manager="transactionManager">
   <tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="del*" propagation="REQUIRED"/>
<tx:method name="*"/>
   </tx:attributes>
</tx:advice>

步骤六: 

<!-- 6. 配置事务的切点 -->
<aop:config>
   <aop:pointcut expression="execution(* com.dao.*.*(..))" id="myCut"/>     这个表达是表示你整改项目里com.dao下面的所有类所有方法,里面两个..所代表参数

   <!--注意:需要再次引入一个依赖:spring-aspects,用于解析上面这个表达式-->         

   <aop:advisor advice-ref="myAdvice" pointcut-ref="myCut"/>
</aop:config>

 <!-- spring 的AspectJ依赖,解析事务切点 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aspects</artifactId>
    <version>4.3.10.RELEASE</version>
</dependency>

之后,再配置好你的dao(applicationContext-dao.xml)和biz(applicationContext-biz.xml),再进行测试,通过则代表你的第二步成功!



3.就是关于全部的整合了:先导入struts的核心包,最好把log4j日志依赖导进去,不然可能会报错。

首先创建页面表带的提交(我这里用一个添加做测试),一个action(applicationContext-action.xml)的数据接收,这时候往action里面配置一个 biz的接口,实现往数据库里添加数据。

再创建struts.xml文件,记住,class里面的写的action不再是action类的全限名,而是你配置action的名字。我这里就是 useraction

 <action name="user*" class="userAction" method="{1}">
                   <result name="success">/success.jsp</result>  
                <result name="false">/login.jsp</result>  
             </action>


之后在你的web.xm里面 加载struts配置文件,首先得引入spring和struts整合的依赖:

 <!-- struts2整合Spring的整合包 -->
<dependency>
   <groupId>org.apache.struts</groupId>
   <artifactId>struts2-spring-plugin</artifactId>
   <version>2.5.12</version>
</dependency>


然后再加载spring,再添加监听,请注意顺序,先加载spring,然后再是struts,再是监听:

  <!--加载Spring-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-*.xml</param-value>
</context-param>


<!-- 加载struts配置文件 -->
    <filter>
       <filter-name>struts21</filter-name>
       <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
   </filter>
    
   <filter-mapping>
       <filter-name>struts21</filter-name>
       <url-pattern>*.action</url-pattern>
   </filter-mapping>
   
  
   <!--添加监听-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>


再之后运行你的项目,成功添加即可。


关于ssh的用法,

SSH框架优势

1.    典型的三层构架体现MVC(模型Model,视图View和控制)思想,可以让开发人员减轻重新建立解决复杂问题方案的负担和精力。便于敏捷开发出新的需求,降低开发时间成本。
2.    良好的可扩展性,ssh主流技术有强大的用户社区支持它,所以该框架扩展性非常强,针对特殊应用时具有良好的可插拔性,避免大部分因技术问题不能实现的功能。
3.    良好的可维护性,业务系统经常会有新需求,三层构架因为逻辑层和展现层的合理分离,可使需求修改的风险降低到最低。随着新技术的流行或系统的老化,系统可能需要重构,ssh构架重构成功率要比其他构架高很多。
4.    优秀的解耦性,很少有软件产品的需求从一开始就完全是固定的。客户对软件需求,是随着软件开发过程的深入,不断明晰起来的。因此,常常遇到软件开发到一定程度时,由于客户对软件需求发生了变化,使得软件的实现不得不随之改变。ssh三层构架,控制层依赖于业务逻辑层,但绝不与任何具体的业务逻辑组件耦合,只与接口耦合;同样,业务逻辑层依赖于DAO层,也不会与任何具体的DAO组件耦合,而是面向接口编程。采用这种方式的软件实现,即使软件的部分发生改变,其他部分也不会改变。
5.    Struts2优势
a)      Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。
b)      Struts2强大的标签库提高开发效率。
c)      页面脉络清晰,通过查看配置文件把握整个系统的关系,方便开发人员岗位流动时的维护。
6.    hibernate优势
a)      hibernate是JDBC轻量级的封装,占用内存较少,性能比较高。与JDBC相比,如果开发JDBC的人员技术能力非常强,hibernate执行效率会比JDBC弱一些,但是大部分情况是程序员在使用JDBC时是不可能做到最高效率,hibernate可以帮大部分开发人员提高运行效率。
b)      可以引入第三方二级缓存,提高系统查询效率,减少系统里存在大量单例类(singleton),大量的单例类,会降低系统的可测试性和面向对象程度。
c)      优秀的orm框架,理论上节省开发人员95%的开发工作量。
d)      Hibernate兼容JDBC。理论上可以应用在任何使用JDBC的场景。
7.    spring优势
a)      spring提高了一种对象管理方法,有效的组织系统中间层对象。是框架的完美“粘合剂”。
b)      有利于面向接口编程习惯的养成,使代码结构清晰。


希望我的理解可以帮助一些小白白








相关内容

    暂无相关文章