【SpringMVC】基础入门实战(3)

简介: SpringMVC获取Header,返回静态页面,返回数据(Controller),返回数据@ResponseBody,返回HTML代码片段,返回JSON,设置状态码,设置Header

  image.gif 编辑

阿华代码,不是逆风,就是我疯

你们的点赞收藏是我前进最大的动力!!

希望本文内容能够帮助到你!!

目录

一:实践

1:获取header

(1)普通方法

(2)简洁方法获取 Header

2:返回静态页面

(1)返回静态页面失败

(2)Controller

(3)@RestController 和 @Controller关联

3:返回数据@ResponseBody

4:返回HTML代码片段

(1) Content-Type 常⻅取值

5:返回JSON

6:设置状态码

7:设置Header

(1)设置Content-Type

(2)设置响应编码

(3)设置其它Header


一:实践

1:获取header

(1)普通方法

使⽤HttpServletRequest 提供的getHeader⽅法来获取, 参数对应HTTP请求报头的"Key"

@RequestMapping("/param1")
    public String  param1(HttpServletRequest request , HttpServletResponse response){
        String userAgent = request.getHeader("User-Agent");
        return "userAgent "+  ":" + userAgent;
    }

image.gif

(2)简洁方法获取 Header

@RequestMapping("/param2")
    public String para2(@RequestHeader("User-Agent") String userAgent){
        return "userAgent "+  ":" + userAgent;
    }

image.gif

运行结果

image.gif 编辑

fiddler抓包验证

image.gif 编辑

2:返回静态页面

(1)返回静态页面失败

image.gif 编辑

前端代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Index页面</title>
</head>
<body>
Hello,Spring MVC,我是index页面
</body>
</html>

image.gif

后端代码

@RestController
public class IndexController {
 @RequestMapping("/index")
 public Object index(){
 //返回index.html
 return "/index.html";
 }
}

image.gif

运行结果

image.gif 编辑

结果却发现, ⻚⾯未正确返回, http响应把 "/index.html" 当做了http响应正⽂的数据

(2)Controller

我们需要把 @RestController 改为 @Controller

@Controller
public class IndexController {
 @RequestMapping("/index")
 public Object index(){
 return "/index.html";
 }
}

image.gif

image.gif 编辑

(3)@RestController @Controller关联

@RestController = @Controller + @ResponseBody

@Controller : 定义⼀个控制器, Spring 框架启动时加载, 把这个对象交给Spring管理.

@ResponseBody : 定义返回的数据格式为⾮视图, 返回⼀个 text/html 信息

如果想返回视图的话, 只需要把 @ResponseBody 去掉就可以了, 也就是 @Controller

3:返回数据@ResponseBody

加上 @ResponseBody 注解, 该⽅法就会把 "/index.html" 当做⼀个数据返回给前端

@Controller
@ResponseBody
public class IndexController {
 @RequestMapping("/index")
 public Object index(){
 return "/index.html";
 }
}

image.gif

image.gif 编辑

①@ResponseBody 既是类注解, ⼜是⽅法注解

如果作⽤在类上, 表⽰该类的所有⽅法, 返回的都是数据, 如果作⽤在⽅法上, 表⽰该⽅法返回的是数据

②如果类上有 @RestController 注解时:表⽰所有的⽅法上添加了 @ResponseBody

解, 也就是当前类下所有的⽅法返回值做为响应数据

③如果⼀个类的⽅法⾥, 既有返回数据的, ⼜有返回⻚⾯的, 就把 @ResponseBody 注解添加到对应的⽅法上即可

4:返回HTML代码片段

后端返回数据时, 如果数据中有HTML代码, 也会被浏览器解析

@RequestMapping("/returnHtml")
@ResponseBody
public String returnHtml(){
    return "<h1>Hello,HTML~</h1>";
}

image.gif

image.gif 编辑

通过Fiddler观察响应结果, Content-Type text/html

image.gif 编辑

(1) Content-Type 常⻅取值

text/html : body 数据格式是 HTML

text/css : body 数据格式是 CSS

application/javascript : body 数据格式是 JavaScript

application/json : body 数据格式是 JSON

如果请求的是js⽂件, Spring MVC会⾃动设置Content-Type为 application/javascript

如果请求的是css⽂件, Spring MVC会⾃动设置Content-Type为 text/css

5:返回JSON

@RequestMapping("/returnJson")
    @ResponseBody
    public HashMap<String,String> returnJson(){
        HashMap<String,String> hashmap = new HashMap<>();
        hashmap.put("张三","畏罪潜逃");
        hashmap.put("李四","知法犯法");
        hashmap.put("王五","不知悔改");
        return hashmap;
    }

