调查管理系统 -(1)环境搭建

一、官方简介

Java视频教程为数据采集系统,主要面向市场,灵活定制各种市场调查,收集用户的反馈信息,供企业和个人对最终的决策提供数据支持。系统集成jfreechart插件,可生成各种类型的图表以及采用poi导出原始数据,形成excle。采用深度复制技术,可方便进行对象图全复制以及数据的移植。采用cxf引擎,将统计服务公开成WebService,与第三方系统无缝整合。通过对service进行缓存,大量降低数据库负载,提高性能。

二、核心技术回顾

SSH:Struts2 Spring Hibernate.

1)Struts2:开发Web程序的框架,是更加整洁的MVC结构。具有以下主要特点:

  Ⅰ、分离关注:拦截器(AOP编程的体现);Struts2将处理数据的逻辑和处理业务的逻辑分配到2个不同的执行阶段。是我们对代码逻辑的关注点更为清晰。参:陆舟《Struts2技术内幕》

  Ⅱ、Action是原型对象,保证线程安全性;

  Ⅲ、耦合度低:和原生的servlet api,和自己编写的代码耦合度低。

2)Hibernate:持久化技术,替代JDBC,封装了数据的访问细节,体现了oop的思想。
3)Spring:业务层框架,管理bean。其核心理念如下:

  Ⅰ 、IOC:Inverse of Control,反转控制.

  Ⅱ、AOP:Aspect Oriented Program,不改变源代码,还给类增加新的功能,是对oop进行增强。
    AOP的本质是代理。

  Ⅲ、Sping切面具有的5种类型的通知:前置、后置、环绕(如事务管理的应用)、异常、引入。

4)在将三大框架整合后,系统通常划分为四层,即:表现层(Struts2)、业务层(Service)、数据访问层(DAO)、持久化层(Hibernate),而Spring的作用则是将各个层次整合到一起。(注:关于分层问题以及MVC有很多不同的说法,能在不同场合下大概的明白就行了。)

三、环境搭建

1)新建工程,类型为Web Project,设置默认编码为UTF-8

2)创建如下文件夹:

  Ⅰ 、Source Folder
    ① src     项目源码
    ② conf   配置文件
    ③ test   单元测试
  Ⅱ、普通文件夹
    ① WebRoot/style                css与图片等文件
    ② WebRoot/script               js脚本文件
    ③ WebRoot/WEB-INF/jsp    jsp页面文件

2)创建包结构(包结构是软件分层的一种体现)

① 实体:

com.atguigu.surveypark.model(实体)

② DAO:

com.atguigu.surveypark.dao (DAO接口)

com.atguigu.surveypark.dao.impl (DAO实现类)

③ Service:

com.atguigu.surveypark.service(Service接口)

com.atguigu.surveypark.service.impl(Service实现类)

④ View(Struts2):

com.atguigu.surveypark.struts2.action (Struts2的Action类)

⑤ 其它:

com.atguigu.surveypark.util (工具类)

....

3)引入类库(MyEclipse:放在 WebRoot/WEB-INF/lib/ 下;Eclipse:放在 WebContent/WEB-INF/lib/ 下) 

[环境]

  JDK_1.7、JavaEE_5.0

