目录
目录
2.3.RequestMapping映射请求占位符PathVariable注解
1.SpringMVC介绍
1.1什么是SpringMVC
- 一种轻量级的、基于MVC的Web层应用框架。偏前端而不是基于业务逻辑层。
- 是Spring框架的一个后续产品。
1.2常用组件
- DispatcherServlet:前端控制器
- HandlerExceptionResolver:异常处理器
- MultipartResolver:文件上传解析器
- LocalResolver:本地化、国际化
- ViewResolver : 视图解析器,找谁来处理返回的页面。把逻辑视图解析为具体的View,进行这种策略模式,很容易更换其他视图技术;
- 如InternalResourceViewResolver将逻辑视图名映射为JSP视图
- HandlerMapping :请求映射到处理器,找谁来处理,如果映射成功返回一个HandlerExecutiongChain对象(包含一个Handler处理器(页面控制器)对象、多个HandlerInterceptor拦截器对象)
- Controller:处理器/页面控制器,做的是MVC中的C的事情,但控制逻辑转移到前端控制器了,用于对请求进行处理
1.3运行流程
- 基本步骤:
- 客户端请求提交到DispatcherServlet
- 由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller
- DispatcherServlet将请求提交到Controller(也称为Handler)
- Controller调用业务逻辑处理后,返回ModelAndView
- DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图
2.@RequestMapping注解
2.1.@RequestMapping 映射请求注解
- SpringMVC使用@RequestMapping注解为控制器指定可以处理哪些 URL 请求
- 在控制器的类定义及方法定义处都可标注 @RequestMapping
- 标记在类上:提供初步的请求映射信息。相对于 WEB 应用的根目录
- 标记在方法上:提供进一步的细分映射信息。相对于标记在类上的 URL。
- 若类上未标注 @RequestMapping,则方法处标记的 URL 相对于 WEB 应用的根目录
2.2.RequestMapping映射请求方式
- 标准的 HTTP 请求报头
- @RequestMapping 除了可以使用请求 URL 映射请求外,还可以使用请求方法、请求参数及请求头映射请求
- @RequestMapping 的 value【重点】、method【重点】、params【了解】 及 heads【了解】
2.3.RequestMapping映射请求占位符PathVariable注解
- @PathVariable 映射 URL 绑定的占位符
- 带占位符的 URL 是 Spring3.0 新增的功能,该功能在 SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义
- 通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:
- URL 中的 {xxx} 占位符可以通过 @PathVariable("xxx") 绑定到操作方法的入参中。
3.SpringMvc处理参数请求
总共有8种,重点时两种方式:GET方式和POST方式.
GET
向特定的资源发出请求,并返回实体.有固定的写法.而且数据有最大长度,超出就不行
POST方式
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
RESTFul方式(推荐)
- 为了简化GET请求的写法,可以使用RESTFul方式,用法:
- 1、需要使用注解@PathVariable来获取请求路径中的参数值,@PathVariable用来绑定值
- 2、通过{???}获取路径中传递来的值
- 3、以前GET的访问方式即将被简化成:
处理Get请求的参数
如果页面的名称和后台形参的名称不一致,可以使用@RequestParam(“页面名称”),就必须指定值.
SpringMVC常用的注解
@Controller 标识是一个Controller,Spring包扫描创建实例
@RequestMapping 请求后的映射路径
@PathVariable 标识接收单个参数
@ResponseBody 返回对象利用jackson工具类转换为json字符串
@RequestParam 参数名和请求参数名称不同时使用,可以设置默认值
注意事项
日期数据的处理
把页面上的intime日期数据,交给后台处理.由于页面的数据都当做String类型处理,所以交给后台处理时,会抛出400错误.需要使用注解进行类型转换.并指定日期格式:
@DateTimeFormat(pattern="yyyy-MM-dd";)