zoukankan      html  css  js  c++  java
  • SpringMVC---简介

    SpringMVC通过实现Model、View、Controller模式,很好的将数据、业务及展现进行分离,从这样一个角度来说,SpringMVC与Struts非常类似。SpringMVC的设计是围绕dispatherservlet类展开的,dispatherservlet负责将请求派发到特定的handler,通过可配置的handleMapping来处理请求,并且转到对应的视图。Spring3版本中定义一个控制器类必须用@ controller注解进行标注,当控制器类接收到一个请求时,它会在自己内部寻找一个合适的处理方法来处理请求,使用@ RequestMapping注解将方法映射到一些请求上,以便让该方法处理那些请求,这种方法就想一般的类中的方法,方法名、参数列表和返回值并不像struts2之类的框架有很强的限制。

    优点

    • 耦合性低:视图层和业务层分离,这样就运行视图层代码,而不用重新编译模型和控制器代码,同样一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可
    • 重用性高
    • 生命周期成本低
    • 部署快
    • 可维护性高
    • 有利于软件工程化管理

    缺点

    • 没有明确的定义
    • 不适合小型、中等规模的应用程序
    • 增加系统结构和实现的复杂性
    • 视图与控制器间的过于紧密的连接
    • 视图对模型数据库的低效率访问
    • 一般高级的界面工具或构造器不支持模式

    SpringMVC体系结构

    • DispatcherServlet类的运行体系
    1. DispatcherServlet的核心本质:是一个Servlet
    2. init方法在整个系统启动时运行,且只运行一次,因此一般在这个方法中进行初始化操作,这些初始化操作可能包括对容器ApplicationContext的初始化、组件和外部资源的初始化等。
    3. service方法在系统运行的过程中处于侦听模式,侦听并处理所有的web请求
    • DispatcherServlet类的继承体系
    1. 依次继承FrameworkServlet和HttpServletBean
    2. HttpServletBean是Spring对于servlet最低层次的抽象
    3. FrameworkServlet则是在HttpServletBean的基础之上的进一步抽象。通过FrameworkServlet真正的初始化了一个Spring的容器(WebApplicationContext),并引入到servlet对象之中DispatcherServlet通过initStrategies方法查找并装配Spring容器中用户定义的组件bean

    使用SpringMVC,必须在web.xml中配置好DispatcherServlet

    • <listener>

        <listener-class>基本配置包含Log4jConfigListener和ContextLoaderListener,且log4j监听器在前,目前已废除log4j监听器,原因还在努力追问

    • <context-param>指定上下文配置文件路径,基本配置包含log4j和Spring配置文件

        <param-name>指定上下文名称,一般为:名称+ConfigLocation后缀,如:contextConfigLocation,不可随意定义,否则指定的配置文件无法加载成功

        实际上它是org.springframework.web.servlet.FrameworkServlet中的一个成员变量,而FrameworkServlet是DispatcherServlet的父类,log4jConfigLocation目前不得而知

        <param-value>指定上下文路径,如:classpath:applicationContext.xml

    • <servlet>

        <servlet-name>Servlet名称,可以自定义,但是需要遵守规则:比如指定为Spring,那么最好在classpath路径中配置Spring-servlet.xml,否则需要在子元素<init-param>特别指出

        <servlet-class>因为要配置MVC,所以指定为:org.springframework.web.servlet.DispatcherServlet

        <init-param>[定义容器启动时初始化的配置文件,作用主要是指定自定义配置文件的路径,貌似可以指定多个]

          <param-name>[contextConfigLocation,不可更改,原因见3.1]

          <param-value>[可以自定义,如:classpath:spring-servlet.xml,如果不定义,那么默认为:classpath:${servlet-name}-servlet.xml,见4.1]

          <load-on-startup>[定义为1,表示启动等级,参考文章]

    • <servlet-mapping>

        <servlet-name>与4.1保持一致

        <url-pattern>一般定义为“/”,表示所有请求都通过DispatcherServlet来处理

  • 相关阅读:
    kafka 配置属性
    mybatis 启动流程源码分析(二)之 Configuration-Properties解析
    mybatis 配置文件
    mybatis 启动流程源码分析(一)
    mybatis configuration
    使用函数式编程替换if-else
    mybatis 基本使用
    第十二周学习笔记
    T-SQL的进阶:超越基本级别3:构建相关子查询——701小组
    第十周学习笔记
  • 原文地址:https://www.cnblogs.com/xiaobaizhiqian/p/8085836.html
Copyright © 2011-2022 走看看