1、前端控制器org.springframework.web.servlet.DispatcherServlet

所有的请求驱动都围绕这个DispatcherServlet来分派请求。springMVC框架默认有一个DispatcherServlet.properties文件,用于配置框架默认的处理器映射器、处理器适配器、视图解析器等。

2、spring mvc应用的开发步骤

1》在web.xml中定义DispatcherServlet拦截用户的请求。

2》定义处理用户请求的Handle类,可以实现Controller接口或者MultiController接口或者使用@Controller注解。

3》配置Handle。

4》编写View。

3、基于注解的开发方式

1》@Controller:修饰的是控制器。基于注解的控制器不需要实现任何接口或父类,且基于实现Controller接口的实现类只能处理单一的请求动作(即handleRequest()方法)。为了让spring能够找到控制器需要做两件事:

1>在spring配置文件中引入spring-context。

2>使用<context:component-scan.../>元素,启动自动扫描@Controller、@Service、@repository、@Component等注解组成的spring bean。base-package属性用于指定扫描包及其子包。

  1. <context:component-scan base-package="com.lfy.controller"/>

2》@RequestMapping:修饰的是处理器,支持的属性有

1>value属性:@RequeatMapping映射一个请求和一种方法。可以注释一个方法或类。

2>method属性:用于指定仅仅处理哪种类型请求。没有指定则,可以处理任意http请求。

3>consumes属性:指定处理请求的提交内容类型(Content-Type)。

4>produces属性:指定返回的内容类型。返回的内容类型必须是request请求头(Accept)中所包含的类型。

5>params属性:指定request中必须包含某些参数值时,才让该方法处理。如:仅处理某请求参数a,且其值为v的请求。

6>headers属性:指定request中必须包含某些指定的header值,才让此方法处理。

3》Spring MVC中参数绑定的常用注解有:

1>处理request body部分的注解:@RequestParam、@RequestBody

2>处理request uri部分的注解:@PathVariable

3>处理request header部分的注解:@RequestHeader、@CookieValue

4>处理attribute类型的注解:@SessionAttributes、@ModelAttribute

4、请求处理方法(即Controller中的方法)可出现的参数类型

org.springframework.ui.Model类型,不是Servlet API类型,而是一个spring mvc类型,其中包含了Map对象来存储数据。如果方法中添加了Model参数,则每次调用请求处理方法时,spring mvc都会创建Model对象,并将其作为参数传递给方法。

5、请求处理方法(即Controller中的方法)可返回的类型

 6、Spring MVC的输出模型数据

7、Model和ModelMap

   spring MVC在调用处理方法之前会创建一个隐含的模型对象,作为模型数据的存储容器。如果处理方法的参数为Model或ModelMap类型,则spring MVC会将传递给这些参数。

   在处理方法内部,开发者就可以通过这个参数对象访问模型中的所有数据,也可以向模型中添加新的属性数据。Model和ModelMap可以通过如下方法对模型添加数据:

     addObject(String attributeName,Object attributeValue);(---可能笔误,应该为addAttribute(...))

  1. //使用@ModelAttribute修饰的方法,当某处理方法的参数由Model或ModelMap时,
    //该被修饰的方法先于处理方法执行。可以给Model或ModelMap使用如下方法增加对象
    //前提被@ModelAttribute修饰的方法的参数中要有Model或ModelMap
    model.addAttribute(key,Object)或者
    modelmap.addAttribute(key,Object)
  1. //处理方法中,取Model或ModelMap中的参数
  2. (某个实现类)model.asMap.get(key)或者
  3. (某个实现类)modelMap.get(key)

8、ModelAndView

  1. //在处理方法中获取模型数据使用如下方式
    modelandview.getModel().get(key);
    //在处理方法中,可以通过如下方法添加模型数据
  2. addObject(String attributeName,Object attributeValue);
  3. //可以通过如下方法设置视图
  4. setViewName(String viewName);