[struts2]:添加 ${Struts2_Home}/apps/struts2-blank-version.war/WEB-INF/lib/*.jar

asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-fileupload-1.3.jar
commons-io-2.0.1.jar
commons-lang3-3.1.jar
commons-logging-1.1.3.jar
freemarker-2.3.19.jar
javassist-3.11.0.GA.jar
log4j-1.2.17.jar
ognl-3.0.6.jar
struts2-core-2.3.15.1.jar
xwork-core-2.3.15.1.jar

[hibernate]

antlr-2.7.7.jar
hibernate-commons-annotations-4.0.2.Final.jar
hibernate-core-4.2.3.Final.jar
hibernate-entitymanager-4.2.3.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
javassist-3.15.0-GA.jar (Struts2中也有该包,因此只保留较高版本的)
hibernate-ehcache-4.2.3.Final.jar

[spring]

org.springframework.aop-3.1.0.CI-1162.jar
org.springframework.asm-3.1.0.CI-1162.jar
org.springframework.aspects-3.1.0.CI-1162.jar
org.springframework.beans-3.1.0.CI-1162.jar
org.springframework.context-3.1.0.CI-1162.jar
org.springframework.context.support-3.1.0.CI-1162.jar
org.springframework.core-3.1.0.CI-1162.jar
org.springframework.expression-3.1.0.CI-1162.jar
org.springframework.jdbc-3.1.0.CI-1162.jar
org.springframework.orm-3.1.0.CI-1162.jar
org.springframework.transaction-3.1.0.CI-1162.jar
org.springframework.web-3.1.0.CI-1162.jar

com.springsource.net.sf.cglib-2.2.0.jar
com.springsource.org.aopalliance-1.0.0.jar
com.springsource.org.aspectj.tools-1.6.6.RELEASE.jar
com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar

[struts2-spring插件]:${Struts2_Home}/lib/struts2-spring-plugin-version.jar

struts2-spring-plugin-2.3.15.1.jar

[数据源]

com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar

[驱动程序]

mysql-connector-java-5.0.8-bin.jar

[Junit]:junit-version.jar(一般为IDE内置的)

  junit-4.4.jar

 提示:注意不要发生jar包冲突的问题。

4)配置文件(除web.xml外,都放在源码文件夹 conf/ 下)

  Ⅰ、[struts2 + web]的配置文件:

    ① 在 web.xml 中配置Struts2的Filter:

<!-- 配置Struts2的过滤器 -->
<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>

    ② [config/struts.xml] 配置struts.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <!-- 设置开发模式 -->
    <constant name="struts.devMode" value="true" />
    <!-- 把action扩展名配置为action -->
    <constant name="struts.action.extension" value="action" />
    <!-- 指定主题使用simple(默认值为xhtml) -->
    <constant name="struts.ui.theme" value="simple" />

    <!-- 可以把相关的action都放在一个package中,以便于管理,形成模块 -->
    <package name="surveyparkPkg" extends="struts-default" namespace="/">

    </package>
</struts>

Ⅱ、[config/hibernate.cfg.xml] 配置Hibernate:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- 方言 -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
        <!-- 其他配置 -->
        <property name="hibernate.hbm2ddl.auto">update</property>
        <property name="hibernate.show_sql">true</property>
    </session-factory>
</hibernate-configuration><!--说明:在这里不配置数据库连接信息,是在后面Spring中整合Hibernate时配置的(配置c3p0数据库连接池)。-->

Ⅲ、[config/beans.xml]配置Spring:

<?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:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:cache="http://www.springframework.org/schema/cache"
    xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
    <!-- 基于注解,自动扫描与装配bean,指定到具体的包可以加快Spring的扫描速度 -->
    <context:component-scan base-package="com.atguigu.surveypark.dao.impl,com.atguigu.surveypark.service.impl,com.atguigu.surveypark.listener,com.atguigu.surveypark.struts2.action" />

    <!-- 分散配置:“属性占位符”扫描(即加载外部的properties配置文件) -->
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!-- 配置数据源 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">     <!-- 数据库连接信息 -->
        <property name="driverClass" value="${jdbc.driverclass}" />
        <property name="jdbcUrl" value="${jdbc.url}" />
        <property name="user" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
        <!-- 池化信息 -->
        <property name="maxPoolSize" value="${c3p0.pool.size.max}" />
        <property name="minPoolSize" value="${c3p0.pool.size.min}" />
        <property name="initialPoolSize" value="${c3p0.pool.size.ini}" />
        <property name="acquireIncrement" value="${c3p0.pool.size.increment}" />
    </bean>
</beans>
<!--注:以上Spring的名空间并不是都需要加进来,只需根据需要加入相应的即可-->
jdbc.properties配置文件的内容:
    jdbc.driverclass=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://locallhost:3306/lsn_surveypark001
    jdbc.username=root
    jdbc.password=root

    c3p0.pool.size.max=10
    c3p0.pool.size.min=2
    c3p0.pool.size.ini=3
    c3p0.pool.size.increment=2

5)测试数据源:

 1 package com.atguigu.surveypark.test;
 2 import java.sql.SQLException;
 3 import javax.sql.DataSource;
 4 import org.junit.Test;
 5 import org.springframework.context.ApplicationContext;
 6 import org.springframework.context.support.ClassPathXmlApplicationContext;
 7
 8 public class TestDataSource {
 9     @Test
10     public void getConnection() throws SQLException{
11       ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
12       DataSource ds = (DataSource) ac.getBean("dataSource");
13       System.out.println(ds.getConnection());
14     }
15 }

四、整合SSH

1)集成 Spring 与 Hibernate:

Ⅰ 、配置:配置Session工厂及事务管理

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xmlns:aop="http://www.springframework.org/schema/aop"
 5     xmlns:context="http://www.springframework.org/schema/context"
 6     xmlns:tx="http://www.springframework.org/schema/tx"
 7     xmlns:cache="http://www.springframework.org/schema/cache"
 8     xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
 9         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
10         http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsd
11         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
12         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
13     <!-- 基于注解,自动扫描与装配bean,指定到具体的包可以加快Spring的扫描速度 -->
14     <context:component-scan base-package="com.atguigu.surveypark.dao.impl,com.atguigu.surveypark.service.impl,com.atguigu.surveypark.listener,com.atguigu.surveypark.struts2.action" />
15
16     <!-- 分散配置:“属性占位符”扫描(即加载外部的properties配置文件) -->
17     <context:property-placeholder location="classpath:jdbc.properties"/>
18
19     <!-- 配置数据源 -->
20     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
21         <property name="driverClass" value="${jdbc.driverclass}" />
22         <property name="jdbcUrl" value="${jdbc.url}" />
23         <property name="user" value="${jdbc.username}" />
24         <property name="password" value="${jdbc.password}" />
25
26         <property name="maxPoolSize" value="${c3p0.pool.size.max}" />
27         <property name="minPoolSize" value="${c3p0.pool.size.min}" />
28         <property name="initialPoolSize" value="${c3p0.pool.size.ini}" />
29         <property name="acquireIncrement" value="${c3p0.pool.size.increment}" />
30     </bean>
31
32     <!-- 本地回话工厂bean(spring整合hibernate的核心入口) -->
33     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
34         <property name="dataSource" ref="dataSource" />
35         <!--引入Hibernate的配置文件-->
36         <property name="configLocation" value="classpath:hibernate.cfg.xml" />
37         <!--映射目录位置集(可以配置多个):即指定Hibernate映射文件的目录的位置,之后Spring会自动扫描并载入所有的映射文件-->
38         <property name="mappingDirectoryLocations">
39             <list>
40                 <value>classpath:com/atguigu/surveypark/model</value>
41             </list>
42         </property>
43     </bean>
44
45     <!-- hibnerate事务管理器,用来在service层面上实现事务管理,而且达到平台无关性 -->
46     <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
47         <property name="sessionFactory" ref="sessionFactory" />
48     </bean>
49
50     <!-- 事务通知 -->
51     <tx:advice id="txAdvice" transaction-manager="txManager">
52         <tx:attributes>
53             <!-- 写操作 -->
54             <tx:method name="save*" propagation="REQUIRED" isolation="DEFAULT"/>
55             <tx:method name="update*" propagation="REQUIRED" isolation="DEFAULT"/>
56             <tx:method name="delete*" propagation="REQUIRED" isolation="DEFAULT"/>
57             <tx:method name="batch*" propagation="REQUIRED" isolation="DEFAULT"/>
58
59             <!-- 读操作 -->
60             <tx:method name="load*" propagation="REQUIRED" isolation="DEFAULT" read-only="true"/>
61             <tx:method name="get*" propagation="REQUIRED" isolation="DEFAULT" read-only="true"/>
62             <tx:method name="find*" propagation="REQUIRED" isolation="DEFAULT" read-only="true"/>
63
64             <tx:method name="*" propagation="REQUIRED" isolation="DEFAULT"/>
65         </tx:attributes>
66     </tx:advice>
67
68     <!-- aop配置 -->
69     <aop:config>
70         <aop:advisor advice-ref="txAdvice" pointcut="execution(* *..*Service.*(..))"/>
71     </aop:config>
72 </beans>

注:以上主要是添加了第32-71行的配置,用来整合Spring与Hibernate,并且添加了事务管理。在这里事务管理采用的是“声明式的事务管理”方式,除了配置事务管理器HibernateTransactionManager之外,还要配置AOP的事务通知相关内容。我们还可以使用“基于注解的事务管理”方式,其主要配置如下:

<!-- 配置声明式的事务管理器(采用基于注解的方式) -->
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- 配置基于注解的事务支持,指定特定的事务管理器-->
<tx:annotation-driven transaction-manager="txManager"/>

这样,就可以不必在Spring的配置文件中配置事务通知的相关内容,只需在相应的类上使用@Transactional注解即可。

Ⅱ、测试:插入用户

 1 package com.atguigu.surveypark.test;
 2 import java.sql.SQLException;
 3 import org.junit.BeforeClass;
 4 import org.junit.Test;
 5 import org.springframework.context.ApplicationContext;
 6 import org.springframework.context.support.ClassPathXmlApplicationContext;
 7 import com.atguigu.surveypark.model.User;
 8 import com.atguigu.surveypark.service.UserService;
 9
10 /**
11  * 测试UserService
12  */
13 public class TestUserService {
14     private static UserService us ;
15     @BeforeClass //在测试方法执行之前执行
16     public static void iniUserService(){
17         ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
18         us = (UserService) ac.getBean("userService");
19     }
20     /**
21      * 插入用户
22      */
23     @Test
24     public void insertUser() throws SQLException{
25         User u = new User();
26         u.setEmail("[email protected]");
27         u.setPassword("123456");
28         u.setNickName("stone");
29         us.saveEntity(u);
30     }
31 }

