ssh(struts+spring+hibernate)框架组合一般步骤顺序:
1.创建web项目引入相应的Spring开发包,创建Spring配置文件applicationContext.xml文件,测试Spring配置是否成功
2.在项目中引入相应的hibernate开发包,hibernate配置文件hibernate.cfg.xml文件、对象映射文件*.hbm.xml文件以及SessionFactory在Spring配置文件applicationContext.xml中配置
3.在applicationContext.xml文件中配置数据源:
<!-- 配置数据源 -->
<bean id="实例化数据源的名" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="数据源销毁方法名">
<property name="driverClassName" value="数据库驱动" />
<property name="url" value="数据库连接的url" />
<property name="username" value="用户名" />
<property name="password" value="密码" />
<!-- 连接池启动时的初始值 -->
<property name="initialSize" value="连接池启动时的初始连接数" />
<!-- 连接池的最大值 -->
<property name="maxActive" value="连接池最大连接数(最大并发量一般设置为500,在线人数一般是并发量乘以50)" />
<!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->
<property name="maxIdle" value="最大空闲数" />
<!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
<property name="minIdle" value="最小空闲数" />
</bean>
4. 在applicationContext.xml文件中配置会话工厂SessionFactory:
<bean id="实例化会话工厂名" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="实例化的数据源的名" />
<property name="mappingResources">
<list>
[<value>*.hbm.xml(对象映射文件,包含包名路径)</value>]
</list>
</property>
<property name="hibernateProperties">(hibernate.cfg.xml中对hibernate的配置)
<value>[hibernate.属性=属性值]</value>
</property>
</bean>
5.创建数据域类(domain)和映射文件*.hbm.xml测试Spring和hibernate的结合配置是否成功
6.配置事务管理器统一管理SessionFactory的事务和二级缓存
<bean id="实例化事务处理名" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="实例化会话工厂名" />
</bean>
<tx:annotation-driven transaction-manager="实例化事务处理名"/>(启用事务注解,在类或者方法名前一行添加@Transactional,Spring会管理类中所有方法的事务或者指定方法的事务)
7.引入struts开发包,创建struts配置文件struts-config.xml并进行相应配置,一般放在/WEB-INF目录下,在web.xml文件中指定struts的配置文件和指定spring的配置文件,tomcat服务器在加载web.xml文件时会根据web.xml文件中的配置实例化struts和spring即tomcat服务器管理struts和spring容器
web.xml文件中指定Spring的配置文件:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:Spring配置文件名(包含路径,默认web根目录即src目录)</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>(对Spring容器进行实例化)
在web.xml文件中指定了Spring的配置文件,但Spring没有管理struts时,在struts控制器中可以通过WebApplicationContext 名称=WebApplicationContextUtils.getWebApplicationContext(this.getServlet().getServletContext());直接获得Spring容器即Spring的ApplicationContext
8.在spring配置文件applicationContext.xml中配置struts即控制器action的配置:
<bean name="网址访问的资源名称一般是(/资源名)" class="指定控制器类的路径(包含包名)"></bean>
在struts配置文件中加入与spring关联的配置:
<controller>
<set-property property="processorClass" value="org.springframework.web.struts.DelegatingRequestProcessor" />
</controller>
Spring管理struts后可以通过设置spring配置文件applicationContext.xml中bean标签的scope属性解决action是单例的问题
9. 配置过滤器解决中文乱码问题:
在web.xml文件中指定自定义过滤器或者在web.xml文件中指定Spring框架提供的处理中文乱码的过滤器:
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
在applicationContext.xml文件中配置启用注解组件扫描:
<context:annotation-config></context:annotation-config>
在指定的类属性的前一行添加@Resource注解表示Spring会根据名称匹配方式给指定的类属性赋值初始化
在指定的控制器类的前一行添加@Controller注解表示Spring会根据名称匹配方式给指定的控制器类初始化
在指定的服务类的前一行添加@Service注解表示Spring会根据名称匹配方式给指定的服务类初始化
完全自动注入使用所有注解即(@Resource,@Controller,@Service)需要在applicationContext.xml文件中配置注解组件扫描:<context:component-scan base-package="扫描的包名(即控制器服务类所在的包)"></context:component-scan>
在web.xml文件中配置Spring提供的OpenSessionInViewFilter过滤器的方法解决延时加载
<filter>
<filter-name>OpenSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>OpenSessionInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Sns系统(社会化网络系统)
struts(1.3.8)+spring(2.5.6)+hibernate(3.3.1)编译环境和运行环境一致
mysql 通过txt文件批量导入到指定表中数据命令:LOAD DATA LOCAL INFILE 'D:\\data.txt(文件路径,全路径)' INTO TABLE 表名(mysql数据库中的表名) FIELDS TERMINATED BY '\t';
eclipse使用hibernate插件生成实体类以及对象映射文件时,连接的数据库不能又大写的英文字母,否则生成的实体类以及对象映射文件没有关联关系