一、了解MVC

  mvc这种设计模式,分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),不光运用于Web领域,而且也能用于非Web领域;可以特指一种表现层设计模式,不限于Java语言;Java Web应用中应用的最广泛的设计模式便是MVC模式,目前的主流Web框架大多也是基于MVC设计模式所编写的。

  1、JavaWeb开发模式

    C/S:客户端 / 服务器

    B/S: 浏览器 / 服务器(主要采用mvc框架模式)

    JavaBean:就是一个普通类(实体bean),包含三样标准:无参构造、私有属性、公共的getter和setter方法;

  2、mvc在Java web中具体应用

    Model:模型可以代表着一种企业规范,就是业务流程/状态的处理以及业务规则的规定,业务模型的设计可以说是MVC的核心。一般Model层包括业务处理层和数据访问层。数据访问层主要是对数据库的一些操作的封装。业务处理层应用JavaBean构建,JavaBean主要是用作将从View层获取的数据和数据库的数据进行桥接。除却JavaBean以外,若想构建分布式应用系统,可以应用EJB组件进行业务逻辑层的构建。
    View:视图即是展示给用户实际进行交互的,像HTML、JSP等。
    Controller:控制器,一般控制请求的处理逻辑,负责请求转发;具体的可以理解为对View层提交的请求为其设置对应的Servlet进行特定功能的处理,一般是编写在Model中的业务处理层中的,相对于一个中介者的作用。

  如图所示:

    MVC模式在最熟悉的框架中如:Struts2、spring MVC等等,都是基于MVC模式;

    其中总结Model模式,常见的如下:

    <1>Jsp+JavaBean
      需要在jsp页面中检查请求的参数是否正确,显示和业务逻辑操作会耦合度高,以后维护起来比较困难;相对于纯jsp页面去做开发比较,程序的可读性变高了,大部分代码写在JavaBean上,可重复率变高了(JavaBean的设计就是用来重用、封装,大大减少编写重复代码的工作);
    <2>JSP+Servlrt+JavaBean
      基于MVC模式的开发进行的,拥有分层思想:高内聚、低耦合;

  3、springmvc与spring的关系?

    springmvc属于spring框架的后续产品,用在基于MVC的表现层开发,类似于struts2框架;spring参考链接 spring知识点  ;

