【SSH】---【Struts2、Hibernate5、Spring4集成开发】

Struts2、Hibernate5、Spring4集成开发步骤:

一、导入Jar包(基本的大致有41个,根据实际项目的需求自己添加)

antlr-2.7.7.jar
aopalliance.jar
asm-5.1.jar
asm-commons-5.1.jar
asm-tree-5.1.jar
aspectjweaver-1.8.7.jar
c3p0-0.9.2.1.jar
classmate-1.3.0.jar
commons-fileupload-1.3.2.jar
commons-io-2.4.jar
commons-lang3-3.4.jar
commons-logging-1.2.jar
dom4j-1.6.1.jar
freemarker-2.3.23.jar
geronimo-jta_1.1_spec-1.1.1.jar
hibernate-commons-annotations-5.0.1.Final.jar
hibernate-core-5.1.8.Final.jar
hibernate-entitymanager-5.1.8.Final.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar
jandex-2.0.3.Final.jar
javaee.jar
javassist-3.20.0-GA.jar
jboss-logging-3.3.0.Final.jar
jstl-1.2.jar
log4j-1.2.17.jar
log4j-api-2.7.jar
mchange-commons-java-0.2.3.4.jar
mysql-connector-java-5.0.5-bin.jar
ognl-3.1.12.jar
spring-aop-4.3.9.RELEASE.jar
spring-aspects-4.3.9.RELEASE.jar
spring-beans-4.3.9.RELEASE.jar
spring-context-4.3.9.RELEASE.jar
spring-core-4.3.9.RELEASE.jar
spring-expression-4.3.9.RELEASE.jar
spring-jdbc-4.3.9.RELEASE.jar
spring-orm-4.3.9.RELEASE.jar
spring-tx-4.3.9.RELEASE.jar
spring-web-4.1.6.RELEASE.jar
struts2-core-2.5.10.1.jar
struts2-spring-plugin-2.5.10.1.jar

SSH主要jar包


二、配置Web.xml文件
    2.1、配置Struts2的过滤器StrutsPrepareAndExecuteFilter

