SpringMVC概念:
    他是一个轻量级的开源框架,应用于表现层,基于MVC的设计模式.
SpringMVC的特点:
    1.他是单例的可以设置成多例.
    2.他的线程是安全的 
    3.他是基于方法级别的拦截
    4.接受请求参数的方式是参数绑定
    5.携带参数到页面是通过request域对象.
SpringMVC流程(重点)
    1.用户向服务器发送一个请求,被SpringMVC的前端控制器DispatchServlet 捕获.
    2.DispatcherServlet接收到请求后调用HandlerMapping处理器映射器.
    3.处理器映射器找到具体的处理器(xml配置或者注解,RequesrtMapper),生成处理器对象及处理器拦截器一并返回给DispatcherServlet
    4.DispatcherServlet调用HandlerAdapter处理器适配器
    5.HandlerAdapter经过适配器调用具体的处理器(Controller)
    6.Controller执行完成后返回ModelAndView
    7.HandlerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet
    8.DispatcherServlet将ModelAndView传给ViewReslover视图解析器
    9.ViewReslover解析后返回具体的View
    10.DispatcherServlet根据View进行渲染视图
    11.DispatcherServlet将渲染完的视图界面最后响应给用户.
SpringMVC中的几个组件说明
    DispatcherServlet:前端控制器,控制整个流程,他是SpringMVC的入口
    HandlerMapper:处理器映射器
    HandlerAdapter:处理器适配器
    ViewResolver:视图解析器,可以解析JSP,freemarker,pdf等
SpringMVC的三大件:(面试可能会问)
   HandlerMapper\HandlerAdapter\ViewResolver
MVC设计模式概念
    M-Model(模型,完成业务逻辑:主要有JavaBean构成,service+dao+entity)
    V-View(视图层,主要是做页面的展示,jsp,html...)
    C-Controller(控制器,主要是接受请求之后调用模型层(M)根据结果返回页面)
SpringMVC常用注解
    1.@Controller:标记在类上,他会表明这个类是一个SpringMVC Controller对象.处理器将会扫描该注解的类的方法,并检测该方法是否使用了@RequestMapping注解.@Controller只是定义类控制器类,真正处理请求的注解是@RequestMapping.
    大多数框架使用的时候都是整合因此在一个类上标记@Controller还不能真正意义上说他是SpringMVC的控制器,这个时候Spring不认识这个注解,需要把控制器类交给Spring来管理,一下又两种方式:
    1.直接写这个类的全路径
    <bean class="com.xxx.xxx.当前类"/>
    2. 路径写到当前Controller注解类的上一层
    <context:component-scan base-package = "com.xxx"/>注意当前配置@Controller这个类就不要写上去了
    Controller不会依赖HttpServletRequest和HttpServletResponse等HttpServlet对象,他是可以直接通过Controller的方法参数获取到的.小Demo
@Controller
public class SaveController() {
    @RequestMapping("/save")
    public String save() {
        System.out.println("保存save");
        return "success";
    }
}
    2.@RequestMapping
        RequestMapping是用来处理请求url的注解
        RequestMapping中的六个属性:
        2.1--value:请求的实际地址
        2.2--method:请求的类型.GET,POST,PUT,DELETE等
       @RequestMapping(value="",method="RequestMethod.GET")
       2.3--consumes:指定请求的提交内容的类型(Content-Type),例如text/html
        2.4--produces:指定返回的内容类型
        2.5--params:指定request中必须包含某些参数值,才让该方法进行处理
        2.6--headers: 指定request中必须包含某些指定的header值,才让该方法处理请求
        3.@ResponseBody
            该注解用于将Controller的方法返回对象通过HtpMessageConverter转换成指定个时候写到Response对象的body数据中,
            使用场景:当返回的数据不是html标签,而是其他的数据格式比如json,xml等使用.
        4.@PathVariable
            用于将请求url中的模版变量映射到功能处理方法的参数上,取出url模版中的变量作为参数
        5.@RequestParam
            用于将请求参数区数据映射到功能处理方法的参数上.
        6.@CookieValue
            参数:  value 参数名
            required:是否必须
            defaultValue:默认值
        7.@Resource和@Autowired
            他们都是做bean注入时候使用,@Resource不是Spring的注解他的宝石javax.annotation.Resource需要导包,但是Spring支持该注解的注入
    共同点:两者都可以卸载字段和setter方法上,如果都写在字段上就不需要在写setter方法
    不同点:
        @Autowired是Spring提供的注解需要导报,按照byType注入,默认情况下他要求依赖对象必须存在,如果允许为null值,设置他的required属性为false.
        @Resource默认按照byName自动注入,他有两个重要的属性,name和type,Spring将该注解的name属性解析为bean的名字,type属性解析为bean的类型,如果想要使用name属性,需要使用byName的自动注入,使用type属性需要使用byType自动注入策略.如果什么属性都不制定,她会通过反射使用byName自动注入策略.

