SpringBoot 第三篇

SpringBoot 第三篇 MVC架构

2019.02.25 SpringBoot 集成 MVC 框架

SpringBoot 集成MVC框架

  1. 引入依赖。
    Spring-boot-starter-web 自动配置MVC框架。
    可以添加 Beetl、thymeleaf、freeMarker、jsp、Groovy、velocity、mustache等。
  2. web应用目录结构。
    resources/templates目录下存放Web的模板。
    resources/static 目录下模板文件使用的静态资源文件。
  3. 包结构。
    controller、service、entity、conf、until。

使用@Controller 。

1. 类上 声明 @Controller ,便能处理用户的 HTTP 请求。
注意:

@ResponseBody 注解直接将返回的对象输出给客户端。
需要注意的是:

  1. 返回的对象是 String类型的话,结果仍是 String类型。
  2. 返回的对象是其他类型的话,会使用 Jackson 序列化对象为 Json对象。

2.项目中报错
There was an unexpected err (type=NOT Acceptable,status=406).
Could not find acceptable representation
上述报错的原因是:返回类型与期望类型不一致。

在默认建立的SpringBoot项目中,请求资源的URL需要注意

  1. 期望返回的是JSON,请求资源的后缀就要是 *.json;
  2. 期望返回的是HTML,请求资源的后缀就要是 *.html。

客户端请求服务,服务响应客户端。(Controller类)

  • @RequestMapping
  1. value / path :请求的路径,支持简单的表达式、正则等。
@PathVariable 匹配路径上的参数。经常与 path 使用在一起。
Ant 通配符: * 任意符    ** 任意路径   ? 单个字符。
	优先匹配:无通配符的  >  ?>  *  > **
  1. method. get / post 等。
  2. consumes 对应请求HTTP头,Content-Type “application/json”。
  3. produces 对应请求HTTP头,设置浏览器可以接收的内容。
  4. params 与 header ,从请求参数或者HTTP头中提取值来进一步确定调用方法。
  • 方法参数
  1. @PathVariable 从URL中获取参数映射到方法参数。
  2. Map 结构的 model & modelandview

model 的内容
model 用于参数,MVC框架调用方法前,直接自动自动创建,并可以携带者内容返回视图。
addAttribute(指定名称,Java变量);
addAttribute(Java变量); 默认名称 Java 变量的首字母小写。
mergeAttribute(); 可添加多个,遇到重复的时候将忽略。
addAllAttribute(); 可添加多个,遇到重复的时候将覆盖。
modelandview 的内容
addObject(); 添加变量。
setViewName(); 设置视图的名称。

  1. JavaBean 接收 Http 参数。
    @RequestParam 对请求URL中参数的设置
    value /name: 对应参数的名称。
    required: true / false 。 一旦设置为 true ,但请求URL中没有则报 400
    defaultVlaue:指定默认的字符串。类型是字符串。
  2. @RequestBody 请求的是 Json 数据。
  3. MultipartFile文件上传 以及 MultipartFile[] 多文件上传
  4. @ModelAttribute 作用在Controller方法上,此方法会先被调用,并将结果作为Model属性,之后再调用Controller方法。
  5. @InitBinder 用在方法上,会注册多个转化器。

验证框架

JSR-303、Bean 等可以继承。默认使用的是 hibernate-validator

WebMvcConfigurer

WebMvcConfigurer 全局定制SpringBoot的特性。
拦截器、跨域访问设置、格式化、视图映射 等。

拦截器 addInterceptors

  • preHandle :调用方法之前。
  • postHandle:调用方法之后,页面渲染前。
  • afterCompletion:页面渲染完成调用。

跨域访问设置

什么是跨域访问 ?
A页面使用Ajax获得B页面中的内容,显示在A页面中,如果A页面与B页面不是同源的(域名、协议、端口号均相同的称为同源。),发起跨域请求时,浏览器会对请求域返回的响应信息检查HTTP头,如果Access-Control-Allow-Origin包含自身域则允许访问。如果Access-Control-Allow-Origin返回no,则是跨域访问会报错。

格式化 addFormatters

注册Controller ,addViewControllers

没有必要为一个URL指定一个Controller方法。

视图技术(集成的视图引擎)

  1. FreeMarker 自动添加视图后缀 ftl ;
  2. Beetl 看到视图后缀 btl ;
  3. Jackson 重定向返回前端的这个 ObjectMapper。
    ObjectMapper 类由 jsckson 提供,可以自定义。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值