Spring Web MVC2

返回静态页面

 MVC如何识别这是个静态页面并返回呢?

需要改变注释@RestController 为 @Controller 

@Controller 单独使用的话肯定是可以返回界面的,但是加上@ResponseBody ResponseBody是一个针对方法返回值进行处理的注解,处理后的RestController注解会将所有处理请求的方法默认解析为将方法返回值直接作为响应体内容返回,主要用于构建RESTful API,返回的数据通常是JSON或XML格式,因此返回形式肯定是和单独使用controller注解不同的

@Controller
public class IndexController{
    @RequestMapping("/index")
    public Object index(){
     return"/index.html";
}
}
  
  • MVC的概念也逐渐发生了变化,View不再返回视图,而是返回显示视图时需要的数据.
    所以前面使用的@RestController 其实是返回的数据.
    @RestController = @Controller + @ResponseBody
    @Controller:定义一个控制器, Spring框架启动时加载,把这个对象交给Spring管理.
    @ResponseBody: 定义返回的数据格式为非视图,返回一个text/html信息
    @RestController 源码:
      @Target({ElementType.TYPE})
      @Retention(RetentionPolicy.RUNTIME)
      @Documented
      @Controller
      @ResponseBody
      public @interface RestController {
      @AliasFor(
       annotation = Controller. class
     )
        String value() default "";
      }

上图前三个注解被称为元注解

@Target 表示注解修饰的对象

@Retention 表示注解的生命周期

@Documented 表示文档(是否保留)

@Controller 返回视图 随着前后端分离,后端不处理页面,就返回页面所需要的数据

@ResponseBody 返回数据

返回数据@ResponseBody

跟请求很像

修饰类的时候,表示这个类下的所有方法,返回的均为数据

修饰方法时,表示该方法返回的是数据

如果一个类中的所有方法返回的都是数据,我们就把这个注解加在类上

返回HTML代码片段

  • image

返回JSON

当接口返回的String等类型,content-Type是text/html

当接口返回的对象,map,content-Type默认是application/json

  • image

  设置状态码

   状态码不影响页面展示

  • image

设置Header(了解)

@RequestMapping 源码

  • 1. value:指定映射的URL
    2. method:指定请求的method类型,如GET, POST等
    3. consumes:指定处理请求(request)的提交内容类型(Content-Type), 例如application /json, text/html;
    4. produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回
    5. Params:指定request中必须包含某些参数值时, 才让该方法处理
    6. headers:指定request中必须包含某些指定的header值, 才能让该方法处理请求
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值