OA项目2:环境搭建之ssh框架整合

首注:本学习教程为传智播客汤阳光讲师所公布的免费OA项目视频的文字版,本人用此来加强巩固自己开发知识,如有网友转载,请注明。谢谢。

今天做Spring+Hibernate+Struts2整合。

一 Struts2与Spring的整合。

  1.整合之前Struts2例子:

  在src下建立一个包,包名为:cn.clear.oa.test,在包下面建立一个类TestAction.java,内容如下:

 1 package cn.clear.oa.test;
 2
 3 import com.opensymphony.xwork2.ActionSupport;
 4
 5 public class TestAction extends ActionSupport{
 6
 7     /**
 8      *
 9      */
10     private static final long serialVersionUID = 3452727162433082820L;
11
12
13     public String execute() throws Exception {
14         System.out.println("---> TestAction.execute()");
15         return "success";
16     }
17
18 }

TestAction.java

  然后在WebRoot目录下建立一个test.jsp,页面内容如下:

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2
 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 4 <html>
 5   <head>
 6
 7     <title>测试页面</title>
 8   </head>
 9
10   <body>
11     Struts2添加成功!
12   </body>
13 </html>

test.jsp

  修改struts.xml的内容,修改后内容如下:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5
 6 <struts>
 7
 8     <!-- 设置为开发者模式 -->
 9     <constant name="struts.devMode" value="true" />
10     <!-- 把扩展名设置为.action,如name里的内容记不住,请在core包里的default.properties里面找 -->
11     <constant name="struts.action.extension" value="action" />
12     <!-- 把主题设置为simple,如name里的内容记不住,请在core包里的default.properties里面找 -->
13     <constant name="struts.ui.theme" value="simple" />
14
15     <package name="default" namespace="/" extends="struts-default">
16
17         <!-- 测试用的Action(未与Spring整合,class写类的全名) -->
18         <action name="test" class="cn.clear.oa.test.TestAction">
19             <result name="success">/test.jsp</result>
20         </action>
21     </package>
22
23 </struts>

struts.xml

  然后启动tomcat服务器,访问这个页面:http://localhost:8080/OA/test.action,如果跳转到如下图的页面,则说明Struts2环境添加成功。

  同时,在myeclipse的console下面也会打印:---> TestAction.execute()

  2.测试Spring环境:

  在包cn.clear.oa.test下面建立一个测试类SpringTest.java,其内容如下:

 1 package cn.clear.oa.test;
 2
 3 import org.junit.Test;
 4 import org.springframework.context.ApplicationContext;
 5 import org.springframework.context.support.ClassPathXmlApplicationContext;
 6
 7 public class SpringTest {
 8
 9     private ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
10
11     @Test
12     public void testBean() throws Exception {
13         TestAction testAction = (TestAction) ac.getBean("testAction");
14         System.out.println(testAction);
15     }
16 }

SpringTest.java

  然后在TestAction.java里面类名上面添加如下注解,在类SpringTest.java的testBean方法中开启单点测试,如果结果条显示绿色,

  控制台打印出:[email protected],则说明测试通过,Spring环境添加成功。

1 @Controller
2 @Scope("prototype")
3 public class TestAction extends ActionSupport{
4          ……………………………………………………………………
5 }

增加注解

  3.Struts2与Spring整合:

  首先在web.xml中配置Spring的监听器。如下:

1   <!-- 配置Spring用于初始化容器的监听器 -->
2   <listener>
3            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
4   </listener>
5   <context-param>
6    <param-name>contextConfigLocation</param-name>
7            <param-value>classpath:applicationContext*.xml</param-value>
8   </context-param>

spring监听器

  其次添加整合所需的jar包。jar包在struts2.3.15.1的lib下面加,名字为:struts2-spring-plugin-2.3.15.1.jar

  进入struts.xml中,将action的class属性直接填写bean的名字testAction,重启服务器,访问:http://localhost:8080/OA/test.action

  如果成功进入页面,说明Struts2与Spring整合成功。

