概述

传统的Model1和Model2

在Model1的模式下,整个Web应用几乎全部是由JSP页面组成,接受和处理用户请求,并对请求处理后直接做出响应;JSP身兼View和Controller两个角色,将控制逻辑和表现逻辑糅合在一起。

缺点:

1.代码的复用性低。

2.增加了应用扩展和维护的难度。

Model2是基于MVC架构的设计模式,具体实现如下如:



MVC的思想是将一个应用分成三个基本部分,模型(Model)、视图(View)、控制器(Controller),这三个部分以最少的耦合协同工作,从而提高应用程序的可扩展性和可维护性。

1.模型(Model):JavaBean

2.视图(View):JSP页面

3.控制器(Controller):Servlet

MVC模式使得Model2具有组件化特点,更能适用于大规模应用的开发(但增加了开发的复杂度)。

MVC优势


MVC并不是Java语言和Web应用特有的设计思想,它是所有面向对象程序设计语言都应该遵守的规范。

在经典的MVC模式中,事件由控制器处理,控制器根据事件的类型改变模型或视图,反之亦然。

MVC的特点:

1.多个视图可以对应一个模型。按MVC的设计模式,一个模型对应多个视图,可以减少代码的复制及代码的维护量。一旦模型发生改变,也易于维护。

2.模型返回的数据与显示逻辑分离。模型数据可以应用任何的显示技术。

3.应用被分为三层,降低了各层之间的耦合,提供了应用的可扩展性。

4.控制层的概念也很有效,由于把不同的模型和不同的视图组合在一起,完成不同的请求。因此,控制层可以说包含了用户请求的权限的概念。

5.MVC更符合软件工程化管理的精神。不同的层各司其职,每一层的组件具有相同的特征,这有利于通过工程化和工具化的方法产生管理程序代码。

注:经典MVC思想与Web应用的MVC思想存在一定差别,主要原因是Web应用是一种请求/响应模式。如果用户不对应用发出请求,视图无法主动更新自己。

Spring MVC


Spring框架提供了构建Web应用程序的全功能MVC模块:Spring MVC。

Spring MVC提供了一个DispatcherServlet作为前端控制器来分发请求,同时提供灵活的配置处理程序映射、视图解析、语言环境和主题解析,并支持文件上传。Spring MVC包含多种视图技术,分离了控制器、模型对象、分派器和处理程序对象的角色,使他们更容易进行定制。

Spring MVC特点:

1.具有强大的灵活性、非侵入性、可配置性。

2.提供了前端控制器DispatcherServlet,无需额外开发控制器对象。

3.分工明确,包括控制器、验证器、命令对象、模型对象、处理程序映射视图解析器等,每一个功能实现由一个专门的对象负责完成。

4.可以自动绑定用户输入,并正确转换数据类型。

5.使用一个名称/值得Map对象实现更加灵活的模型数据传输。

6.内置常见的校验器,可以校验用户输入,如果校验不通过,则重定向回输入表单。输入校验可选,支持编程方式和声明方式。

7.支持国际化,支持根据用户区域显示多国语言,并且国际化的配置非常简单。

8.支持多种视图技术。

9.提供简单而强大的JSP标签库,支持数据绑定功能。

Spring MVC的使用


Spring MVC的DispatcherServlet是一个Servlet,继承自HTTPServlet,所以使用时需要配置在Web应用的web.xml文件中:

  1 <servlet>
2 <!-- Servlet的名称 -->
3 <servlet-name>springmvc</servlet-name>
4 <!-- Servlet对应的Java类 -->
5 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
6 <!-- 当前Servlet的参数 -->
7 <init-param>
8 <!-- Servlet参数的名称 -->
9 <param-name>contextConfigLocation</param-name>
10 <!-- Servlet参数的值:Spring MVC的配置文件路径 -->
11 <param-value>classpath:springmvc-config.xml</param-value>
12 </init-param>
13 <!-- Web应用启动时立即加载Servlet -->
14 <load-on-startup>1</load-on-startup>
15 </servlet>
16 <!-- Servlet的映射声明 -->
17 <servlet-mapping>
18 <!-- 请求对应的Servlet的名称 -->
19 <servlet-name>springmvc</servlet-name>
20 <!-- 监听当前域的所有请求 -->
21 <url-pattern>/</url-pattern>
22 </servlet-mapping>

配置文件中各条配置含义见注释内容,整个文件内容的含义:配置了一个DispatcherServlet,该DispatcherServlet在Web应用启动时立即加载,DispatcherServlet在加载时需要一个Spring MVC的配置文件,默认配置下会到应用程序目录的WEB-INF目录下查找[servlet-name]-servlet.xml文件,即在上面配置中就是查找/WEB-INF/springmvc-servlet.xml。

上面配置是把配置文件命名为springmvc-config.xml,并使用参数元素init-param进行了配置,表示DispatcherServlet会查找应用程序的classpath:springmvc-config.xml文件作为配置文件,进行解析并根据配置文件内容创建一个WebApplicationContext容器对象(上下文环境)。

WebApplicationContext继承自ApplicationContext容器,它的初始化方式和ApplicationContext不同,因为WebApplicationContext需要ServletContext实例,必须拥有Web容器的前提下才能完成启动Spring Web应用上下文的工作。

MVC模式、Spring MVC框架及DispatcherServlet先记录到这里,后面继续Spring MVC的使用记录。

