首页 > 其他分享 >【Spring教程29】Spring框架实战:从零开始学习SpringMVC 之 服务器响应知识全面详解

【Spring教程29】Spring框架实战:从零开始学习SpringMVC 之 服务器响应知识全面详解

时间:2023-12-24 19:01:13浏览次数:34  
标签:return SpringMVC Spring 29 public 响应 User new class



目录

  • 1 环境准备
  • 2 响应页面
  • 3 返回文本数据
  • 4 响应JSON数据
  • 5 知识点总结


欢迎大家回到《Java教程之Spring30天快速入门》,本教程所有示例均基于Maven实现,如果您对Maven还很陌生,请移步本人的博文《如何在windows11下安装Maven并配置以及 IDEA配置Maven环境》,本文的上一篇为《SpringMVC 之 请求与请求参数详解》

【Spring教程29】Spring框架实战:从零开始学习SpringMVC 之 服务器响应知识全面详解_spring


上一节我们说了SpringMvc请求知识,这一节我们来说一下响应。

SpringMVC接收到请求和数据后,进行一些了的处理,当然这个处理可以是转发给Service,Service层再调用Dao层完成的,不管怎样,处理完以后,都需要将结果告知给用户。

比如:根据用户ID查询用户信息、查询用户列表、新增用户等。

对于响应,主要就包含两部分内容:

  • 响应页面
  • 响应数据
  • 文本数据
  • json数据
    因为异步调用是目前常用的主流方式,所以我们需要更关注的就是如何返回JSON数据,对于其他只需要认识了解即可。

1 环境准备

  • 创建一个Web的Maven项目
  • pom.xml添加Spring依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.itheima</groupId>
<artifactId>springmvc_05_response</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<port>80</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
</project>
  • 创建对应的配置类
public class ServletContainersInitConfig extends
AbstractAnnotationConfigDispatcherServletInitializer {
protected Class<?>[] getRootConfigClasses() {
return new Class[0];
}

protected Class<?>[] getServletConfigClasses() {
return new Class[]{SpringMvcConfig.class};
}

protected String[] getServletMappings() {
return new String[]{"/"};
}

//乱码处理
@Override
protected Filter[] getServletFilters() {
CharacterEncodingFilter filter = new CharacterEncodingFilter();
filter.setEncoding("UTF-8");
return new Filter[]{filter};
}
}

@Configuration
@ComponentScan("com.itheima.controller")
//开启json数据类型自动转换
@EnableWebMvc
 public class SpringMvcConfig {
}
  • 编写模型类User
public class User {
	private String name;
	private int age;
	//getter...setter...toString省略
}
  • webapp下创建page.jsp
<html>
<body>
<h2>Hello Spring MVC!</h2>
</body>
</html>
  • 编写UserController
@Controller
public class UserController {
}

最终创建好的项目结构如下:

【Spring教程29】Spring框架实战:从零开始学习SpringMVC 之 服务器响应知识全面详解_数据_02

2 响应页面

  • 步骤1:设置返回页面
@Controller
public class UserController {
@RequestMapping("/toJumpPage")
//注意
//1.此处不能添加@ResponseBody,如果加了该注入,会直接将page.jsp当字符串返回前端
//2.方法需要返回String
public String toJumpPage(){
System.out.println("跳转页面");
return "page.jsp";
}
}
  • 步骤2:启动程序测试
    此处涉及到页面跳转,所以不适合采用PostMan进行测试,直接打开浏览器,输入http://localhost/toJumpPage

3 返回文本数据

  • 步骤1:设置返回文本内容
@Controller
public class UserController {
@RequestMapping("/toText")
//注意此处该注解就不能省略,如果省略了,会把response text当前页面名称去查找,如果没有
回报404错误
@ResponseBody
public String toText(){
System.out.println("返回纯文本数据");
return "response text";
}
}
  • 步骤2:启动程序测试

此处不涉及到页面跳转,因为我们现在发送的是post请求,可以使用浏览器也可以使用PostMan进行测试,输入地址http://localhost/toText访问

【Spring教程29】Spring框架实战:从零开始学习SpringMVC 之 服务器响应知识全面详解_spring_03

4 响应JSON数据

  • 响应POJO对象
@Controller
public class UserController {
@RequestMapping("/toJsonPOJO")
@ResponseBody
public User toJsonPOJO(){
System.out.println("返回json对象数据");
User user = new User();
user.setName("itcast");
user.setAge(15);
return user;
}
}

返回值为实体类对象,设置返回值为实体类类型,即可实现返回对应对象的json数据,需要依赖

@ResponseBody注解和@EnableWebMvc注解

重新启动服务器,访问http://localhost/toJsonPOJO

【Spring教程29】Spring框架实战:从零开始学习SpringMVC 之 服务器响应知识全面详解_服务器_04

  • 响应POJO集合对象