Ⅲ、在web.xml中配置 spring 的 OpenSessionInView 过滤器(解决抛LazyInitializationException的问题)

<!-- 配置 spring 的 OpenSessionInView 过滤器 -->
<filter>
    <filter-name>OpenSessionInView</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>OpenSessionInView</filter-name>
    <url-pattern>*.action</url-pattern>
</filter-mapping>

LazyInitializationException异常说明:
1,对于集合属性,默认是lazy="true"的,在第一次使用时才加载。
2,但在加载时,如果Session已经关掉了就会抛LazyInitializationException异常

2)集成 Spring 与 Struts2

Ⅰ、配置:在web.xml配置spring的监听器

<!-- 通过上下文参数配置spring文件的位置 -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:beans.xml</param-value>
</context-param>

<!-- 上下文载入器监听器,确保web服务器启动时,直接完成spring容器的初始化 -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

  注:项目lib中要有struts2-spring插件:struts2-spring-plugin-version.jar。

Ⅱ、测试(略)

  说明:

1,在写Action时要指定 @Controller 与 @Scope("prototype")注解
2,在struts.xml中配置action时,在class属性中写bean的名称。

注:以上总结内容来自徐培成数据采集系统和汤阳光OA系统。

时间: 2024-11-06 13:36:34

调查管理系统 -(1)环境搭建的相关文章

