Spring MVC-学习笔记(2)DispatcherServlet、@Controller、@RequestMapping、处理方法参数类型、可返回类型、Model、ModelMap、ModelAndView
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属性用于指定扫描包及其子包。
<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(...))
//使用@ModelAttribute修饰的方法,当某处理方法的参数由Model或ModelMap时,
//该被修饰的方法先于处理方法执行。可以给Model或ModelMap使用如下方法增加对象
//前提被@ModelAttribute修饰的方法的参数中要有Model或ModelMap
model.addAttribute(key,Object)或者
modelmap.addAttribute(key,Object)
//处理方法中,取Model或ModelMap中的参数
(某个实现类)model.asMap.get(key)或者
(某个实现类)modelMap.get(key)
8、ModelAndView
//在处理方法中获取模型数据使用如下方式
modelandview.getModel().get(key);
//在处理方法中,可以通过如下方法添加模型数据
addObject(String attributeName,Object attributeValue);
//可以通过如下方法设置视图
setViewName(String viewName);
Spring MVC-学习笔记(2)DispatcherServlet、@Controller、@RequestMapping、处理方法参数类型、可返回类型、Model、ModelMap、ModelAndView的更多相关文章
- [Spring MVC]学习笔记--@Controller
在讲解@Controller之前,先说明一下Spring MVC的官方文档在哪. 可能会有人和我一样,在刚接触Spring MVC时,发现在Spring的网站上找不到Spring MVC这个项目. 这 ...
- Spring MVC 学习笔记一 HelloWorld
Spring MVC 学习笔记一 HelloWorld Spring MVC 的使用可以按照以下步骤进行(使用Eclipse): 加入JAR包 在web.xml中配置DispatcherServlet ...
- Spring MVC 学习笔记10 —— 实现简单的用户管理(4.3)用户登录显示全局异常信息
</pre>Spring MVC 学习笔记10 -- 实现简单的用户管理(4.3)用户登录--显示全局异常信息<p></p><p></p>& ...
- Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建
Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...
- Spring MVC 学习笔记11 —— 后端返回json格式数据
Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...
- Spring MVC 学习笔记9 —— 实现简单的用户管理(4)用户登录显示局部异常信息
Spring MVC 学习笔记9 -- 实现简单的用户管理(4.2)用户登录--显示局部异常信息 第二部分:显示局部异常信息,而不是500错误页 1. 写一个方法,把UserException传进来. ...
- Spring MVC 学习笔记8 —— 实现简单的用户管理(4)用户登录
Spring MVC 学习笔记8 -- 实现简单的用户管理(4)用户登录 增删改查,login 1. login.jsp,写在外面,及跟WEB-INF同一级目录,如:ls Webcontent; &g ...
- 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 ...
- Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目
Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目 Spring Tool Suite 是一个带有全套的Spring相关支持功能的Eclipse插件包. ...
- Spring MVC 学习笔记(二)
6. 视图和视图解析器 ❤ Spring MVC如何解析视图 • 请求处理方法执行完成后,最终返回一个ModelAndView对象 ...
随机推荐
- windows 10 安装openssh 0x800f0954 的一种解决方法
安装与卸载参考:https://docs.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_install_first ...
- Springboot读取properties配置文件数据
一.使用@ConfigurationProperties来读取 1.Coffer entity @Configuration @ConfigurationProperties(prefix = &qu ...
- ubuntu16.04 开启FTP服务
配置ftp 1.安装 vsftpd服务器 sudo apt install vsftpd 2.创建一个ftp文件夹 (可以跳过) sudo mkdir /home/ftp 3.新建ftp用户,并指向它 ...
- 043:Django使用原生SQL语句操作数据库
Django使用原生SQL语句操作数据库 Django配置连接数据库: 在操作数据库之前,首先先要连接数据库.这里我们以配置 MySQL 为例来讲解. Django 连接数据库,不需要单独的创建一个连 ...
- Quantitative Startegies for Achieving Alpha(二)
Chapter 3 The Day-To-Day Drivers Of Stock Market Returns Summary: (1) Earning growth is the primary ...
- java伪代码读后感
愚公,在这位名家身上,浓缩了项目的组织者,团队经理,编程人员,技术分析师等众多角色的优秀素质.原始需求的产生“惩山北之塞,出入之迁”项目沟通的基本方式“聚室而谋之”项目的目标“毕力平险,指通豫南,达于 ...
- JS循环结构
什么是循环结构? 反复一遍又一遍做着相同(相似)的事情 循环结构的两大要素? 循环条件:什么时候开始,什么时候结束 循环操作:循环体,循环过程中 做了什么 一.while语句 while语句 属于前测 ...
- PHP生成静态网页的方法
看到很多朋友在各个地方发帖问PHP生成静态文章系统的方法,以前曾做过这样一个系统,遂谈些看法,以供各位参考.兄弟先带大家回顾一些基本的概念. 一,PHP脚本与动态页面. PHP脚本是一种服务器端脚本程 ...
- 洛谷 P4570 BZOJ 2460 [BJWC2011]元素
Time limit 20000 ms Memory limit 131072 kB OS Linux 解题思路 看题解可知 我们将矿石按照魔法值降序排序,然后依次将矿石编号放入线性基(突然想起线代里 ...
- 【bzoj3463】[COCI2012] Inspector
*题目描述: 在一个小国家中,一个新的小镇终于建成了!如往常一样,Mirko获得了“首席税务巡查员”的职位.他的任务是保证正确地计算各公司的收入情况.一共有N家办公室坐落在主干道上,从左到右被编号为1 ...