内容

  • 映射请求到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. Https双向验证与Springboot整合测试-人来人往我只认你

    1 简介 不知不觉Https相关的文章已经写了6篇了,本文将是这个专题的最后一篇,起码近期是最后一篇.前面6篇讲的全都是单向的Https验证,本文将重点介绍一下双向验证.有兴趣的同学可以了解一下之前的 ...

  2. 最长公共子序列(Longest common subsequence)

    问题描述: 给定两个序列 X=<x1, x2, ..., xm>, Y<y1, y2, ..., yn>,求X和Y长度最长的公共子序列.(子序列中的字符不要求连续) 这道题可以 ...

  3. 一些常见的pro文件配置

    UI_DIR = ./ui #ui文件目录 TARGET = Test #最终生成目标名 DESTDIR = $$PWD/../test #目标生成目录,$$PWD表示当前目录下 DLLDESTDIR ...

  4. 【Spark】SparkStreaming和Kafka的整合

    文章目录 Streaming和Kafka整合 概述 使用0.8版本下Receiver DStream接收数据进行消费 步骤 一.启动Kafka集群 二.创建maven工程,导入jar包 三.创建一个k ...

  5. 【Linux系列汇总】小白博主的嵌入式Linux实战快速进阶之路(持续更新)

    我把之前在学习嵌入式Linux和工作中遇到问题和相关经验等,一起整理到这里,方便自己查阅和学习,温故而知新,如果能帮助到您,请帮忙点个赞: 本文的宗旨 嵌入式Linux 的项目通常需要一个团队来开发, ...

  6. LeetCode最长回文子串

    题目: 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad"输出: "bab"注意: & ...

  7. 页面中js接收tp5 assign方式传过来的数组对象

    <script type="text/javascript"> var arr='<?php echo json_encode($nav) ?>'; var ...

  8. wangeditor在移动端的web应用

    废话不多说,直接上代码 前端(前端多说一句,在初始使用阶段,不知道是怎么回事,复制在看云上的文档的配置参数时,一直有错误,后台获取不到$_file,整整一上午,下午上网搜了一下别人的上传图片代码才好用 ...

  9. Python-AES加密算法接口测试

    前言 先前已经学过了Python-SHA256加密算法接口测试,今天我跟大家讲解一下AES加密算法的接口如何写python脚本进行测试. 一:安装pycryptodome模块 pip install ...

  10. 「雕爷学编程」Arduino动手做(34)——三色LED交通灯模块

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...