IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> SSM之SpringMVC数据响应/在IDEA中SpringMVC怎么进行页面跳转和回写数据/JSON格式怎么回写到前台页面 -> 正文阅读

[开发工具]SSM之SpringMVC数据响应/在IDEA中SpringMVC怎么进行页面跳转和回写数据/JSON格式怎么回写到前台页面

写在前面
记录自己的SpringMVC学习之旅,若看不懂则建议先看前几篇博客,详细代码可在我的Gitee仓库ssm-learning克隆下载学习使用!

2.3 数据响应

2.3.1 数据响应方式

主要分为两种,即

  • 页面跳转。直接返回字符串,并通过ModelAndView对象返回
  • 回写数据。直接返回字符串,返回对象集合

2.3.2 页面跳转

2.3.2.1 返回字符串形式

直接返回字符串:此方式将返回的字符串与视图解析器的前后缀拼接后跳转
比如:

控制器某方法return success
转发资源地址:/jsp/success.jsp
<property name=prefix value =/jsp/><property name=suffix value =.jsp>

返回带有前缀的字符串:
-重定向:redirect:/sucess.jsp

  • 转发:forward:/jsp/success.jsp

2.3.2.2 返回ModelAndView对象

2.3.2.2.1 ModelAndView对象

ModelAndView对象是一个封装好的模型数据视图对象,可以理解为Model+View的集合体。此对象可以设置模型数据,设置将要跳转的视图名称。另外,Model也可以单独来使用。

2.3.2.2.2 用法

一般在UserController类中的方法使用,有两种用法,如下:

    @RequestMapping("/demo1")  
//用法一
// 使用ModelAndView对象返回 
 public ModelAndView UsingModelAndView()  
    {  
//        ModelAndView可以看做两部分:  
//        model:封装数据  
//        View:展示数据  
		 ModelAndView modelAndView = new ModelAndView();  
		// 设置模型数据  
		 modelAndView.addObject("userName","demo");  
		// 设置视图名称  
		 modelAndView.setViewName("success");  
		 return modelAndView;  
 }  
  
  //用法二
    @RequestMapping("/demo2")  
// 使用ModelAndView对象返回 
 public ModelAndView UsingModelAndView1(ModelAndView modelAndView)  
    {  
// 设置模型数据  
 modelAndView.addObject("userName","modelAndView1");  
// 设置视图名称  
 modelAndView.setViewName("success");  
 return modelAndView;  
 }  

备注:其中的Model也可以单独来使用,如下

    @RequestMapping("/demo3")  
// 使用ModelAndView对象返回  
 public String UsingModelAndView2(Model model)  
    {  
        model.addAttribute("userName","使用Model");  
 return "success";  
 }

2.3 回写数据

2.3.1 直接返回字符串

Web基础阶段:使用

response.getWrite().print("Hello World");

可以将字符串直接返回给服务器!
在Controller层中直接会写字符串方法:

  • 使用基础方法。通过SpringMVC框架注入的Response对象,使用response.getWrite().print(“xxx”)回写数据,此时不需要视图跳转,业务方法返回值为void。如下:
@ReuqestMapping("/backwrite1")
public void backWrite1(HttpServletResponse response) throws Exception
{
response.getWrite().print("Hello World");
}

2.3.2 返回对象或集合

使用处理器转换器RequestMappingHandlerAdapter进行自动配置,配置如下:

<!-- 配置JSON处理器转换器-->  
 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">  
	 <property name="messageConverters">  
		 <list> 
			 <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>  
		 </list>
	</property> 
</bean>

而控制器方法只返回对象即可,如图![[Pasted image 20211128204856.png]]
优化
在方法上添加@ResponseBody可以直接返回JSON格式字符串,但xml配置太麻烦,可用注解直接来替代繁琐的xml配置,即<mvc:annotation-driven/>
注意:
处理映射器,处理适配器,视图解析器是SpringMVC的三大组件。使用<mvc:annotation-driven/>自动加载RequestMappingHandlerMapping(处理映射器)和RequestMappingHandlerAdapter(处理适配器),可用在springmvc中xml配置文件中替代注解处理映射器和适配器的配置。而且使用<mvc:annotation-driven/>默认底层会集成Jackson进行对象或集合的JSON格式字符串转换。

