zoukankan      html  css  js  c++  java
  • Spring MVC体系结构和处理请求控制器

    1:MVC:

    视图(View)-对应组件:JSP或者HTML文件

    控制器(Controller)-对应组件:Servlet

    模型(Model) -对应组件:JavaBean

    2:JSP Model1

    (浏览器请求给JSP,JSP传送给JavaBean,JavaBean传送给数据库,
    数据库返回数据给JavaBean,JavaBean返回数据给JSP,JSP响应给浏览器)
    JSP Model2
    JSP:负责生成动态网页
    Servlet:负责流程控制
    JavaBean:负责业务逻辑处理
    (浏览器发送请求到Servlet控制器,Servlet控制器实例化给JavaBean模型和JSP视图
    JSP 和JavaBean 之间进行相互转化,JavaBean和数据库进行交互,
    JSP最后响应给浏览器)

    3:MVC 优点
    多视图共享一个模型,大大提高代码的可重用性
    MVC三个模块相互独立,松耦合架构
    控制器提高了应用程序的灵活性和可配置性
    有利于软件工程化管理

    MVC 缺点
    原理复杂
    增加了系统结构和实现的复杂性
    视图对模型数据的低效率访问


    完美的系统框架=松耦合+高重用性+高扩展性
    三层架构,
    完美架构雏形(SSM)
    spring控制,解耦


    tomact优化

    4:Spring MVC
    结构最清晰的MVC Model2实现
    Controller
    ModelAndView


    400请求失败

    5:Spring MVC框架搭建步骤

    下载jar文件并导入工程

            spring-web-3.2.13.RELEASE.jar

            spring-webmvc-3.2.13.RELEASE.jar

    配置文件

            在web.xml中配置Servlet

            创建Spring MVC的配置文件

    创建Controller-处理请求的控制器

             BeanNameUrlHandlerMapping

    创建View-JSP

     部署运行

    6:注解驱动控制器:

    <context:component-scan />

                @Controller:标注一个普通的JavaBean成为可以处理请求的控制器

                @RequestMapping:通过请求URL进行映射

    <mvc:annotation-driven />

                一键式配置,通过注解的方式进行Spring MVC开发

                  DefaultAnnotationHandlerMapping

                  AnnotationMethodHandlerAdapter

    7:Spring MVC的生命周期:

         

    DispatcherServlet::前端控制器

    HandlerMapping:处理器映射器

    HandlerAdpater:处理器适配

    Handler:相当于Controller

    ViewResolver:视图解析器

    View:视图,jsp

    HttpMessageConveter:消息转换器

    第一步:发起请求到前端控制器(DispatcherServlet)
        第二步:前端控制器请求HandlerMapping(处理器映射器)查找 Handler
            可以根据xml配置、注解进行查找
        第三步:处理器映射器HandlerMapping向前端控制器返回Handler
        第四步:前端控制器调用处理器适配器去执行Handler
        第五步:处理器适配器去执行Handler
        第六步:Handler执行完成给适配器返回ModelAndView
        第七步:处理器适配器向前端控制器返回ModelAndView
            ModelAndView是springmvc框架的一个底层对象,包括 Model和view
        第八步:前端控制器请求视图解析器去进行视图解析
            根据逻辑视图名解析成真正的视图(jsp)
        第九步:视图解析器向前端控制器返回View
        第十步:前端控制器进行视图渲染
            视图渲染将模型数据(在ModelAndView对象中)填充到request域
        第十一步:前端控制器向用户响应结果

    8:SpringMVC 框架的特点:

               清晰地角色划分

               灵活的配置功能

               提供了大量的控制器接口和实现类

               真正做到与View层的实现无关(JSP、Velocity、Xslt等)

               国际化支持

               面向接口编程

               Spring提供了Web应用开发的一整套流程,不仅仅是MVC,他们之间可以很方便的结合一起

    9:参数传递:


    单例模式
    BaseDao:操作数据库的基类
    init()方法
    每个线程对系统操作都需要一个new一个BaseDao实例
    I/O操作消耗系统资源,影响系统性能


    对于每个线程,可共享一个实例
    单例模式:(构造方法私有化,可以进行对象的设计,提供对象数据)
    系统运行期间,有且仅有一个实例
    一个类只有一个实例----最基本的(只提供私有构造器)
    他必须自行创建这个实例
    (定义了静态的该例私有对象)
    他必须自行向整个系统提供这个实例
    (提供一个静态的公有方法,返回创建或者获取本身的静态私有对象)


    安全问题出现在创建对象初期,由于创建类,访问类较多的情况下,
    这种并发情况下多采用静态块来解决。

    单例模式又分为懒汉模式,饿汉模式,
    懒汉模式:时间换空间
    在类加载时不能创建实例,采用延迟加载的方法,在运行时调用创建实例
    特点 线程不安全,延迟加载(lazy Loading)。类加载速度快,
    运行时获取类的速度慢, 消耗资源少。
    如何解决线程安全问题?
    同步线程(synachornized)加锁,类锁,方法锁,局部锁 
    消耗资源多

    饿汉模式:(静态内部类)空间换时间
    在类加载的时候,就完成初始化
    特点 线程安全,不具备延迟加载的特性。类加载较慢,获取对象速度快、
    消耗资源较多。

    Contorller是单例的,其内部的成员变量都是公用的,开发时需要注意资源使用问题
    一般情况下,Controller内部成员变量只有service对象

  • 相关阅读:
    IoC和AoP
    学习树
    Avalon Framework概念
    java利用WatchService实时监控某个目录下的文件变化并按行解析
    [DBT-08001] 无法检查可用内存。
    C#之http协议与soap协议之间的区别
    C#之ActionResult 详解
    C#实现连接池
    C#MVC之传入字典的模型项为 null,但此字典需要类型“System.Decimal”的非 null 模型项。
    Func的介绍
  • 原文地址:https://www.cnblogs.com/zjx-959/p/13938026.html
Copyright © 2011-2022 走看看