ICE分布式文件管理系统——ICE环境搭建(其二)

上一博文,我们讲述了ICE这个中间件的基本认识. 接下来我们讲述开发环境搭建. 其过程主要分为三步: 安装GCC-4.4.6.安装ICE-3.4.2.安装QT-4.7.3. (本文是基于LINUX下的ICE-3.4.2的安装,如果已安装了GCC(版本高于GCC-4.4.6亦可),请直接安装ICE) 一.安装GCC: (gcc各版本浏览地址:http://ftp.gnu.org/gnu/gcc/) 一般来说基于linux的操作系统都是默认安装了GCC的.假如说你的电脑没有的话 请百度一哈,可以解决

缺陷管理系统mantisbt环境搭建

mantisbt 搭载在lamp环境下 <VirtualHost *:8000> DocumentRoot "/data/mantisbt" </VirtualHost> cd /data unzip mantisbt-1.2.17.zip #建立数据库 浏览器输入 127.0.0.1:8000 数据库已经建立 administrator已经能登录(密码root )下一步修改配置文件 #修改配置文件 支持账号注册 密码修改 vim /data/mantisbt/

跟我一起,利用bitcms内容管理系统从0到1学习小程序开发:一、IIS下SSL环境搭建

缘起 1.从事互联网十来年了,一直想把自己的从事开发过程遇到的问题给写出来,分享给大家.可是可是这只是个种想法,想想之后就放下了,写出来的类文章是少之又少.古人说无志之人常立志,有志之人立长志.今天,就从学习小程序开始,记录在学习过程中的遇到点点滴滴,先做“无志之人常立志”吧. 强调的是,微信小程序开发,我也是从0到1的过程,肯定会有错误或遗漏,还望给指导指导,让我的学习知识更完善,再此先谢过了. 2.bitcms开源内容管理系统也发布了,运营对一个程序老猿来说,确实是个艰巨的任务.自己的想法很

企业级gitlab仓库环境搭建

目录: 1.gitlab简介 2.安装配置gitlab 2.1.实验环境介绍 2.2.更改仓库存储位置 2.3.开启https访问 2.4.启用SMTP服务 3.GitLab的基本使用 4.备份及恢复 5.总结 1.gitlab简介 GitLab 是一个用于仓库管理系统的开源项目.使用Git作为代码管理工具,并在此基础上搭建起来的web服务.GitLab拥有强大的功能,可实现git仓库管理,代码审查,问题跟踪,WIkI等功能,而且配合GitLab CI能更简单的实现持续集成和自动部署.GitLa

SSH框架总结(框架分析+环境搭建+实例源代码下载)

首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是眼下较流行的一种Web应用程序开源集成框架,用于构建灵活.易于扩展的多层Web应用程序. 集成SSH框架的系统从职责上分为四层:表示层.业务逻辑层.数据持久层和域模块层(实体层). Struts作为系统的总体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持.Spring一方面作为一个轻量级的IoC容器,负责查找.定位.创建和管理对象及

LAMP环境搭建教程

学习PHP脚本编程语言之前,必须先搭建并熟悉开发环境,开发环境有很多种,例如LAMP.WAMP.MAMP等.这里我介绍一下LAMP环境的搭建,即Linux.Apache.MySQL.PHP环境. 一.首先安装操作系统 操作系统:centos6.3 IP地址:192.168.146.129 网关: DNS: 操作系统安装步骤,此处不在给出截图. 备注:服务器系统采用最小化安装,安装一下GCC编译工具和一个桌面即可.如下图所示: 二.LAMP安装前的准备 1.获取软件包 httpd-2.4.2.ta

Django学习笔记 开发环境搭建

为什么使用django?1.支持快速开发:用python开发:数据库ORM系统,并不需要我们手动地构造SQL语句,而是用python的对象访问数据库,能够提升开发效率.2.大量内置应用:后台管理系统admin:用户认证系统auth:会话系统sessions.3.安全性高:表单验证,SQL诸如,跨站点攻击.4.易于扩展:django使用应用来划分逻辑功能.对于一个成熟的网站,如果需求变更了,只需要增加一个应用就可以了.学习django的知识储备:python基础,数据库SQL,HTTP协议,HTM

SSH框架总结(框架分析+环境搭建+实例源码下载)

首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活.易于扩展的多层Web应用程序. 集成SSH框架的系统从职责上分为四层:表示层.业务逻辑层.数据持久层和域模块层(实体层). Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持.Spring一方面作为一个轻量级的IoC容器,负责查找.定位.创建和管理对象及

【Hadoop基础教程】4、Hadoop之完全分布式环境搭建

上一篇blog我们完成了Hadoop伪分布式环境的搭建,伪分布式模式也叫单节点集群模式, NameNode.SecondaryNameNode.DataNode.JobTracker.TaskTracker所有的守护进程全部运行在K-Master节点之上.在本篇blog我们将搭建完全分布式环境,运行NameNode.SecondaryNameNode.JobTracker守护进程在主节点上,运行DataNode.TaskTracker在从节点上. 开发环境 硬件环境:Centos 6.5 服务器