二 Hibernate与Spring的整合。

  为什么要整合?答:1.管理SessionFactory(只需要一个);2.声明式事务管理。

  整合步骤:

  1)修改hibernate.cfg.xml中的内容,因为我们将使用到c3p0连接池管理数据库连接,所以数据库连接信息注释掉,如下图所示:

  

  2)在applicationContext.xml中添加内容,最终如下所示:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!--
 3   - Middle tier application context definition for the image database.
 4   -->
 5 <beans xmlns="http://www.springframework.org/schema/beans"
 6         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 7         xmlns:context="http://www.springframework.org/schema/context"
 8         xmlns:tx="http://www.springframework.org/schema/tx"
 9         xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
10                 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
11                 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
12
13     <!-- 自动扫描与装配bean -->
14     <context:component-scan base-package="cn.clear.oa"></context:component-scan>
15     <!-- 导入外部的properties文件 -->
16     <context:property-placeholder location="classpath:jdbc.properties"/>
17     <!-- 配置SessionFactory -->
18     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
19         <!-- 指定hibernate配置文件的位置 -->
20         <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
21         <!-- 配置c3p0数据库连接池 -->
22         <property name="dataSource">
23             <bean class="com.mchange.v2.c3p0.ComboPooledDataSource">
24                 <property name="driverClass" value="${driverClass}"></property>
25                 <property name="jdbcUrl" value="${jdbcUrl}"></property>
26                 <property name="user" value="${username}"></property>
27                 <property name="password" value="${password}"></property>
28
29                 <!-- 其他配置 -->
30                 <!--初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
31                 <property name="initialPoolSize" value="3"></property>
32                 <!--连接池中保留的最小连接数。Default: 3 -->
33                 <property name="minPoolSize" value="3"></property>
34                 <!--连接池中保留的最大连接数。Default: 15 -->
35                 <property name="maxPoolSize" value="5"></property>
36                 <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
37                 <property name="acquireIncrement" value="3"></property>
38                 <!-- 控制数据源内加载的PreparedStatements数量。如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0 -->
39                 <property name="maxStatements" value="8"></property>
40                 <!--maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。Default: 0 -->
41                 <property name="maxStatementsPerConnection" value="5"></property>
42                 <!--最大空闲时间,1800秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
43                 <property name="maxIdleTime" value="1800"></property>
44             </bean>
45         </property>
46     </bean>
47     <!-- 配置声明式事务管理(使用注解的方式) -->
48     <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
49         <property name="sessionFactory" ref="sessionFactory"></property>
50     </bean>
51     <tx:annotation-driven transaction-manager="txManager"/>
52 </beans>

applicationContext.xml

  3)在src目录下建立一个数据库配置文件,名字为jdbc.properties,内容如下(注意每行最后不要留空格,否则会报错):

1 jdbcUrl     = jdbc:mysql:///oa
2 driverClass = com.mysql.jdbc.Driver
3 username    = root
4 password    =root

jdbc.properties

  4)在SpringTest.java类里写一个方法测试SessionFactory,内容如下,如果执行单点测试成功,说明成功:

1 //测试sessionFactory
2     @Test
3     public void testSessionFactory() throws Exception {
4          SessionFactory sessionFactory = (SessionFactory) ac.getBean("sessionFactory");
5          System.out.println(sessionFactory);
6     }

测试SessionFactory

  5)测试事务:

    首先创建一个包:cn.clear.oa.domain,在包下建一个测试用的用户类(User.java),具体代码如下: 

 1 package cn.clear.oa.domain;
 2
 3 public class User {
 4     private Long id;
 5     private String name;
 6     public Long getId() {
 7         return id;
 8     }
 9     public void setId(Long id) {
10         this.id = id;
11     }
12     public String getName() {
13         return name;
14     }
15     public void setName(String name) {
16         this.name = name;
17     }
18
19
20 }

User.java

    将之前拷贝的XX.hbm.xml剪切到domain包下,将名字改为User.hbm.xml,内容如下:

 1 <?xml version="1.0"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC
 3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5
 6 <hibernate-mapping package="cn.clear.oa.domain">
 7     <class name="User" table="oa_user">
 8         <id name="id"><generator class="native"/></id>
 9         <property name="name"/>