@Controller
public class UserController {
@RequestMapping("/toJsonList")
@ResponseBody
public List<User> toJsonList(){
System.out.println("返回json集合数据");
User user1 = new User();
user1.setName("传智播客");
user1.setAge(15);
User user2 = new User();
user2.setName("黑马程序员");
user2.setAge(12);
List<User> userList = new ArrayList<User>();
userList.add(user1);
userList.add(user2);
return userList;
}
}

重新启动服务器,访问http://localhost/toJsonList

【Spring教程29】Spring框架实战:从零开始学习SpringMVC 之 服务器响应知识全面详解_User_05

5 知识点总结

  • 知识点1:@ResponseBody

    说明:
  • 该注解可以写在类上或者方法上
  • 写在类上就是该类下的所有方法都有@ReponseBody功能
  • 当方法上有@ReponseBody注解后
  • 方法的返回值为字符串,会将其作为文本内容直接响应给前端
  • 方法的返回值为对象,会将对象转换成JSON响应给前端

此处又使用到了类型转换,内部还是通过Converter接口的实现类完成的,所以Converter除了前面所说的功能外,它还可以实现:

  • 对象转Json数据(POJO -> json)
  • 集合转Json数据(Collection -> json)


标签:return,SpringMVC,Spring,29,public,响应,User,new,class
From: https://blog.51cto.com/u_12948819/8956594

相关文章

  • Spring Boot 核心接口之 Envirnoment
    SpringBoot核心接口之Envirnoment转载自:https://zhuanlan.zhihu.com/p/357050965?utm_id=0SrpingBoot中我们使用EnvironmentAware注入Environment对象后,可以在Environment中获得系统参数,命令行采参数,文件配置等信息。Environment是如何存储,管理这些值的呢?变量......
  • Spring cache整合Redis
    Springcache整合Redis,并给它一个过期时间!转载自:https://zhuanlan.zhihu.com/p/138295935不知道你们有没给cache设置过过期时间,来试试?上一篇文章中,我们使用springboot集成了redis,并使用RedisTemplate来操作缓存数据,可以灵活使用。今天我们要讲的是Spring为我们提供......
  • SpringCloud版本升级个组件替代方案
     转载自:https://juejin.cn/post/7196140566110355515SpringCloud版本升级个组件替代方案 SpringBootSpringBoot版本截止2023年1月20日,SpringBoot的最新版本为 3.0.2,最新的版本信息可以查阅以下网站来获取:Maven中央仓库SpringBoot官方文档SpringB......
  • Spring工具类--路径匹配(AntPathMatcher)--使用/实例
    原文网址:Spring工具类--路径匹配(AntPathMatcher)--使用/实例_IT利刃出鞘的博客-CSDN博客简介整个Spring(SpringBoot)框架的路径解析都是按照Ant的风格来的,比如:Controller的请求路径、文件路径、包的路径。所以,掌握Ant的路径匹配很重要。Spring中的具体实现:org.springframewor......
  • Spring Boot 3.0 升级 实战踩坑记录
    转载自:https://juejin.cn/post/7176204472082038840SpringBoot3.0升级实战踩坑记录 SpringBoot常用于Java后端开发,于2022年11月24日正式发布了3.0.0版本,带来了全新的特性、升级了依赖版本乃至Java版本,与此同时也弃用或更改了一些旧版本中的写法,导致了需要修改代......
  • 初识SpringCloud
    一、SpringCloudSpringCloud是目前国内使用最广泛的微服务框架。官网地址:https://spring.io/projects/spring-cloud/SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验:服务注册发现:Eureka、Nacos、Consul服务远程调用:Ope......
  • Spring框架的认证与授权 - Spring Security
    引言在构建应用程序时,确保数据安全和用户身份验证是至关重要的。SpringSecurity为这些安全需求提供了全面的解决方案。SpringSecurity的基本概念SpringSecurity提供了一系列的认证和授权策略来保护应用程序。它支持多种认证机制,包括表单登录、OAuth、LDAP等,并允许细粒度的权限控......
  • SpringCloudAlibaba商城
    功能预览用户端登录界面注册界面网站介绍保健品保健品详情养生知识养生知识详情文章中心文章详情--用户关注个人中心我的购物车我的订单我的养生知识文章管理文章发布/编辑  支付宝沙箱保健品结算保健品支付界面保健品支付成功界面支......
  • Spring Bean的生命周期
    在Spring框架中,在IOC容器中管理的Bean分为单例和原型两种,单例Bean在容器启动时就实例化,原型Bean则是每次从容器中请求时才会实例化。而不管是单例还是原型,Bean的生命周期都是基本一致的。生命周期流程图SpringBean的生命周期分为四个阶段:实例化Instantiation-->属性赋值Pop......
  • spring加载bean流程解析
    spring加载bean流程解析转载自:https://www.cnblogs.com/wyq178/p/11415877.htmlspring作为目前我们开发的基础框架,每天的开发工作基本和他形影不离,作为管理bean的最经典、优秀的框架,它的复杂程度往往令人望而却步。不过作为朝夕相处的框架,我们必须得明白一个问题就......