`
gao_xianglong
  • 浏览: 467783 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

详解SSJ(Spring3.x mvc + Spring3.x Core + JPA2.x)轻量级集成开发—第7章 笔者带走进Spring3.x MVC的世界

阅读更多

上一章 详解SSJ(Spring3.x mvc + Spring3.x Core + JPA2.x)轻量级集成开发—第6章 剖析Spring3.x AOP特性02

下一章 详解SSJ(Spring3.x mvc + Spring3.x Core + JPA2.x)轻量级集成开发—第8章 Spring3.x mvc核心类库及基础构建

 

目录

一、MVC模型介绍;

二、Spring MVC简介;

三、剖析Spring MVC工作流程;

四、使用Maven工程构建Spring MVC应用;

 

前言

笔者的前几章博文都陆续得到了大家的支持认同,尤其是《笔者带你剖析Java7.x新特性》博文更是深受大家欢迎,在此笔者由衷的感谢ITeye上所有支持笔者的朋友。从系列博文的第一章至第六章,笔者已经完成了对Spring3.x Core的详细讲解,所以从本章开始请跟随笔者一起学习有关Spring Web领域的相关知识。如果你以前使用过Struts、WebWork等MVC Frameworks来构建你的Web应用,那么你将能够很快的接受本章及后续章节的内容。当然本章内容更多的是围绕Spring MVC的架构进行介绍,对于不太喜欢理论知识的朋友,请关注笔者后续章节。反之请耐心阅读本章内容,或许你会有意想不到的收获。

 

一、MVC模型介绍

MVC(Model、View、Controller)是在程序开发过程中衍生出的一套程序设计思想,它由三个单词的缩写组成,分别为:模型层(Model)、表现层(View)和控制层(Controller)。至于使用MVC的目的,就在于它能够更明确的定义Web系统的组件分工
在早期的Java Web应用开发过程中,JSP既要负责页面的显示工作,同时也要负责实际的业务处理。从而导致了整个JSP页面出现高耦合、低复用等诸多弊端因素。笔者相信这些痛苦对于每个Web 程序员来说都是不言而喻的,但随着MVC架构的出现,程序的扩展性和伸缩性都将得到更好的保障。

MVC架构工作流程图:

 

通过上述视图我们可以发现,View层组件仅负责页面显示工作,数据的预处理工作(类型转换、DTO封装、数据效验、数据交互)则由Controller层组件负责,至于具体的业务实现则交由Model层组件负责。只要满足这种规范的设计我们都可以称之为MVC(并不要求采用指定的技术实现)。但是在实际的开发过程中,开发人员往往需要使用一些规范实现来简化日常工作,这样便促使了WebWork、Struts2等诸多优秀MVC Frameworks的诞生。

 

提示

对于开发人员来说,使用任何Framework进行业务解耦是目的(理论而言)。但实现企业快速开发,提高员工生产力才是主要。

 

二、Spring MVC简介

Spring MVC属于Spring平台整体的一部分,由于它分离了View层组件、Controller层组件、Model层组件以及分发器等,所以Spring MVC被定义为一个标准的企业级MVC规范实现。并提供有丰富的功能,只为构建强大且健壮的Java Web应用。与早期版本相比,Spring3.x MVC将具备更强的灵活性配置性。在实际的开发过程中,Spring MVC并没有强制要求开发人员只能选用JSP作为View层组件(可以选则Velocity、Tiles、iText等其他技术),这种开放性打破了以往的常规式选择。并且一旦在项目中使用了Spring提供的相关Annotations,一切事情将变得非常简单和有趣。开发人员将再不必为Controller实现任何接口,也无需在配置文件中定义冗长且繁琐的映射关系,对于支持Restful风格的Spring MVC来说,未来将注定成为主流趋势。你没听错,这些都是Spring3.x MVC所带给开发人员的改变。当然这仅仅只是一部分。关于其它特性,笔者在后续章节会进行着重讲解。

 

三、剖析Spring MVC工作流程

在早期大行其道的SSH(Struts2.x + Spring + Hibernate)集成开发模式中,Struts2.x是开发人员最为熟悉的一种MVC Framework。不知大家是否还记得Struts2.x的工作流程机制?当客户端提交请求至服务端时,Struts2的FileterDispatcher(核心控制器)会负责拦截,并且内置拦截器会负责对请求中的参数做一系列的预处理工作(包含:解析参数、类型转换、DTO封装等)。然后提交给具体的Action(业务控制器)调用业务实现直至返回处理结果,最后Action根据处理结果forward到具体的View层组件。

上述笔者简单的阐述了Struts2的工作流程机制,不得不承认,Struts2.x的确是一个设计精良的MVC框架,它将表现层(Model)、模型层(View)、控制层(Controller)等3个模块的组件分工划分的极为清晰。既然Struts2.x这么完美,那么为什么大家还需要使用Spring MVC呢?对于这个问题即便是拥有多年开发经验的开发人员或许也会存在疑问,他们都有一个统一的答案:客户决说了算。的确商业化的项目构建确实不用开发人员思考太多,但这却令人感到一种无奈。当然笔者在此篇博文中并不会针对Struts2.x的缺陷大做文章,因为任何一种技术都伴随着缺陷,这是不可避免的,其中同样也包括Spring。

Spring MVC的工作流程机制参考于Struts2.x,但整体构架却大相庭径。简单来说Struts2.x的内核中充斥着大量的内置拦截器(约70%),但Spring MVC却并没有选择这么做。在Spring MVC的工作流程机制中,客户端的请求响应/分发工作全由DispatcherServlet(前端控制器)负责,DispatcherServlet仅只是一个普通的Servlet。当DispatcherServlet成功拦截客户端请求后,便会加载WEB-INF目录下的Spring MVC配置文件。然后根据HandlerMapping的实例(配置文件中的映射信息)分发给对应的Controller(业务控制器)处理。Controller在调用具体的业务实现之前,会负责一系列的参数预处理工作(包含:解析参数、类型转换、封装DTO等)。最后Controller根据处理结果forward到具体的View层组件。

Spring工作流程图示例:

 

提示

对于从未接触过Struts2.x的开发人员而言,笔者不建议你重新学习一遍。如果大家非要问为什么,那么笔者的答案就是Spring MVC构建简单。Struts2.x的确拥有太多令人惊艳的功能,但这些功能在实际开发过程中,已经多到成为“鸡肋”。

 

四、使用Maven工程构建Spring MVC应用

Maven是一种基于项目对象模型(POM)的项目管理工具(纯Java开发),它可以通过一小段描述信息来管理项目的构建类库依赖。相对于Ant等传统项目纯构建工具而言,Maven所包含的功能更像是一个功能的超集。至于如何使用Maven请参考笔者的《Use Maven3.x》系列博文。

在此,笔者推荐的IDE工具并非是eclipse或MyEclipse,而是STS(Spring Tool Suite),因为STS工具专为构建Spring应用而生。STS在eclipse的基础之上进行了二次开发,所以熟悉eclipse的开发人员将会非常容易上手STS。值得庆幸的是,STS同样也是开源的,你可以登陆http://www.springsource.org/sts站点进行最新版本的下载。

选择File->new->Spring->Spring Template Project构建Spring应用工程:

 

选择Spring MVC Project点击Next:

 

接下来我们要做的事情就是指定项目名称和定义项目经纬,最后点击Finish完成创建:

 

当使用STS工具成功创建Spring MVC项目后,我们可以发现。项目的管理缺省是基于Maven进行管理的,并且STS工具已经自动为开发人员生成了Spring所需的各项配置文件,我们只需要在后续的开发过程中进行扩充既可。

 

本章内容到此结束,由于时间仓库,本文或许有很多不尽人意的地方,希望各位能够理解和体谅。关于下一章的内容,笔者打算继续讲解Spring MVC的相关内容。

至于后续章节博文的更新周期,笔者会在本月15号以后才会进行更新,希望大家谅解。

3
2
分享到:
评论
9 楼 gao_xianglong 2013-03-09  
jay263566831 写道
略少啊 刚看到目录 下次讲具体流程是吧?
还是支持了

感谢
8 楼 jay263566831 2013-03-07  
略少啊 刚看到目录 下次讲具体流程是吧?
还是支持了
7 楼 gao_xianglong 2013-03-06  
linuxp363 写道
意犹未尽,只是个spring mvc的简介

多多包容,这段时间事情多
6 楼 linuxp363 2013-03-05  
意犹未尽,只是个spring mvc的简介
5 楼 gao_xianglong 2013-03-05  
longfor5 写道
有点少

这段时间,事情比较多,呵呵。
4 楼 gao_xianglong 2013-03-05  
ximinjie 写道
由于时间仓库
    时间仓促

有个错别字,不错,一直在关注你的blog,期待更精彩的内容,很期待你介绍JPA方面的内容。

感谢
3 楼 longfor5 2013-03-05  
有点少
2 楼 ximinjie 2013-03-05  
由于时间仓库
    时间仓促

有个错别字,不错,一直在关注你的blog,期待更精彩的内容,很期待你介绍JPA方面的内容。
1 楼 duoduodeai 2013-03-04  
  不错,顶!

相关推荐

    spring-ssj.rar_spring_spring+Struts2+jpa集成

    在"spring-ssj.rar_spring_spring+Struts2+jpa集成"这个压缩包中,我们很可能会找到一个示例项目,展示了如何将Spring、Struts2和JPA进行集成。以下是这个集成过程的一些关键知识点: 1. **Spring配置**:首先,...

    Spring MVC+Spring+Spring data JPA

    Spring MVC、Spring 和 Spring Data JPA 是 Java 开发中非常重要的三个框架,它们共同构建了一个强大的企业级应用开发环境。Spring MVC 是一个用于构建 Web 应用的模型-视图-控制器(MVC)框架,Spring 提供了依赖...

    ssj(spring+Struts2+jpa)框架的集成(含jar包)

    综上所述,SSJ框架的集成利用了Spring的灵活性和控制反转,Struts2的MVC设计模式,以及JPA的数据持久化能力,为企业级应用提供了强大而灵活的开发基础。在实际项目中,开发者可以根据需求调整和扩展这个框架,以满足...

    Spring+Struts2+JPA

    **Spring+Struts2+JPA 整合详解** 在Java Web开发中,Spring、Struts2和JPA是三个非常重要的框架。Spring作为一个全面的轻量级框架,提供了依赖注入(DI)和面向切面编程(AOP)等功能;Struts2是一个强大的MVC框架...

    struts1.x+spring+jta集成例子(包含所有jar包)

    Struts1.x、Spring 和 JTA(Java Transaction API)是Java Web开发中常见的三大技术,它们各自在应用程序架构中承担着不同的角色。本集成例子旨在展示如何将这三者结合,构建一个完整的业务处理系统。 Struts1.x是...

    SSJ(struts2+spring+jpa)

    SSJ,全称为Struts2、Spring和JPA的组合,是Java开发中常见的Web应用程序架构模式。这个项目采用SSH框架,即Struts2作为MVC(Model-View-Controller)框架,Spring作为依赖注入(Dependency Injection,DI)和应用上...

    SSH/SSJ整合,Spring 3.1.0M1,Hibernate 3.X,struts2.1.8

    SSH(Spring、Struts、Hibernate)是Java Web开发中经典的三层架构组合,分别负责控制层、业务层和数据访问层。本项目结合了Spring 3.1.0M1、Hibernate 3.X以及Struts2.1.8,旨在提供一个最新的整合示例。 Spring...

    struts2+spring+jpa整合的完整例子(含分页)

    在学习jpa时候做的一个struts2+spring+jpa整合的完整例子 包含分页,一个简单的 资产入库系统 并实现了登陆等。

    Struts+spring+JPA例子

    Struts2、Spring和JPA是Java开发中的三大核心框架,它们各自负责应用程序的不同层面,协同工作能够构建出高效、可维护的企业级Web应用。在这个"Struts2.2.3+Spring3.0.5+JPA2.0"的例子中,我们将深入探讨这三个框架...

    SSJ.rar_Jap spring_ssj

    SSJ.rar_Jap_spring_ssj 是一个与Java应用程序开发相关的压缩包,它结合了Struts、Spring和JAP(可能是Java应用平台)这三种技术。这个项目可能是一个示例或者教程,展示了如何将这三个框架集成在一起以实现特定的...

    Spring2.5+struts1.2+JPA集成

    由于文件的大小限制,所需jar包请自行加入。但要注意在项目发部的时候,tomcat启动时总是报错,解决办法是把Tomcat中项目的lib文件夹下的asm-2.2.3.jar包删掉!或者把Spring的AOP Library包移除就OK了!

    JPA+Spring+Struts整合实例

    在Java企业级应用开发中,Spring、Struts和JPA(Java Persistence API)是三个非常重要的框架。它们分别负责不同的职责:Spring作为一个全能型框架,提供了依赖注入(DI)和面向切面编程(AOP),以及对其他框架的...

    ssj.rar_jpi框架_spring的jpi_struts2 jsp spring

    SSJ.rar是一个包含示例代码的压缩包,主要展示了如何集成和使用JPI(可能是Java Persistence Interface或自定义的框架)框架与Spring以及Struts2进行Web应用开发。在这个项目中,开发者可能想要演示如何在Spring中...

    ssj整合开发jar包清单

    Spring 是一个开源的轻量级 Java EE 开发框架,其核心功能包括依赖注入、面向切面编程等。Spring 3.0 版本带来了许多新的特性和改进,如支持 HTTP 方法注解、更强大的 XML 配置等。 - **核心库**: - `spring-core...

    spring-mvc-demo.zip

    Spring MVC 框架是Java开发中的一个核心组件,它为构建Web应用程序提供了一种模型-视图-控制器(MVC)架构。Spring框架本身提供了丰富的功能,包括依赖注入、AOP(面向切面编程)、事务管理等,而Spring MVC则是...

    Struts1.3+spring2.5+JPA(hibernate) demo

    Struts1.3、Spring2.5和JPA(基于Hibernate)是Java Web开发中三个重要的框架,它们的集成使用可以构建出强大的企业级应用。这个"Struts1.3+spring2.5+JPA(hibernate) demo"提供了一个实践性的学习案例,帮助初学者...

    spring jpa操作数据库 级联数据 hibernate

    SSJ通常指的是Struts2、Spring和JPA的集成,这种架构常见于大型企业应用。通过PPTX文件"ssj框架搭建",我们可以了解到如何配置这三个框架,实现它们之间的协作。 6. **示例项目和资源:** - "JPA+-amp+Hibernate+...

    struts2+spring2.5+jpa(基于注释)

    Struts2、Spring2.5 和 JPA 是Java企业级开发中的三大核心技术,它们共同构建了一个强大且灵活的Web应用程序框架。在这个“SSJ使用注释版”项目中,开发者利用注解的方式简化了配置,使得整个应用的搭建更加直观和...

    ssh+ssj+ssi jar包第一部分

    苦恼直接使用此包可以进行ssh ssi ssj 使用jpa开发时支持给中ROM,版本:struts2.1.8+spring2.5.6+ibatis2.3+hibernate3.3.2+structjson+dwr不多说了 分两部分,因为每次不超过 15M, 这些包一共 18M多 第二部分 ...

    Spring SpringMVC Jpa整合Demo

    在JavaEE开发中,Spring、SpringMVC和JPA是三个非常重要的框架,它们的整合应用可以极大地提高开发效率和代码质量。这个"Spring SpringMVC Jpa整合Demo"就是一个典型的例子,它展示了如何将这三个框架协同工作,构建...

Global site tag (gtag.js) - Google Analytics