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. 阿里P7浅谈SpringMVC

    一.前言 既然是浅谈 SpringMVC,那么我们就先从基础说起,本章节主要讲解以下内容: 1.三层结构介绍 2.MVC 设计模式介绍 3.SpringMVC 介绍 4.入门程序的实现 注:介绍方面的 ...

  2. 浅谈对Spring Framework的认识

    Spring Framework,作为一个应用框架,官方的介绍如下: The Spring Framework provides a comprehensive programming and con ...

  3. 【架构】浅谈web网站架构演变过程

    浅谈web网站架构演变过程   前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变.   该系统具备的功能:   用户模块:用户注册和管理 商品模块:商品展示和管 ...

  4. 浅谈Spring MVC知识

    关于MVC框架,我相信大家都不陌生,都会说也就是模型-视图-控制器这三层的框架结构,如果你参加面试的时候考官会问:“MVC框架是什么?你说一说.”其实我们都知道这个问题还需要问的,只要你是一个开发人员 ...

  5. 浅谈 Fragment 生命周期

    版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...

  6. 浅谈 LayoutInflater

    浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...

  7. 浅谈Java的throw与throws

    转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...

  8. 浅谈SQL注入风险 - 一个Login拿下Server

    前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...

  9. 浅谈WebService的版本兼容性设计

    在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...

随机推荐

  1. Java与算法之(1) - 冒泡排序

    冒泡排序法的原理是,每次比较相邻的两个元素,如果它们的顺序错误就把它们交换过来. 例如对4 3 6 2 7 1 5这7个数字进行从小到大的排序,从最左侧开始,首先比较4和3 因为是从小到大排序,4和3 ...

  2. CTF---安全杂项入门第一题 丘比龙的最爱

    丘比龙的最爱分值:10 来源: 2014HCTF 难度:易 参与人数:4498人 Get Flag:1366人 答题人数:1384人 解题通过率:99% 传说,丘比龙是丘比特的弟弟,丘比龙是一只小爱神 ...

  3. COGS 2482. Franky的胡子【二分,高精度】

    2482. Franky的胡子 ☆   输入文件:beard.in   输出文件:beard.out   简单对比 时间限制:1 s   内存限制:128 MB [题目描述] Franky很苦恼他一直 ...

  4. [51nod1206]Picture

    给你一坨矩形,问这些矩形组成的所有多边形的周长之和. 分别求竖着的边和横着的边. 离散化后线段树,维护当前行(或者列)有多少没在多边形里的,添加矩形就变成添加.删除线段. 每次加线段或删线段时累加一下 ...

  5. [bzoj4240] 有趣的家庭菜园

    还是膜网上题解QAQ 从低到高考虑,这样就不会影响后挪的草了. 每次把草贪心地挪到代价较小的一边.位置为i的草,花费为min( 1..i-1中更高的草的数目,i+1..n中更高的草的数目 ) 因为更小 ...

  6. Socket send函数和recv函数详解

    1.send 函数 int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP ...

  7. [国嵌攻略][182][Sqlite嵌入式数据库移植]

    数据库系统构成 在计算机系统中,保存数据的方式一般有两种: 1.普通文件方式 2.数据库方式 相比于普通文件方式,使用数据库来管理大批量数据具有更高的效率与安全性. 数据库系统一般由三个部分构成 1. ...

  8. node学习笔记2 —— npm包管理

    全局模式安装包 将包安装为全局可用的可执行命令, 并非可以从任意地方require 将 package.json中bin定义的文件软链到统一的目录下, 该目录可以通过如下方式推算出来: path.re ...

  9. file_get_contents("php://input")的使用方法

    $data = file_get_contents("php://input"); //input 是个可以访问请求的原始数据的只读流. POST 请求的情况下,最好使用 php: ...

  10. ser-u服务器安装和使用(创建ftp服务器)

    安装serv-u,创建ftp服务器,以及连接服务器上传和下载文件. 工具/原料 serv-u,8uftp 装有win7以上或者winserver系统的电脑 安装serv-u 1 http://pan. ...