image.gif

image.gif 编辑通过Fiddler观察响应结果, Content-Type application/json

image.gif 编辑

6:设置状态码

Spring MVC会根据我们⽅法的返回结果⾃动设置响应状态码, 程序员也可以⼿动指定状态码

通过Spring MVC的内置对象HttpServletResponse 提供的⽅法来进⾏设置

状态码不影响⻚⾯的展⽰

@RequestMapping(value = "/setStatus")
    @ResponseBody
    public String setStatus(HttpServletResponse response){
        response.setStatus(401);
        return "设置状态码成功";
    }

image.gif

image.gif 编辑

image.gif 编辑

7:设置Header

Http响应报头也会向客⼾端传递⼀些附加信息, ⽐如服务程序的名称,请求的资源已移动到新地址等, 如:

Content-Type, Local等.

这些信息通过 @RequestMapping 注解的属性来实现

先来看 @RequestMapping 的源码

image.gif 编辑

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值,才能让该⽅法处理请求

(1)设置Content-Type

我们通过设置 produces属性的值, 设置响应的报头Content-Type

@RequestMapping(value = "/returnJson2" , produces = "application/json")
    @ResponseBody
    public String returnJson2(){
        return "{\"success\":true}";//转义字符
    }

image.gif

浏览器响应结果

image.gif 编辑

postman测试

image.gif 编辑

fiddler抓包

image.gif 编辑

(2)设置响应编码

设置返回类型时, 也可以同步设置响应编码

@RequestMapping(value = "/returnJson3" ,
            produces = "application/json;charset = utf-8")
    @ResponseBody
    public String returnJson3(){
        return "{\"你大爷\":true}";//转义字符
    }

image.gif

image.gif 编辑

(3)设置其它Header

设置其他Header的话, 需要使⽤Spring MVC的内置对象HttpServletResponse 提供的⽅法来进⾏设置

void setHeader(String name, String value) 设置⼀个带有给定的名称和值的 header. 如果 name

已经存在, 则覆盖旧的值

@RequestMapping("/setHeader")
    @ResponseBody
    public String setHeader(HttpServletResponse response){
        response.setHeader("柳贯一","boss");
        return "设置header成功";
    }

image.gif

image.gif 编辑

image.gif 编辑

相关文章
|
7月前
|
前端开发 JavaScript Java
JAVAEE框架技术之4springMVC入门
JAVAEE框架技术之4springMVC入门
138 0
JAVAEE框架技术之4springMVC入门
|
7月前
|
前端开发 Java Maven
SpringMVC之入门搭建框架
SpringMVC之入门搭建框架
|
前端开发 Java Spring
37SpringMVC - 简介
37SpringMVC - 简介
76 0
|
6月前
|
监控 Java 应用服务中间件
浅谈小白对于Javaweb开发整合框架Springboot入门导学
浅谈小白对于Javaweb开发整合框架Springboot入门导学
45 1
|
7月前
|
Java Nacos 微服务
全面学习SpringCloud框架指南
V 哥建议:如果你正在学习SpringCloud,你可以把这篇文章作为学习指南,如果你已经学过了,可以查漏补缺,因为 V 哥这篇文章全面介绍了SpringCloud的方方面面,当然你还需要结合官方文档的细节和源码部分去学习,成功拿下SpringCloud不是问题。加油兄弟!
|
7月前
|
Java 应用服务中间件 API
【SpringBoot技术专题】「开发实战系列」Undertow web容器的入门实战及调优方案精讲
【SpringBoot技术专题】「开发实战系列」Undertow web容器的入门实战及调优方案精讲
224 0
|
JSON 前端开发 Java
springMVC基础技术使用
springMVC基础技术使用
47 0
|
存储 XML JSON
一篇让你知道SpringMVC中的所有基础使用技术
一篇让你知道SpringMVC中的所有基础使用技术
53 0
|
设计模式 前端开发 JavaScript
SpringMVC实战入门教程,四天快速搞定springmvc框架!
SpringMVC 也叫Spring web mvc。是Spring 框架的一部分,是在Spring3.0 后发布的。 这里对SpringMVC框架进行一个简单的介绍: • springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。 • springmvc是一个基于mvc的web框架。 • springmvc 表现层:方便前后端数据的传输 • Spring MVC 拥有控制器,作用跟Struts类似,接收外部请求,解析参数传给服务层 MVC是指,C控制层,M模块层,V显示层这样的设计理念,而SSM框架里面SPRING MVC本身就是MVC框架,
284 0
|
存储 前端开发 Java
SpringMVC简介
SpringMVC简介
88 0

热门文章

最新文章