MVC模式和Spring MVC初识的更多相关文章

  1. Spring MVC 学习笔记 spring mvc Schema-based configuration

    Spring mvc 目前支持5个tag,分别是 mvc:annotation-driven,mvc:interceptors,mvc:view-controller, mvc:resources和m ...

  2. java之spring mvc之初始spring mvc

    1. mvc : mvc框架是处理 http请求和响应的框架 2. mvc 做的事情有哪些: 将 url 映射到一个java的处理方法上 将表单数据提交到 java 类中 将后台 java 类处理的结 ...

  3. Spring MVC(十六)--Spring MVC国际化实例

    上一篇文章总结了一下Spring MVC中实现国际化所需的配置,本文继上一文举一个完整的例子,我选择用XML的方式.我的场景是这样的: 访问一个页面时,这个页面有个表格,对表头中的列名实现国际化. 第 ...

  4. Spring MVC mapping[From Spring MVC Beginner's Guide]

    In a Spring MVC application, the URL can logically be divided into five parts (see the following fig ...

  5. Struts2如何实现MVC,与Spring MVC有什么不同?

    Struts2采用filter充当前端控制器处理请求,filter会根据Struts.xml的配置,将请求分发给不同的业务控制器Action,再由Action处理具体的业务逻辑.Action处理完业务 ...

  6. 玩转spring mvc(四)---在spring MVC中整合JPA

    关于在Spring MVC中整合JPA是在我的上一篇关于spring mvc基本配置基础上进行的,所以大家先参考一下我的上一篇文章:http://blog.csdn.net/u012116457/ar ...

  7. Spring MVC 零配置 / Spring MVC JavaConfig

    1. Spring MVC的核心就是DispatcherServlet类,Spring MVC处理请求的流程如下图所示: 2. Spring MVC中典型的上下文层次 当我们初始化一个Dispatch ...

  8. 【spring mvc】后台spring mvc接收List参数报错如下:org.springframework.beans.BeanInstantiationException: Failed to instantiate [java.util.List]: Specified class is an interface

    后台spring mvc接收List参数报错如下:org.springframework.beans.BeanInstantiationException: Failed to instantiate ...

  9. 1.2(Spring MVC学习笔记) Spring MVC核心类及注解

    一.DispatcherServlet DispatcherServlet在程序中充当着前端控制器的作用,使用时只需在web.xml下配置即可. 配置格式如下: <?xml version=&q ...

随机推荐

  1. mkdir函数 (创建文件夹函数)

    mkdir函数 #include <stdio.h> int main(){ mkdir("C:\\Users\\admin\\desktop\\test"); ; }

  2. Thymeleaf实现页面静态化

    如果用户所有的请求,都需要Thyleaf渲染后直接返回给用户,后台就存在大量的查询操作,数据库的压力就会骤然上升,请求的时间就会延长,带来极不好用户体验,现在市面上流行的就是页面的静态化处理,下面就来 ...

  3. 哈希算法原理【Java实现】(十)

    前言 在入学时,学校为我们每位童鞋建立一个档案信息,当然每个档案信息都对应档案编号,还有比如在学校图书馆,图书馆为每本书都编了唯一的一个书籍号,那么问题来了,当我们需要通过档案号快速查到对应档案信息或 ...

  4. jvm虚拟机笔记<二> 垃圾回收与内存分配

    确定对象已废弃需要两步: 利用可达性分析算法(与GC roots有关联——虚拟机栈中的对象,方法区静态对象,方法区常量对象,本地方法引用的对象)判断是否需要回收. 是否覆盖过finalize方法并执行 ...

  5. C# HttpClient 请求认证、数据传输笔记

    目录 一,授权认证 二,请求类型 三,数据传输 C# HttpClient 请求认证.数据传输笔记 一,授权认证 客户端请求服务器时,需要通过授权认证许可,方能获取服务器资源,目前比较常见的认证方式有 ...

  6. llinux/重启/用户切换/注销

    一.指令 shutdown命令 shutdown -h now //立即关机 shutdown -h 2 //分钟后关机 shutdown -r now //立即重启 shutdown -r 1 // ...

  7. docker容器的学习笔记

    目录 Docker入门学习笔记(一) 1. 什么是Docker? 2. Docke的目标 3. Docker通常应用场景 4. Docker的基本组成 补:Docker容器相关技术简介 安装Docke ...

  8. Java学习 1.2——简述JVM,JRE,JDK的关系

    在上一节中,我们了解了JVM相关的知识,有兴趣的话可以先去看一下: Java学习 1.1——(JVM介绍)Java为什么能够跨平台? 这个篇主要分享的是JRE,JDK,JVM三者的区别,简言之: JD ...

  9. javaWeb核心技术第八篇之Cookie和Session

    会话技术: 会话是什么? 浏览器和服务器交互,浏览器打开网页访问服务器,会话开始,正常交互. 浏览器关闭,会话结束. 会话能干什么? 会话可以共享数据. Cookie和session将数据保存在不同的 ...

  10. 首个企业架构TOGAF角色扮演案例培训的诞生

    BangEA企业架构系列在不同机构做了不少TOGAF认证课,自己都觉得有点枯燥了,我在想我们IT帮2020年第一期的认证课是不是该换种授课方式呢?想到就做......TOGAF认证培训,最早主要就是讲 ...