1   <!-- 配置Struts2的过滤器 -->
2     <filter>
3         <filter-name>Struts2</filter-name>
4         <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
5     </filter>
6     <filter-mapping>
7         <filter-name>Struts2</filter-name>
8         <url-pattern>/*</url-pattern>
9     </filter-mapping>

    2.2、配置Spring监听器

1   <listener>
2         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
3     </listener>

ContextLoaderListener的作用:
    ContextLoaderListener监听器的作用就是启动Web容器/启动服务器的时候(Tomcat)时,自动加载ApplicationContext的配置信息。因为它实现了ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法。至于ApplicationContext.xml这个配置文件部署在哪,如何配置多个xml文件,官方API文档中说明。
在ContextLoaderListener中关联了ContextLoader这个类,所以整个加载配置过程由ContextLoader来完成。
    2.2.1、ContextLoader可以由 ContextLoaderListener和ContextLoaderServlet生成。如果查看ContextLoaderServlet的API,可以看到它也关联了ContextLoader这个类而且它实现了HttpServlet这个接口。
    2.2.2、ContextLoader创建的是 XmlWebApplicationContext这样一个类,它实现的接口是WebApplicationContext->ConfigurableWebApplicationContext->ApplicationContext->BeanFactory这样一来spring中的所有bean都由这个类来创建。
    2.2.3、如果在web.xml中不写任何参数配置信息,默认的路径是/WEB-INF/applicationContext.xml,在WEB-INF目录下创建的xml文件的名称必须是applicationContext.xml;
        如果是要自定义文件名可以在web.xml里加入contextConfigLocation这个context参数:

1   <context-param>
2          <param-name>contextConfigLocation</param-name>
3           <param-value>/WEB-INF/classes/applicationContext-*.xml   </param-value>
4   </context-param>  

在<param-value> </param-value>里指定相应的xml文件名,如果有多个xml文件,可以写在一起并一“,”号分隔。上面的applicationContext-*.xml采用通配符,比如这那个目录下有applicationContext-ibatis-base.xml,applicationContext-action.xml,applicationContext-ibatis-dao.xml等文件,都会一同被载入。
所以:applicationContext.xml的文件位置就可以有两种默认实现:
        第一种:直接将之放到/WEB-INF下,之在web.xml中声明一个listener;
        第二种:将之放到classpath下,但是此时要在web.xml中加入<context-param>,用它来指明你的applicationContext.xml的位置以供web容器来加载。按照Struts2 整合spring的官方给出的档案,写成:

1    <context-param>
2                 <param-name>contextConfigLocation</param-name>
3                 <param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value>
4         </context-param>

三、配置Spring的核心配置文件
    3.1、在src下新建applicationContext.xml文件,其中要配置的内容包括:
        3.1.1、配置数据源

1    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
2          <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
3          <property name="jdbcUrl" value="jdbc:mysql:///ssh"></property>
4          <property name="user" value="root"></property>
5          <property name="password" value="123"></property>
6    </bean>

3.1.2、配置SessionFactory(本身是Hibernate里面的,这里我们是要让Spring给我们管理SessionFactory的创建)

 1   <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
 2                 <!-- 因为在hibernate核心配置文件中,没有了数据库配置,数据库配置在spring里面,注入dataSource -->
 3                 <property name="dataSource" ref="dataSource"></property>
 4                 <!-- 指定hiberante核心配置文件,有些内容我们是将信息配置在原来的Hibernate核心配置文件中,
 5           比如格式化SQL语句(hibernate.format_sql),
 6           显示SQL语句(hibernate.show_sql),
 7           Hibernate给我们创建及更新表的指令(hibernate.hbm2ddl.auto),
 8           Hibernate使用的方言(hibernate.dialect),
 9           还有映射文件<mapping class""/>-->
10                 <property name="configLocations" value="classpath:hibernate.cfg.xml"></property>
11             </bean>

3.1.3、原来我们在学习Hibernate的时候说过有个事务的概念,现在我们要把事务的管理交给Spring。

1   <!-- 第一步 配置事务管理器 -->
2 <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
3       <!-- 注入sessionFactory -->
4       <property name="sessionFactory" ref="sessionFactory"></property>
5 </bean>

3.1.4、如果要采用注解的方式配置哪些方法要进行事务处理,那么就需要做以下事情:
            3.1.4.1、在Spring的核心配置文件中配置开启事务注解,写法:

<tx:annotation-driven transaction-manager="transactionManager" /> 
            3.1.4.2、在业务层方法需要事务控制的方法上面添加一个注解,这个注解是@Transactional,但是需要注意的是并不是所有的方法都是需要进行事务处理的,比如说检索/查询操作。
        3.1.5、因为我们要对数据库做CRUD(Create/Select/Update/Delete)操作,我们继承了三大框架,而Hibernate就是用来做dao层,dao层就是为了操作数据库的,所以我们要用hibernate操作数据库的类,这个类叫做:HibernateTemplate,记住我们用的是Hibernate5的HibernateTemplate。
            还有需要注意的一点是:需要在这里里面配置sessionFactory,也就是说你要在hibernateTemplate里面注入sessionFactory。
            ------------>其实我们在使用hibernate操作数据库的时候,做的业务操作复杂度远远超出get/load这样的方法,所以我们在做查询这些操作的时候,我们用的并不是简单的hibernateTemplate方法,而是用的Hibernate给我们提供的三个接口里面的两个常用接口,这两个接口的名字是(Query和Criteria)

1 <bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
2       <!-- 注入sessionFactory -->
3        <property name="sessionFactory" ref="sessionFactory"></property>
4 </bean>

3.1.6、由于我们在集成开发的时候,用的都是注解,这些注解体现在以下方面:
            3.1.6.1、实体类(@Entity、@Id、@one-to-many、@many-to-many、@JoinTable、@JoinColumn等等),所以我们要在Spring的核心配置文件中打开注解扫描功能,写法如下:<context:component-scan base-package="com.chinasofti"></context:component-scan>
    备注:如果想要在Spring的核心配置文件中能够写什么标签,一定是需要在命名空间中添加相应的约束:如:
        xmlns:aop="http://www.springframework.org/schema/aop"-------------------->这一行代表的是命名空间
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd --------->这一行代表的是具体的约束(约束的意思就是说:spring配置文件中能够写什么标签,以及标签的上下级。)
                3.1.7、配置Action

1 <bean id="userAction" class="com.crm.user.action.UserAction" scope="prototype">
2      <!-- 注解实例化Action,并在Action中注入service -->
3 </bean>

四、在实际开发中,一定要将日志文件引入你的项目工程里面,绝大多数我们都使用Log4j的属性文件,一般都是叫做:log4j.properties,这里面的内容绝对不能去记忆。
    log4j.rootLogger=info, stdout----------->这里的info还有一个值是debug,切记在实际开发中如果你的环境是测试环境,那么建议你使用debug,如果在生产环境中必须使用info,如果生产环境使用debug的话,那么你的磁盘将会有很多日志文件,浪费空间。
五、实际开发中,我们一定要区分,dao层和service层,其中service层有的公司也称之为biz层,这个单词的由来是business。
六、我们在学习JavaWeb阶段的时候(中级节点),我们是手动去写日志处理类的(DiyException),也就是我们的异常类。但是在工作中,我们不再写这个异常类,而是使用log4j的属性文件log4j.properties,这里文件里面可以直接定义输入的文件名和具体的日常信息存放位置。
七、在实际开发中,我们觉大多数情况都使用springMVC框架,并不是我们现在学习的SSH框架,而是SSM框架。但是,有些比较老的项目他们使用的还是SSH。
八、在使用注解开发业务程序的时候,分为:
    8.1、dao:
    我们在dao层要使用hibernate的session,所以还得在这个dao里面注入sessionFactory,注入的方式也有两种,即@Autowired和@Resource。
    8.2、service/biz:
    需要知道的是:在service/biz中需要注入dao,具体的做法是:在service/biz中添加dao类的对象,写法例子如下:private IUserDao userDao;并且要使用注解进行对类实例化,可以使用自动注入:@Autowired,也可以使用准确注入方式:@Resource(name="dao接口或实现类的对象名")
    8.3、我们学过有四个相同功能的注解方式,分别为:
        8.3.1、@Repository------->用在DAO层/数据持久化层
        8.3.2、@Service--------->用在Service/biz/业务层
        8.3.3、@Controller-------->用在控制层
        8.3.4、@Component-------->如果无法确定具体的分类,那么就可以使用这个

=========================================================================================================================================================================================================================================
下面的这段话可能在比较高端的面试中会问到,建议大家看看:
StrutsPrepareAndExecuteFilter的作用
FilterDispatcher是早期struts2的过滤器,后期的都用StrutsPrepareAndExecuteFilter了,如 2.1.6、2.1.8。StrutsPrepareAndExecuteFilter名字已经很能说明问题了,prepare与execute,前者表示准备,可以说是指filter中的init方法,即配制的导入;后者表示进行过滤,指doFilter方法,即将request请求,转发给对应的 action去处理。
FilterDispatcher是struts2.0.x到2.1.2版本的核心过滤器!
StrutsPrepareAndExecuteFilter是自2.1.3开始就替代了FilterDispatcher的!
StrutsPrepareAndExecuteFilter过滤器中包含相应的功能。      
三个初始化参数:    
  1、config参数:指定要加载的配置文件。逗号分割。   
  2、actionPackages参数:指定Action类所在的包空间。逗号分割。    
  3、configProviders参数:自定义配置文件提供者,需要实现ConfigurationProvider接口类。逗号分割。
运行流程:
StrutsPrepareAndExecuteFilte 实现了Filter接口
服务器启动调用StrutsPrepareAndExecuteFilte .init()初始化来初始化几个重要的类,比如Dispatcher
当前台有请求发来,StrutsPrepareAndExecuteFilte 的doFilter()被调用
进行request等的封装,找到相应action,执行相应action

时间: 2024-11-10 11:52:33

【SSH】---【Struts2、Hibernate5、Spring4集成开发】的相关文章

SSH(struts2,spring4,hibernate5)详解

使用ssh框架的目的: 将典型的J2EE结构,分为表现层.中间层(业务逻辑层)和数据服务层.三层体系将业务规则.数据访问及合法性校验等工作放在中间层处理.客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互. 一 struts2的核心与工作原理   在学习struts2之前,首先我们要明白使用struts2的目的是什么?它能给我们带来什么样的好处? 设计目标 Struts设计的第一目标就是使MVC模式应用于web程序设计. mvc的好处: 利于批量生产.规模生产.相互协

SSH框架手动整合——Struts2+Hibernate4+Spring4

最近遇到过一些框架方面的问题,其中有MyBatis.SSH.SpringMVC,其中SSH的一些配置有些忘的差不多了,也有一些同事问了这些问题,前几个月也整合过SSH框架,那个时候是直接拿别人的Jar包直接整合框架,好像是Struts2+Hibernate3+Spring4,这次是相关的Jar从相关的官网下的. 我整合的环境: --Win 7 64 --MySQL 5.6 --MyEclipse 2014 --Jar包:struts-2.3.28.spring-framework-4.0.4.R

Spring与Struts2集成开发

Struts2和Spring都是不错的开源框架,Spring与Struts2集成开发,把二者结合在一起使用,开发效果更佳,效率杠杠的.下面介绍一下如何将Spring与Struts2集成在一起开发.分七步战略: 1.添加Struts2 支持jar包 :注意:加上一个Struts-spring-plugin(集成)插件包 2.添加spring 支持jar包 3.编写struts.xml配置文件 注意:Action是交由Spring管理:所以action class属性应和spring 中配置的Act

SSH(Struts2+Spring+Hibernate)框架搭建流程&lt;注解的方式创建Bean&gt;

此篇讲的是MyEclipse9工具提供的支持搭建自加包有代码也是相同:用户登录与注册的例子,表字段只有name,password. SSH,xml方式搭建文章链接地址:http://www.cnblogs.com/wkrbky/p/5912810.html 一.Hibernate(数据层)的搭建: 实现流程 二.Spring(注入实例)的使用: 实现流程 三.Struts2(MVC)的搭建: 实现流程 这里注意一点问题: Struts2与Hibernate在一起搭建,antlr包,有冲突.MyE

工作笔记3.手把手教你搭建SSH(struts2+hibernate+spring)环境

上文中我们介绍<工作笔记2.软件开发常用工具> 从今天开始本文将教大家如何进行开发?本文以搭建SSH(struts2+hibernate+spring)框架为例,共分为3步: 1)3个独立配置:struts2. Hibernate. Spring 2)2个整合:整合Sring和struts2. 整合Spring和Hibernate 3)资源分类 开发包.软件.框架源码,已经共享到百度网盘:http://pan.baidu.com/s/1o6FkbA6 一.3个独立配置 1.Struts2: 1

基于注解的struts2+spring+hibernate集成

applicationContext.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:aop="http://www.spri

值得一试的8个最佳云端集成开发环

众多基于传统桌面的软件正在迁移到云端,这一点都不奇怪,基于云的集成开发环境正在不断涌现,已经有很多的开发者在使用 Github 和 Pastebin 来进行在线的协同开发.今天这篇文章挑选了8个最优秀的云端集成开发环境推荐给开发者,大家可以体验一下,看哪个适合自己. Cloud9 IDE 基于 NodeJS 构建的在线集成开发环境,语法高亮支持 C#, C++, Python, Perl, Ruby, Scala 等等众多常用开发语言.内置的 Vim 模式非常好用,支持流行的版本控制系统,像 G

struts2+jquery+json集成

以下采用struts2+jquery+json模拟一个案例.当点击提交按钮时会把输入的数据提交到后台,然后从后台获取数据在客户端显示. 效果如下: 接下来为struts2+jquery+json集成步骤: 1.新建一个web工程,导入struts2+jquery+json所需jar,如下图 目录结构图 2.创建实体类User package com.ljq.bean; import java.io.Serializable; @SuppressWarnings("serial") pu

SSH2集成开发步骤

分布集成三大框架: 第一步:集合三大框架开发的jar包,并放置项目的lib目录下,如下图所示: 这些jar包有一些可有可无,但是对于做一个比较全面的,考虑周全的系统,建议都加载这些jar包,初学者也更不容易出错. 第二步:在自己的项目下新建一个bean.xml(这里面主要是集成配置三大框架) ① 配置数据源: <!-- 采用的事c3p0数据源配置 --> <bean id="dataSource" class="com.mchange.v2.c3p0.Com