内容

  • 映射请求到Spring控制器
  • 透明地绑定表单参数
  • 校验表单提交

关键词

  • 模型-视图-控制器(Model-View-Controller,MVC)
  • 处理器映射(handle mapping)
  • 视图解析器(view resolver)
  • 前端控制器(front controller)

5.1 请求处理流程

URL-->DispatcherServlet-->Controller-->Service-->Dao

当然上面也会反着来进行返回

第一个定义——Model(模型)

模型:控制器完成逻辑处理后,通常会产生一些信息,这些信息需要返回给用户并在浏览器上显示,这些信息就被叫做模型(model)。

视图:信息返回后,需要给用户进行格式化后展示,那么信息就需要发送一个视图(View)。

控制器最后将模型数据打包,并且标示出用于渲染输出的视图名。接下类会将请求连同模型和视图名一起发送给DispatcherServlet。

5.2 编写基本的控制器

控制器方法时添加@RequestMapping注解,这个注解声明了它所要处理的url请求。

5.2.1 定义方法级别的请求

package test

@Controller
public class HomeController() { @RequestMapping(value='/',method=GET)
public String home() {
return "home";
} }
  1. @Controller:注解来声明控制器类,这是一个构造器的注解,也是基于@Component注解。但是,它的目的就是辅助实现组件扫描,组件扫描器会自动找到@Controller,并将其注解的类声明为Spring上下文中的一个bean。
  2. @RequestMapping:属性value指定了这个方法所要处理的请求路径,method属性细化了它所处理的HTTP方法。

5.2.2 定义类级别的请求

package test

@Controller
@RequestMapping(value='/')
public class HomeController() {
@RequestMapping(method=GET)
public String home() {
return "home";
}
}

1.一个RequestMapping被添加在了类级别上,意味着这个注解会应用到该控制器的所有的方法上,另一个方法上的注解,则是对类级别注解的一个补充。

2. 同时RequestMapping还可以接受一个String数组@RequestMapping(value={'/','/home'})。

5.3 接受请求的输入

关键词

  • 查询参数(Query Parameter)
  • 表单参数(Form Parameter)
  • 路径变量(Path Variable)

5.3.1 处理查询参数

@RequestParam()的DefaultValue属性可以接受参数

@RequestParam('id') long id;

但是这种方法不理想,@RequestMapping就有了占位符这个概念

@RequestMapping(value="/{Id}",method=RequestMethod.GET)
public String book(@PathVariable("Id") long id,Model model) {
model.addAttribute(libraryRespo.findOne(id));
return "book";
}

五、Spring Web应用程序构建的更多相关文章

  1. Spring实战第五章学习笔记————构建Spring Web应用程序

    Spring实战第五章学习笔记----构建Spring Web应用程序 Spring MVC基于模型-视图-控制器(Model-View-Controller)模式实现,它能够构建像Spring框架那 ...

  2. Spring学习(五)--构建Spring Web应用程序

    一.Spring MVC起步 看过猫和老鼠的小伙伴都可以想象Tom猫所制作的捕鼠器:它的目标 是发送一个小钢球,让它经过一系列稀奇古怪的装置,最后触发捕鼠 器.小钢球穿过各种复杂的配件,从一个斜坡上滚 ...

  3. 第05章-构建Spring Web应用程序

    1. Spring MVC起步 1.1 跟踪Spring MVC的请求 前端控制器DispatcherServlet 请求旅程的第一站是Spring的DispatcherServlet.与大多数基于J ...

  4. 第5章—构建Spring Web应用程序—关于spring中的validate注解后台校验的解析

    关于spring中的validate注解后台校验的解析 在后台开发过程中,对参数的校验成为开发环境不可缺少的一个环节.比如参数不能为null,email那么必须符合email的格式,如果手动进行if判 ...

  5. 第5章—构建Spring Web应用程序—SpringMVC详解

    SpringMVC详解 5.1.跟踪Springmvc的请求 SpringMVC的核心流程如下: 具体步骤: 第一步:发起请求到前端控制器(DispatcherServlet) 第二步:前端控制器请求 ...

  6. Spring系列(六) Spring Web MVC 应用构建分析

    DispatcherServlet DispatcherServlet 是Spring MVC的前端控制器名称, 用户的请求到达这里进行集中处理, 在Spring MVC中, 它的作用是为不同请求匹配 ...

  7. 12.Spring——Web MVC框架

    1.Spring Web MVC 框架 2.Spring MVC Hello World 例子 1.Spring Web MVC 框架 Spring web         MVC 框架提供了模型-视 ...

  8. Spring学习笔记4—流程(Spring Web Flow)

    Spring Web Flow是Spring框架的子项目,作用是让程序按规定流程运行. 1 安装配置Spring Web Flow 虽然Spring Web Flow是Spring框架的子项目,但它并 ...

  9. 【JavaScript】使用面向对象的技术创建高级 Web 应用程序

    本文讨论: JavaScript 是基于原型的语言 用 JavaScript 进行面向对象的编程 JavaScript 编码技巧 JavaScript 的未来 本文使用了以下技术: JavaScrip ...

