`
java虫
  • 浏览: 535988 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SPRING MVC学习笔记

阅读更多

 

以前项目一直用struts,最近到别的项目组里,用spring MVC,开始看spring in action学习,<o:p></o:p>

一、与struts的不同<o:p></o:p>

1.Spring的整个MVC配置是基于IOC容器:<o:p></o:p>

通过容器对javabean进行管理,创建对象和销毁对象,管理它的生命周期。通过IOC容器,打破了传统意义上必须使用new创建对象的说法.
使用beanfactory得到类的实例。只要在配置文件中注册javabean类。通过类的名称即可得到类的对象。<o:p></o:p>

2.引如了一个新的数据类型:ModelAndView 对象.<o:p></o:p>

Spring提供了明确的Model, View概念和相应的数据结构
Spring里有一个数据类型叫做ModelAndView
它只是简单地把要显示的数据和显示的结果封装在一个类里。
但是它却提供了明确的MVC概念,尤其是model概念的强化,
使程序的逻辑变得更清晰了。<o:p></o:p>

3.SpringControllerSingleton的,或者是线程不安全的<o:p></o:p>

Struts一样,SpringControllerSingleton的,这意味着每个request过来,系统都会用原有的instance去处理,这样导致了两个结果:我们不用每次创建Controller,减少了对象创建和垃圾收集的时间;由于只有一个Controllerinstance,当多个线程调用它的时候,它里面的instance变量不是线程安全的。 <o:p></o:p>

这也是Webwork2吹嘘的地方,它的每个Action都是线程安全的。因为每过来一个request,它就创建一个Action对象。由于现代JDK垃圾收集功能的效率已经不成问题,所以这种创建完一个对象就扔掉的模式也得到了好多人的认可。Rod Johnson甚至以此为例证明J2EE提供的object pool功能是没多大价值的。 <o:p></o:p>

4 Spring不象Webwork2tapestry那样去隐藏Servlet相关的元素如HttpServletRequestHttpServletResponse <o:p></o:p>

5 Spring提供了不错但不够充分的interceptor机制<o:p></o:p>

strutsRequestProcessor类来进行一点有限的扩展。<o:p></o:p>

到了Webwork2,似乎interceptor一下子成了整个Framework的核心,除了Action的核心部件,其它所有的东西都是interceptor<o:p></o:p>

Spring也提供了它的interceptor机制,它的HandlerInterceptor三个interceptor方法:peHandle, postHandle, afterCompletion。分别对应Controller执行前,Controller执行后和page render之后<o:p></o:p>

6 Spring提供了MultiActionController

使它可以在一个类里包含多个Action ,这个设计和strutsDispatchAction有点类似。<o:p></o:p>

7、 Spring提供了更多的选择方式 <o:p></o:p>

Spring里提供了好多不同的Controller类和ViewResolver <o:p></o:p>

8、 Springtag <o:p></o:p>

尽管Springtag数量上少得可怜,但它却是精心设计的。 <o:p></o:p>

二.处理过程
其实每个MVC framework的执行过程都是大同小异的,<o:p></o:p>

当个request过来时,它都通过一个Servlet来响应request
再根据request的路径名和配置将这个request dispatch给一个Controller执行,
最后将之返回配置文件里对应的页面。在Spring MVC里,
这个Servlet的名字叫DispatchServlet<o:p></o:p>

处理流程:<o:p></o:p>

1.客户发出请求request,DispatchServletSpring 的前端控制器)负责统一分发请求到Spring控制器。
2.
统一分发之前,需要借助于handlermapping对象定位到具体的Spring控制器。
3.Spring
控制器处理DispatchServlet分发过来的的请求,执行业务逻辑或调用业务逻辑组件。
4.
一旦控制器处理完客户请求,则返回一个ModelAndView 对象给DispatchServlet前端控制器.,ModelAndView 对象包含模型和视图信息。<o:p></o:p>

5DispatchServlet询问视图解析器,查找相应视图。<o:p></o:p>

6.由某具体视图为用户显示页面。

.找到控制器<o:p></o:p>

BeanNameUrlHandlerMapping-根据控制器名称将控制器映射到URL,适合比较简单的应用。<o:p></o:p>

SimpleUrlHandlerMapping-用上下文配置文件中定义的属性集合将控制器映射到URL,比较常用。<o:p></o:p>

CommonsPathMapHandlerMapping-使用 控制器代码中的元数据将控制器映射到URL<o:p></o:p>

使用多种映射器需配置order属性定义优先级。<o:p></o:p>

四、找到视图<o:p></o:p>

InternalResourceViewResolver-将视图名解析为一个模板文件(如jspVelocity模板)渲染视图对象,<o:p></o:p>

BeanNameViewResolver-将视图名解析为一个DispatcherServlet应用上下文中的视图Bean<o:p></o:p>

ResourceBundleViewResolver-将视图名解析为ResourceBundle中的视图对象<o:p></o:p>

XMLViewResolver-从一个XML文件中解析视图Bean,这个文件是从DispatcherServlet应用上下文中分离出来的,适合Bean视图有很多的情况。<o:p></o:p>

同样,使用多种视图解析器也要用order属性定义优先级。

<o:p>附控制器类图</o:p><o:p></o:p>

  • 大小: 44.8 KB
分享到:
评论

相关推荐

    Spring MVC 学习笔记

    以下是对Spring MVC学习笔记的详细解释: 1. **创建项目**: 创建Spring MVC项目通常从构建一个Maven工程开始。在命令行中使用Maven的`archetype:generate`命令创建一个JEE5的Web工程。在提供的例子中,使用了特定...

    spring mvc学习笔记

    ### Spring MVC 学习笔记 #### 一、Spring MVC 核心组件与工作流程 **Spring MVC** 是 **Spring Framework** 的一个重要模块,主要用于构建基于 Web 的应用程序。它提供了简化 Web 开发的一系列功能,包括但不限于...

    spring MVC学习笔记

    **Spring MVC 学习笔记** Spring MVC 是 Spring 框架的一个模块,专门用于构建 Web 应用程序。它提供了一种模型-视图-控制器(Model-View-Controller)架构,帮助开发者处理请求、控制应用程序流程,并实现业务逻辑...

    Spring MVC学习笔记MD.7z

    这个压缩包“Spring MVC学习笔记MD.7z”包含了作者在学习Spring MVC过程中的笔记、源代码以及相关文档,非常适合初学者或希望深入理解Spring MVC的开发者。 首先,`SpringMVC-Study.7z` 可能是作者整理的Spring MVC...

    Spring MVC 学习笔记 一 创建项目

    **Spring MVC 学习笔记 一 创建项目** 在IT领域,Spring MVC是Java Web开发中的一个强大框架,它简化了构建交互式Web应用程序的过程。本笔记将深入探讨如何创建一个基本的Spring MVC项目,让我们开始吧。 首先,...

    Spring MVC 学习笔记(一)

    **Spring MVC 学习笔记(一)** Spring MVC 是 Spring 框架的重要组成部分,它是一个用于构建 Web 应用程序的模型-视图-控制器(MVC)框架。Spring MVC 通过解耦应用程序的不同部分,使开发人员能够更轻松地进行...

    Spring MVC 学习笔记 七 controller中其他可用的annotation

    这篇"Spring MVC 学习笔记 七 controller中其他可用的annotation"可能涵盖了除我们常见的`@RequestMapping`之外的其他注解,这些注解使得控制器功能更加丰富和灵活。下面将详细探讨Spring MVC中Controller相关的注解...

    Spring MVC 学习笔记 九 json格式的输入和输出

    在这个学习笔记中,我们将深入探讨如何在Spring MVC中处理JSON格式的数据,包括输入和输出。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于前后端数据传输。 1. **JSON格式简介** ...

    Spring MVC 学习笔记 十二 PDF/Excel格式输出

    本学习笔记主要围绕Spring MVC的使用、配置和核心组件进行深入探讨,旨在帮助开发者更好地理解和掌握这一框架。 在Spring MVC中,Model代表业务逻辑和数据,View负责数据的展示,而Controller处理用户请求,协调...

    Spring MVC 学习笔记 十一 data binding

    本学习笔记将深入探讨Spring MVC中的数据绑定特性。 1. **数据绑定的基本概念** 数据绑定是Spring MVC中的一种核心功能,它允许我们将HTTP请求参数、JSON或XML数据自动映射到Java对象的属性上。这减少了手动提取...

    Spring MVC 学习笔记 十四 对locale和theme的支持

    这篇学习笔记将深入探讨这两个概念及其在实际开发中的应用。 1. **Locale(地区设置)支持** - `Locale`是Java中的一个类,用于表示特定的语言和地区。例如,`zh_CN`代表简体中文,`en_US`代表美国英语。 - ...

    Spring MVC 学习笔记 五 controller与requestmapping

    工程文件 博文链接:https://starscream.iteye.com/blog/1063966

    spring_mvc学习笔记

    在Spring MVC的学习过程中,了解和掌握其核心概念与机制至关重要。Spring MVC是Spring框架的一个模块,主要用于构建Web应用程序。在Spring 3.0.x版本中,Spring MVC进行了大量的改进,引入了许多新特性和优化,使其...

    Spring3 MVC 学习笔记 入门

    ### Spring3 MVC 学习笔记入门知识点解析 #### 一、Spring MVC 概念与架构 **Spring MVC** 是 Spring Framework 的一个重要模块,主要用于构建基于 Web 的应用。它实现了 Model-View-Controller(MVC)设计模式,...

    Spring框架学习笔记

    这份"Spring框架学习笔记"涵盖了Spring框架的基础知识、核心组件以及高级特性,对于初学者来说是一份宝贵的资料。 一、Spring框架概述 Spring框架是为了解决企业应用开发的复杂性而设计的,它提供了一个全面的基础...

Global site tag (gtag.js) - Google Analytics