Spring MVC入门补充2

学习Spring MVC

响应

Http响应结果可以是数据,也可以是静态⻚⾯,也可以针对响应设置状态码,Header信息等.

返回静态页面
html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Index⻚⾯</title>
</head>
<body>
Hello,Spring MVC,我是Index⻚⾯.
</body>
</html>
java 复制代码
@RequestMapping("/response")
@RestController
public class Response {
    @RequestMapping("/index")
    public String index() {
        return "/index.html";
    }
}

如果使用上述代码直接进行访问,会发现实际的响应是"/index.html"字符串,而不是这个页面.

想要返回页面就要将注释中的@RestController替换为@Controller.再次运行,结果正常.

java 复制代码
@Controller
public class Response {
    @RequestMapping("/index")
    public String index() {
        return "/index.html";
    }
}
@RestController与@Controller

点进@RestController的源码,发现@RestController是由@Controller与@ResponseBody修饰的.

随着互联⽹的发展,⽬前项⽬开发流⾏"前后端分离"模式,Java主要是⽤来做后端项⽬的开发,所以也就不再处理前端相关的内容了.MVC的概念也逐渐发⽣了变化,View不再返回视图,⽽是返回显示视图时需要的数据.而@RestController就是现在概念中的返回数据,@Controller就是之前概念中的返回视图.

简单的理解为RestController =@Controller+@ResponseBody.@Controller: 定义⼀个控制器,Spring框架启动时加载,把这个对象交给Spring管理,默认返回视图.@ResponseBody:定义返回的数据格式为非视图,返回⼀个text/html信息.

@ResponseBody既可以修饰类,也可以修饰方法.当修饰类时,表示该类的所有⽅法,返回的都是数据,如果修饰⽅法,表⽰该⽅法返回的是数据.

返回HTML代码片段

返回数据时,如果数据中包含HTML片段,也会被浏览器解析.

java 复制代码
    @RequestMapping("/returnHtml")
    @ResponseBody
    public String returnHtml() {
        return "<h1>Hello,HTML~</h1>";
    }
返回JSON

后端⽅法返回结果为对象,SpringMVC就会把对象内容转化为JSON格式.

java 复制代码
    @ResponseBody
    @RequestMapping("/returnJSON")
    public Map<String,String> returnJSON() {
        Map<String,String> map = new HashMap<String,String>();
        map.put("k1","v1");
        map.put("k2","v2");
        map.put("k3","v3");
        return map;
    }
设置状态码

Spring MVC会根据方法返回的结果自动设置响应的状态码,程序员也可以自己设置响应的状态码.418状态码的含义为:I'm a teapot.

java 复制代码
    @RequestMapping("/setStatus")
    @ResponseBody
    public String setStatus(HttpServletResponse response) {
        response.setStatus(418);
        return "设置状态码完成";
    }
相关推荐
Java内核笔记3 分钟前
万字避坑!Spring Boot 3.x 升 4.0 最全升级指南(附 Migration Checklist,建议收藏⭐)
java·后端
cfm_29141 小时前
SpringBoot启动原理
java·spring boot·spring
漫随流水2 小时前
Java——springboot web案例
java·开发语言·spring boot
从此以后自律2 小时前
Java Object 类常用方法全讲解
java·开发语言
念何架构之路2 小时前
Docker 容器状态机 学习
java·学习·docker
你有我备注吗2 小时前
SQL学习之查询
java·sql·学习
xixi09243 小时前
JMeter5.6.3基础使用教程1
java·开发语言
带刺的坐椅3 小时前
用 Solon ReActAgent 落地发票识别与智能报销
java·llm·solon·react-agent
罗超驿3 小时前
15.Java异常处理:从束手无策到从容应对
java·开发语言
Co_Hui3 小时前
Java 基础
java·开发语言