随机推荐

  1. C++11的mutex和lock_guard,muduo的MutexLock 与MutexLockGuard

    互斥锁是用来保护一段临界区的,它可以保证某段时间内只有一个线程在执行一段代码或者访问某个资源. C++11的mutex和lock_guard C++11新增了mutex,使用方法和linux底下的常用 ...

  2. Android APK 重签名

    对APK 进行在线 加固后,Apk体积一般会变大,而且Apk会无法直接安装,因为缺少了你的签名.是的,你需要对这个Apk进行重签名. 如何重签名 重签名的方法,一般来说,有两种,第一种是用JDK自带的 ...

  3. 过滤idea一些不需要的文件和文件夹的显示,在使用svn的时候可以很方便的过滤不需要提交的文件

    *.classpath;*.gitignore;*.hprof;*.idea;*.iml;*.lst;*.project;*.pyc;*.pyo;*.rbc;*.settings;*.sh;*.yar ...

  4. 《Docker从入门到跑路》之简介

    什么是Docker Docker,中文翻译是"码头工人".根据官方的定义,Docker是以Docker容器为资源分割和调度的基本单元,封装了整个软件运行的环境,为开发者和系统管理员 ...

  5. Navicat,SQL注入,pymysql模块

    # 关键字exists(了解) 只返回布尔值 True False 返回True的时候外层查询语句执行 返回False的时候外层查询语句不再执行 select * from emp where exi ...

  6. 吃零食 csust oj 贪心

    吃零食 桌上有n袋零食,不同的零食会有不同的美味程度wi和腐坏程度di,每种零食在一单位时间内美味程度都会下降di,但是不会降到0以下. qwb每一单位时间可以吃掉一袋零食.现在qwb想要在吃完所有零 ...

  7. CC2530定时器

    一.定时/技术器的基本原理 定时/计数器,是一种能够对内部时钟信号或外部输入信号进行计数,当计数值达到设定要求时,向CPU提出中断处理请求,从而实现定时或者计数功能的外设.         定时/计数 ...

  8. react-redux的理解

    react-redux是辅助redux的,我们正常使用redux是很麻烦的,需要在每个组件中去监听数据变化,执行数据更新等 但是通过react-redux,我们可以简化组件使用公共数据的操作, rea ...

  9. QtCreator中使用链接库

    说明 之前讨论的DLL的静态链接和动态连接都是基于 MSVC 编译器,但是 MinGW 似乎有另外一套类似但是不相同的机制.下文均在 windows 下使用 Qt Creator 中使用 MinGW ...

  10. 【Spark】Spark-shell案例——单词计数统计

    目录 步骤 一.准备本地文件以作测试 二.通过 --master启动本地模式 三.开发scala单词统计代码 步骤 一.准备本地文件以作测试 在第一台机器执行 mkdir -p /export/ser ...