二、springmvc 的认识

  Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还可以是 Struts 这样的 Web 框架。  

  1、springmvc工作流程

  (1)客户端通过url发送请求

  (2)核心控制器Dispatcher Servlet接收到请求,通过系统或自定义的映射器配置找到对应的handler,并将url映射的控制器controller返回给核心控制器。

  (3)通过核心控制器找到系统或默认的适配器

  (4)由找到的适配器,调用实现对应接口的处理器,并将结果返回给适配器,结果中包含数据模型和视图对象,再由适配器返回给核心控制器

  (5)核心控制器将获取的数据和视图结合的对象传递给视图解析器,获取解析得到的结果,并由视图解析器响应给核心控制器

  (6)核心控制器将结果返回给客户端

  2、springmvc与struts2的区别(下面以3种区别为例)

    <1>springmvc的入口是一个servlet,即前端控制器,例如:*.action
      struts2入口是一个filter过虑器,即前端过滤器,例如:/*
    <2>springmvc是基于方法开发,传递参数是通过方法形参,可以设计为单例
      struts2是基于类开发,传递参数是通过类的属性,只能设计为多例
    <3>springmvc通过参数解析器是将request对象内容进行解析成方法形参,将响应数据和页面封装成ModelAndView对象,最后又将模型数据通过request对象传输到页面
      struts采用值栈存储请求和响应的数据,通过OGNL存取数据

  3、springmvc的理解与方法(下面以核心代码为例子)

SpringMVC——MVC的更多相关文章

  1. springMVC <mvc:interceptors>拦截器的使用

    首先在springMVC.xml配置如下代码 <!-- 拦截器 --> <mvc:interceptors> <bean class="com.base.Acc ...

  2. SpringMVC <mvc:view-controller path=""/>标签

    <mvc:view-controller path=""/>标签的作用 对应WEB-INF目录下面的JSP页面,我们知道是不能直接使用URL访问到.需要通过转发的方式, ...

  3. SpringMVC——MVC执行流程底层剖析

    SpringMVC流程图如上面所示,根据上图,串联一下底层源码: 1.在DispatcherServlet中找到doDisPatch 2.观察方法体,然后找到getHandler方法 3.点进方法,发 ...

  4. springmvc <mvc:resource /> 标签使用

    <!-- 配置静态资源 --><mvc:resources location="/static/" mapping="/static/**"/ ...

  5. SpringMVC MVC 架构模式

    MVC 架构模式 MVC(Model.View 和 Controller)是一种架构模式,它是按照职责划分的思想将系统操作分为三个模块进行处理,每个模块负责一个职责,而且模块之间可以相互交互通信,共同 ...

  6. springmvc <mvc:default-servlet-handler/> & <mvc:annotation-driven>

    1. mvc 标签内部加载的基础类: 1). <mvc:view-controller> 1 org.springframework.web.servlet.handler.SimpleU ...

  7. Springmvc mvc:exclude-mapping不拦截 无效

    最近在使用ssm框架搭建一个后台,需要判断每个请求都判断是否登录,未登录跳转到登录页面, 使用发现 mvc:exclude-mapping 不拦截,发现,怎么都无效,依然是进行拦截.查了很多资料,总算 ...

  8. 使用SpringMVC<mvc:view-controller/>标签时踩的一个坑

    <mvc:view-controller>标签 如果我们有些请求只是想跳转页面,不需要来后台处理什么逻辑,我们无法在Action中写一个空方法来跳转,直接在中配置一个如下的视图跳转控制器即 ...

  9. Springmvc <mvc:cros>和<mvc:intercepters>同时使用时,跨域被拦截了

    问题原因:cros也是使用拦截器实现的,并且拦截器配置最后一个处理,导致在跨域处理之前调用了业务拦截器 解决方案:推荐使用http://software.dzhuvinov.com/cors-filt ...

随机推荐

  1. WPF Path.Data 后台代码赋值

    Path path = new Path(); string sData = "M 250,40 L200,20 L200,60 Z"; var converter = TypeD ...

  2. C# Textbox的ImeMode取值对中文输入法的影响(进入才能看清)

    原文:C# Textbox的ImeMode取值对中文输入法的影响(进入才能看清) C# Textbox的ImeMode取值对中文输入法的影响             取值 五笔加加 微软拼音3.0 搜 ...

  3. C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻(转)

    前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...

  4. 用蓝牙连接debian和诺基亚手机

    本方法已经用debian 4.0.诺基亚9300和一个hl-united牌子的USB蓝牙适配器测试过了,效果很好.             1.安装必要的软件包:   #apt-get install ...

  5. QString转换为LPTSTR(使用了reinterpret_cast,真是叹为观止,但是也开阔了思路),三篇文章合起来的各种转换方法

    醉了,windows下宏定义了很多char类型 LPTSTR .今天,直接使用,qt报错,真TM费事. 将“CPU”转化为wcha_t * QString str = "CPU"; ...

  6. synchronized 专题

    这几天不断添加新内容,给个大概的提纲吧,方面朋友们阅读,各部分是用分割线隔开了的: synchronized与wait()/notify() JMM与synchronized ThreadLocal与 ...

  7. C# Oracle数据库操作类

    using System; using System.Data; using System.Collections.Generic; using System.Configuration; using ...

  8. 零元学Expression Blend 4 - Chapter 33 简单轻松的学会如何使用Visual States(下)

    原文:零元学Expression Blend 4 - Chapter 33 简单轻松的学会如何使用Visual States(下) 上篇提到了Visual State Manager中文翻译为视觉状态 ...

  9. 使用百度网盘+Git,把版本控制托管到云端,附精彩评论

    http://www.cnblogs.com/vajoy/p/3929675.html 我试过多个这种双向同步的网盘,在网络状况不好.系统卡顿以及某些程序BUG的情况下,同步会有错乱现象,尤其是多个电 ...

  10. MySQL InnoDB缓冲池(Buffer Pool)

    InnoDB缓冲池并不仅仅缓存索引,它还会缓存行的数据.自适应哈希索引.插入缓冲(Insert Buffer).锁,以及其他内部数据结构. InnoDB还使用缓冲池来帮助延迟写入,这样就能合并多个写入 ...