zoukankan      html  css  js  c++  java
  • ssh框架简单搭建

    这里是个人对SSH框架搭建的一点心得,仅供新手,勿喷

    首先,搞清楚分层,

    视图层 --》 控制层  --》 业务层 --》 DAO层--》 持久层

    搭建的顺序是从后向前,搭建一点测试一点,免得都最后找错误太过于繁琐

    先搭建持久层,这里是hibernate框架接管

    1、建立javaBean对象(ElecText.jvav)
       属于持久层对象(PO对象)
       属性ID、名称、日期、备注
    2、创建映射文件ElecText.hbm.xml
       建立PO对象与数据库表Elec_Text的关联关系
    3、创建Hibernate.cfg.xml文件,配置连接数据库的信息

    4.写测试文件,是否搭建成功

    DAO层:

    这里掌管的是和数据库有关的CRUD方法,采用的是面向接口的方法,一个DAO类实现一个接口,通过接口

    使用方法

    业务层:

    ①先spring

    ②引jar

    ③编写beans.xml文件,放在src目录下

    ④测试spring是否能够工作

    ⑤加入hibernate

    ⑥因为是SSH,所以hibernatespring接管了hibernate.cfg.xml文件对象映射文件,sessionfactoryspring文件中配置即可

    ⑦在beans.xml文件中配置数据源  

    <!-- 配置数据源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
            <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://127.0.0.1:3306/elec"/>
            <property name="username" value="root"/>
            <property name="password" value="123456"/>        
             <!-- 连接池启动时的初始值 -->
            <property name="initialSize" value="30"/>
             <!-- 连接池的最大值 -->
             <property name="maxActive" value="500"/> 
             <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->
            <property name="maxIdle" value="2"/>
            <!--  最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
            <property name="minIdle" value="1"/>
    </bean>

    这里也能够全部交给hibernate.cfg.xml来进行配置 

    <?xml version="1.0" encoding="UTF-8"?> 
    <beans xmlns="http://www.springframework.org/schema/beans"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:context="http://www.springframework.org/schema/context"
            xmlns:tx="http://www.springframework.org/schema/tx"
            xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
                    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd 
                    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> 
    
    
    
    <!-- 1配置注解的自动扫描范围 -->
    <context:component-scan base-package="cn.itcast.elec"></context:component-scan>  
    <!-- 2配置数据源-->
    <!--3 创建sessionfactory工厂-->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
    <property name="configLocation"> 
      <value>
      classpath:hibernate.cfg.xml
      </value> 
    </property> 
    </bean> 
    <!--4 事物管理器-->
    <bean id="txManage" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
        <property name="sessionFactory" ref="sessionFactory"> 
    </property> 
    </bean> 
    <!--5 以注解的 形式管理事物-->
    <tx:annotation-driven transaction-manager="txManage" />  
    
    <!-- 配置自己的sessionfactory工厂,模拟模板的机能实现 -->
    
    <bean id="ElecText_impl" class="cn.itcast.elec.impl.ElecText_impl"> 
        <property name="sessionFactory" ref="sessionFactory"> </property> 
    </bean> 
    
    </beans> 

    ⑧配置sessionfactory工厂

    <!--3 创建sessionfactory工厂-->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
    <!-- 设置数据源 -->
    <property name="dataSource" ref="dataSource"/> 
    <property name="mappingResources">
    <!-- 接管hibernate的对象映射文件 -->
        <list>
            <value>cn/itcast/elec/domain/ElecText.hbm.xml</value>
        </list>
    </property> 
    <!-- hibernate的文件 -->
    <property name="hibernateProperties">
        <value>        <!-- SQL dialect -->
            hibernate.dialect =  org.hibernate.dialect.MySQL5Dialect
            hibernate.connection.autocommit = true
            hibernate.show_sql = true
            hibernate.hbm2ddl.auto = update
        </value>
    </property>
    </bean> 

     ⑨编写domain对象和映射文件,然后进行简单的测试
    ⑩考虑分层  使用事务管理器统一管理事务

    <!--4 事物管理器-->
    <bean id="txManage" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
        <property name="sessionFactory" ref="sessionFactory"> 
    </property> 
    </bean> 
    <!--5 以注解的 形式管理事物-->
    <tx:annotation-driven transaction-manager="txManage" />

    启动事务注解

    @Transactional(readOnly=true)

     ⑩②在hibernate里面配置二级缓存

    ⑩③整合struts2 

    <1>引包

    <2>创建struts.xml,放在/WEB-INF目录下

    14.在初始化的struts的同时初始化spring容器

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

    <context-param>
    
       <param-name>contextConfigLocation</param-name>
    
       <param-value>classpath:beans.xml</param-value>
    
    </context-param>
    
    <!-- 对Spring容器进行实例化 -->
    
    <listener>
    
          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    
    </listener>

    通过获取spring容器实例

    HttpServletRequest request = ServletActionContext.getRequest(); 
    
    //通过预加载后对spring的容器进行获取
    
    WebApplicationContext app = WebApplicationContextUtils.
    
    getWebApplicationContext(request.getSession().getServletContext());

    通过上面的配置直接代替了下面的

    ApplicationContext app = new ClassPathXmlApplicationContext("beans.xml");

    14.spring接管struts组件

    <1>在struts.xml添加代码

    <!-- 配置代理请求处理 DelegatingRequestProcessor ,它的用户是 -->

    <controller>
    
      <set-property property="processorClass" value="org.springframework.web.struts.DelegatingRequestProcessor"/>
    
    </controller> 

    <2>beans.1中配置action

    <bean name="elecTextAction" class="cn.itcast.elec.action.Elect_Test_Action" /> 

    15.解决中文乱码问题

    1.自己配置过虐器

    2.使用spring框架提供的处理中文乱码的过虐器

    16.spring可以用注解的方式配置属性

    <1>在需要注入的属性加入@Resource 启动byname方式进行注入属性值

    <2><!-- 启动注解扫描 -->

    <context:annotation-config/>

  • 相关阅读:
    Loved
    什么是REST
    统一资源定位符URL(Uniform Resource Locator)
    HTTP工作原理
    系统程序员成长计划内存管理(一)
    系统程序员成长计划工程管理(四)
    系统程序员成长计划-内存管理(四)
    HTTP请求报文格式
    系统程序员成长计划内存管理(二)
    系统程序员成长计划-内存管理(三)
  • 原文地址:https://www.cnblogs.com/sunxun/p/4202284.html
Copyright © 2011-2022 走看看