Spring MVC-学习笔记(2)DispatcherServlet、@Controller、@RequestMapping、处理方法参数类型、可返回类型、Model、ModelMap、ModelAndView的更多相关文章

  1. [Spring MVC]学习笔记--@Controller

    在讲解@Controller之前,先说明一下Spring MVC的官方文档在哪. 可能会有人和我一样,在刚接触Spring MVC时,发现在Spring的网站上找不到Spring MVC这个项目. 这 ...

  2. Spring MVC 学习笔记一 HelloWorld

    Spring MVC 学习笔记一 HelloWorld Spring MVC 的使用可以按照以下步骤进行(使用Eclipse): 加入JAR包 在web.xml中配置DispatcherServlet ...

  3. Spring MVC 学习笔记10 —— 实现简单的用户管理(4.3)用户登录显示全局异常信息

    </pre>Spring MVC 学习笔记10 -- 实现简单的用户管理(4.3)用户登录--显示全局异常信息<p></p><p></p>& ...

  4. Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建

    Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...

  5. Spring MVC 学习笔记11 —— 后端返回json格式数据

    Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...

  6. Spring MVC 学习笔记9 —— 实现简单的用户管理(4)用户登录显示局部异常信息

    Spring MVC 学习笔记9 -- 实现简单的用户管理(4.2)用户登录--显示局部异常信息 第二部分:显示局部异常信息,而不是500错误页 1. 写一个方法,把UserException传进来. ...

  7. Spring MVC 学习笔记8 —— 实现简单的用户管理(4)用户登录

    Spring MVC 学习笔记8 -- 实现简单的用户管理(4)用户登录 增删改查,login 1. login.jsp,写在外面,及跟WEB-INF同一级目录,如:ls Webcontent; &g ...

  8. Spring MVC 学习笔记1 - First Helloworld by Eclipse【& - java web 开发Tips集锦】

    Spring MVC 学习笔记1 - First Helloworld by Eclipse reference:http://www.gontu.org 1. 下载 Spring freamwork ...

  9. Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目

    Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目 Spring Tool Suite 是一个带有全套的Spring相关支持功能的Eclipse插件包. ...

  10. Spring MVC 学习笔记(二)

    6. 视图和视图解析器  ❤  Spring MVC如何解析视图                                  • 请求处理方法执行完成后,最终返回一个ModelAndView对象 ...

随机推荐

  1. c库函数 rewind fseek

    rewind(3) 将文件内部的位置指针重新指向一个流(数据流/文件)的开头 不是文件指针而是文件内部的位置指针 rewind函数作用等同于 (void)fseek(stream, 0L, SEEK_ ...

  2. C#基础知识之依赖注入

    目录 1 IGame游戏公司的故事 1.1 讨论会 1.2 实习生小李的实现方法 1.3 架构师的建议 1.4 小李的小结 2 探究依赖注入 2.1 故事的启迪 2.2 正式定义依赖注入 3 依赖注入 ...

  3. Halcon WPF C#采集图像区域灰度值

    源码下载地址:https://github.com/lizhiqiang0204/ImageGray.git Halcon代码如下: *读取图片,转换成灰度图片 read_image (Image1, ...

  4. iterm2 多频操作

    新开多个table窗口 右键 move session to split pane 选择窗口 command + 窗口号 灰色的窗口右键 toggle Broadcasting input

  5. App 区别

    本文的结构主要分为以下部分: 1.app的分类 2.每类app的定义,明确各类app具体是什么 3.各类app的优缺点 4.具体开发过程中,到底该采用哪种类型的app 1.app的分类 大致可以分为这 ...

  6. [原创]PHP代码修正之CodeSniffer

    目录 参考链接 介绍 安装 使用 命令行模式 PHPStorm 让编辑器使用PSR-2标准 集成phpcbf 参考链接 PHP开发规范之使用phpcbf脚本自动修正代码格式 在PhpStorm中使用P ...

  7. 对includes的研究

    1.includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false. 2.let site = ['runoob', 'google', 'taobao']; s ...

  8. Java面试之基础篇(2)

    11.是否可以从一个static方法内部发出对非static方法的调用? 不可以.因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用 ...

  9. Mybatis 并发执行导致cpu占满的问题

    最近线上服务经常 出现cpu达到100%的问题,发现都是执行oracle操作的方法就没有返回.经过排查,最后定位到cpu消耗在以下方法 System.Collections.Generic.Dicti ...

  10. handy源码阅读(四):Channel类

    通道,封装了可以进行epoll的一个fd. struct Channel: private noncopyable { Channel(EventBase* base, int fd, int eve ...