10     </class>
11 </hibernate-mapping>

User.hbm.xml

    然后将这个mapper配置到hibernate.cfg.xml里面,具体内容如下所示:

1 <!-- 导入映射文件 -->
2 <mapping resource="cn/clear/oa/domain/User.hbm.xml" />

添加mapper

    在test包下创建一个测试用的业务类,名字叫TestService.java,内容如下:  

 1 package cn.clear.oa.test;
 2
 3 import javax.annotation.Resource;
 4
 5 import org.hibernate.Session;
 6 import org.hibernate.SessionFactory;
 7 import org.springframework.stereotype.Service;
 8 import org.springframework.transaction.annotation.Transactional;
 9
10 import cn.clear.oa.domain.User;
11 @Service
12 public class TestService {
13
14     @Resource
15     private SessionFactory sessionFactory;
16
17     @Transactional
18     public void saveTestUser(){
19         Session session = sessionFactory.getCurrentSession();
20         session.save(new User());
21         //测试事务的回滚功能
22         //int a = 1/0;
23         session.save(new User());
24     }
25 }

TestService.java

    在SpringTest.java下创建方法测试事务,内容如下:

1         //测试事务
2     @Test
3     public void testTransaction() throws Exception {
4         TestService testService = (TestService)           ac.getBean("testService");
5         testService.saveTestUser();
6     }    

测试事务

    启动单点测试测试事务,分别注释掉TestService.java里的int a = 1/0;代码和不注释各测试一次,如果成功就说明hibernate和spring整合成功。

三 ssh整合后测试:

  在TsetAction.java里引入TestService.java类,测试是否能够创建user对象,然后启动服务器,在浏览器中访问:http://localhost:8080/OA/test.action,

  如果成功进入页面并且数据库增加了相应的表记录,证明ssh整合成功。修改后的TestAction.java内容如下:

 1 package cn.clear.oa.test;
 2
 3 import javax.annotation.Resource;
 4
 5 import org.springframework.context.annotation.Scope;
 6 import org.springframework.stereotype.Controller;
 7
 8 import com.opensymphony.xwork2.ActionSupport;
 9
10 @Controller
11 @Scope("prototype")
12 public class TestAction extends ActionSupport{
13
14     /**
15      *
16      */
17     private static final long serialVersionUID = 3452727162433082820L;
18
19     @Resource
20     private TestService testService;
21
22     public String execute() throws Exception {
23         System.out.println("---> TestAction.execute()");
24         testService.saveTestUser();
25         return "success";
26     }
27
28 }

TestAction.java

     

  

时间: 2024-10-26 20:44:45

OA项目2:环境搭建之ssh框架整合的相关文章

S2SH开发环境搭建、框架整合、项目基础环境搭建

S2SH开发环境搭建.框架整合.项目基础环境搭建 1.S2SH框架整合 新建项目s2sh: 1.1添加jar包 1.1.1添加Struts的jar包 添加如下的jar包: commons-fileupload-1.2.2.jar commons-io-2.0.1.jar freemarker-2.3.19.jar ognl-3.0.5.jar struts2-core-2.3.4.1.jar xwork-core-2.3.4.1.jar 疑惑:这些jar可以从哪里获得呢? 对于一个框架来说,别人

【课程分享】jQuery2.0应用开发:SSH框架整合jQuery2.0实战OA办公自动化(VSS、operamasks-UI框架)

我的qq是2059055336,对这个课程有兴趣的可以加我qq联系. 课程下载地址:链接:http://pan.baidu.com/share/link?shareid=395438909&uk=3611155194 密码:mlvl 课程下载地址:http://www.kuaipan.cn/file/id_192202874577496484.htm?source=1 一.本课程是怎么样的一门课程(全面介绍)    1.1.课程的背景 jQuery 2.0 正式版发布,不在支持 IE 6/7/8

jQuery2.0应用开发:SSH框架整合jQuery2.0实战OA办公自动化(VSS、operamasks-UI框架)