对SpringMVC框架的理解(转)的更多相关文章

  1. springMVC框架的理解加深,个人的一些想法

    一 写spring-boot整合的时候,有种想看源码的冲动!呸,是钻牛角尖的毛病犯了... @RequestMapping("/index") public String inde ...

  2. Java面试之五大框架的理解

    五大框架(springMVC,struts2,spring,mybatis,hibernate) 说说你对springMVC框架的理解? 简要口述(如果感觉说的少可以在完整答案里面挑几条说) Spri ...

  3. 教你搭建SpringMVC框架( 更新中、附源码)

    一.项目目录结构 二.SpringMVC需要使用的jar包 commons-logging-1.2.jar junit-4.10.jar log4j-api-2.0.2.jar log4j-core- ...

  4. 教你搭建SpringMVC框架( 附源码)

    一.项目目录结构 二.SpringMVC需要使用的jar包 commons-logging-1.2.jar junit-4.10.jar log4j-api-2.0.2.jar log4j-core- ...

  5. 手写迷你SpringMVC框架

    前言 学习如何使用Spring,SpringMVC是很快的,但是在往后使用的过程中难免会想探究一下框架背后的原理是什么,本文将通过讲解如何手写一个简单版的springMVC框架,直接从代码上看框架中请 ...

  6. (二)springMvc原理和手写springMvc框架

    我们从两个方面了解springmvc执行原理,首先我们去熟悉springmvc执行的过程,然后知道原理后通过手写springmvc去深入了解代码中执行过程. (一)SpringMVC流程图 (二)Sp ...

  7. SpringMVC框架之第一篇

    2.SpringMVC介绍 2.1.SpringMVC是什么 SpringMVC是Spring组织下的一个表现层框架.和Struts2一样.它是Spring框架组织下的一部分.我们可以从Spring的 ...

  8. SpringMVC框架之第二篇

    6.参数绑定(重点) Springmvc作为表现层框架,是连接页面和service层的桥梁,它负责所有请求的中转.怎么从请求中接收参数是重点,这也体现了我们刚开始说的Springmvc的第一个作用:“ ...

  9. myBatis+Spring+SpringMVC框架面试题整理

    myBatis+Spring+SpringMVC框架面试题整理(一) 2018年09月06日 13:36:01 新新许愿树 阅读数 14034更多 分类专栏: SSM   版权声明:本文为博主原创文章 ...

随机推荐

  1. python代码覆盖率coverage简介与用法

    如果衡量单元测试对相应代码的测试重量,覆盖率是一个必要非充分条件,因此统计代码的覆盖率,检视单测是否充分,就尤为的重要.这里针对python-unittest的单测的覆盖率coverage进行使用说明 ...

  2. pycharm2017.1破解方法

    破解专业版,在server选项里边输入 http://elporfirio.com:1017/就可以了

  3. Arrays.asList()后调用add,remove这些method时出现java.lang.UnsupportedOperationException异常

    String[] queryNames = request.getParameterValues("queryName"); List<String> queryNam ...

  4. synchronized(2)修饰方法之:普通方法

    synchronized方法 [同一个对象的该方法一次只有一个线程可以访问,该对象的其它同步方法也被阻塞] 方法声明时使用,放在范围操作符(public等)之后,返回类型声明(void等)之前.这时, ...

  5. 12.1Java-构造方法

    一.构造方法 作用:在new的同时对成员变量赋值,给对象的属性初始化赋值格式:权限 方法名(参数列表){}方法的名字,必须和类的名字完全一致,大小写一致构造方法不许写返回值类型,如void,int 构 ...

  6. win7电脑删除文件时一直提示文件正在被另一个程序占用

    这样的情况并非是第一次遇到了,以前总是会觉得这样的问题只是电脑的错乱,重启一下电脑就好了,但是并非每次都需要重启电脑的,其实简单的设置一下,这个问题就可以解决了.对了,咱们还是说说这到底是个什么问题吧 ...

  7. 电商网站项目Angular+Bootstrap+Node+Express+Mysql

    1.登陆 2.注册 3.主页 4.购物车 5.管理中心 6.文件上传 代码: https://github.com/Carol0311/min_Shop.git 后期会持续进行功能更新以及开发阶段遇到 ...

  8. .NET 微信开发之 获取用户数据

    通过微信接口获取用户信息主要分为以下几个步骤: a.获取公众号的access_token b.通过查询所有用户OPenid接口获取所有用户. string url = "https://ap ...

  9. Saleae Logic添加NEC IR协议

    一.下载需要用到的代码 Git clone https://github.com/LiveOverflow/NECAnalyzer.git git clone --recursive https:// ...

  10. windows echo命令

    ECHO命令是大家都熟悉的DOS批处理命令的一条子命令,但它的一些功能和用法也许你并不是全都知道,不信你瞧:  1. 作为控制批处理命令在执行时是否显示命令行自身的开关 格式:ECHO [ON|OFF ...