2.4 代码操作

2.4.1 项目准备

还是使用上一节SpringMVC简介中的项目。

2.4.2 使用返回ModelAndView对象

在UserController类中新建一方法,设置ModelAndView对象,代码如下:

    @RequestMapping("/demo1")  
// 使用ModelAndView对象返回  
 public ModelAndView UsingModelAndView()  
    {  
//        ModelAndView可以看做两部分:  
//        model:封装数据  
//        View:展示数据  
	 ModelAndView modelAndView = new ModelAndView();  
	// 设置模型数据  
	 modelAndView.addObject("userName","demo");  
	// 设置视图名称  
	 modelAndView.setViewName("success");  
	 return modelAndView;  
 }

更改success视图页面,如图![[Pasted image 20211126205820.png]]

2.4.3 回写数据

2.4.3.1 资源准备

在pom文件中加入servlet-api及jackson相关的依赖,如下:

<!-- 数据回写使用-->  
 <dependency>  
		 <groupId>javax.servlet</groupId>  
		 <artifactId>javax.servlet-api</artifactId>  
		 <version>4.0.1</version>  
 </dependency> 
<dependency> 
		<groupId>javax.servlet.jsp</groupId>  
		 <artifactId>javax.servlet.jsp-api</artifactId>  
		 <version>2.3.3</version>  
</dependency>
<!--   json数据转换使用 -->  
 <dependency>  
		 <groupId>com.fasterxml.jackson.core</groupId>  
		 <artifactId>jackson-core</artifactId>  
		 <version>2.12.0</version>  
 </dependency>
<dependency> 
		<groupId>com.fasterxml.jackson.core</groupId>  
		 <artifactId>jackson-annotations</artifactId>  
		 <version>2.12.0</version>  
 </dependency> 
<dependency>
		<groupId>com.fasterxml.jackson.core</groupId>  
		 <artifactId>jackson-databind</artifactId>  
		 <version>2.12.0</version>  
 </dependency>

在根目录新建实体类User,用于对象返回。如图![[Pasted image 20211128195741.png]]

2.4.3.2 代码实现回写字符串

回写字符串主要有两种,即普通Web基础的和SpringMVC框架的,如下:

  • 方法一。在UserController类中写入方法,如图![[Pasted image 20211128194304.png]]
  • 方法二。将需要回写的字符串直接返回,此时需要通过@ResponseBody注解告知SpringMVC框架,方法返回的字符串不是跳转,而是直接在Http响应体中 返回,代码如下:
//    SpringMVC方式 @RequestMapping("backwrite2")  
@ResponseBody  
public String backWrite2()  
{  
   return "Hello ,Spring MVC!";  
}
2.4.3.3 回写对象或集合

对象或集合的返回一般都是以JSON字符串的方式进行返回,代码如下:

    @RequestMapping("backwrite3")  
// 回写JSON字符串  
@ResponseBody  
public String backWrite3() throws Exception  
   {  
       User user = new User();  
   	 user.setName("tom");  
   	 user.setAge(20);  
   	// 用Jackson工具将对象转换为JSON格式字符串并返回  
   	 ObjectMapper objectMapper = new ObjectMapper();  
   	 String json = objectMapper.writeValueAsString(user);  
   	 return json;  
}
    @RequestMapping("backwrite4")  
// 回写JSON字符串,用处理映射器自动转换  
@ResponseBody  
public User backWrite4() throws Exception  
   {  
       User user = new User();  
   	 user.setName("tom");  
   	 user.setAge(20);  
   	 return user;  
}

2.5 测试

2.5.1 测试ModelAndView对象

运行项目后,依旧如图操作![[Pasted image 20211126205609.png]]
会跳转到成功页面,如图![[Pasted image 20211126211257.png]]
若看不到userName值的话,就在success.jsp加入如图语句![[Pasted image 20211126211223.png]]

2.5.2 测试回写数据

同上操作,可在浏览器页面看见意料中的文字,结果依次如图
![[Pasted image 20211127221306.png]]
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-11-29 16:30:44  更:2021-11-29 16:31:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:24:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码