我的qq是2059055336,对这个课程有兴趣的可以加我qq联系. 一.本课程是怎么样的一门课程(全面介绍)    1.1.课程的背景 jQuery 2.0 正式版发布,不在支持 IE 6/7/8 浏览器.因此该版本更小.更快.       为了提高现代社会人们的办公效率,满足人们自动化办公的需要,我们开发了这套稳定可靠.操作方便.安全有效的MyOffice系统     1.2.课程内容简介       本课程全面详细的介绍jQuery2.0以及OA办公自动化系统的开发流程.其中重点详细的介绍

Windows环境搭建Web自动化测试框架Watir(基于Ruby) 第1章

一.前言     Web自动化测试一直是一个比较迫切的问题,对于现在web开发的敏捷开发,却没有相对应的敏捷测试,故开此主题,一边研究,一边将Web自动化测试应用于工作中,进而形成能够独立成章的博文,希望能够为国内web自动化测试的发展做一点绵薄的贡献吧,笑~ 二.Watir搭建流程 图1-1 需要安装的工具     下载地址:http://railsinstaller.org/     因为安装Ruby还需要用到其他的一些开发工具集,所以建议从网站http://railsinstaller.o

Windows环境搭建Web自动化测试框架Watir(基于Ruby)

web自动化测试一直是一个比较迫切的问题 图1-1 需要安装的工具 http://railsinstaller.org/ 因为安装Ruby还需要用到其他的一些开发工具集,所以建议从网站http://railsinstaller.org/ 下载,而且使用该安装包的话,它会帮你把环境变量也设置完毕,我使用的版本是:railsinstaller-2.2.4.exe,建议下载最新版本. 开始安装RailsInstaller工具包,安装到默认位置即可. 这个对勾建议打上,它会帮你配置git和ssh,安装过

iOS项目——项目开发环境搭建汇总

iOS项目--项目开发环境搭建 在开发项目之前,我们需要做一些准备工作,了解iOS扩展--Objective-C开发编程规范是进行开发的必备基础,学习iOS学习--Xcode9上传项目到GitHub是我们进行版本控制和代码管理的选择之一,明白iOS学习--iOS项目Project 和 Targets配置详解则更利于我们今天对完整项目开发环境的搭建,这些内容在在之前的博文中都已经有了一些总结和步骤说明,具体详情可以戳链接查看. 开发一个完整的App,不同于我们平时学习和练习时随意新建一个proje

项目部署环境搭建

目录 项目部署环境搭建 一.linux上网 二.rpm包管理 1.光盘挂载 2.安装卸载rpm包 3.查询是否安装 4.查看软件包 5.互相依赖关系的软件包 三.yum包管理 1.使用aliyun的yum源 2.使用yum安装软件 3.查看yum源的软件包 4.删除软件包 5.优化yum源 四.源码包应用 0.源码包解压缩 1.python3.6安装 2.mysql源码包安装 3.redis源码包安装 五.二进制包使用(mysql安装) 六.运行Django项目 1.安装依赖包 2.安装测试Dj

Hive项目开发环境搭建(Eclipse\MyEclipse + Maven)

写在前面的话 可详细参考,一定得去看 HBase 开发环境搭建(Eclipse\MyEclipse + Maven) Zookeeper项目开发环境搭建(Eclipse\MyEclipse + Maven) 我这里,相信,能看此博客的朋友,想必是有一定基础的了.我前期写了大量的基础性博文.可以去补下基础. 步骤一:File  ->  New  -> Project   ->  Maven Project 步骤二:自行设置,待会创建的myHBase工程,放在哪个目录下. 步骤三: 步骤四:

Eclipse4.6(Neon) + Tomcat8 + MAVEN3.3.9 项目完整环境搭建

软件清单 jdk-8u102-windows-x64.exe eclipse-inst-win64.exe (Eclipse4.6 Neon) apache-tomcat-8.5.5-windows-x64.zip apache-maven-3.3.9-bin.zip 1.JDK的安装 安装过程就是next一路到底; 安装完成之后要配置环境变量: 1.1 新建变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.8.0_102(这是我的jdk安装路径) 1.2