文章目录:

1.控制器controller方法的返回值

1.1 返回值类型:ModelAndView

1.2 返回值类型:String(这里的String是视图)

1.2.1 控制器类

1.2.2 springmvc配置文件

1.2.3 index.jsp

1.2.4 web.xml

1.2.5 运行结果

1.3 返回值类型:void

1.3.1 控制器类

1.3.2 springmvc配置文件与之前的例子相同

1.3.3 index.jsp

1.3.4 web.xml与之间的例子相同

1.3.5 运行结果

1.4 返回值类型:Object(可以是自定义Student类、List集合、Map集合等等)

1.4.1 控制器类

1.4.2 springmvc配置文件

1.4.3 index.jsp

1.4.4 web.xml与之前的例子相同

1.4.5 运行结果

1.5 返回值类型:String(这里的String是数据)

1.5.1 控制器类

1.5.2 springmvc配置文件

1.5.3 index.jsp

1.5.4 web.xml与之前的例子相同

1.5.5 运行结果

2.控制器类中的方法返回对象转为json的步骤


1.控制器controller方法的返回值

使用@Controller 注解的处理器的处理器方法,其返回值常用的有四种类型:

  1. 第一种:ModelAndView
  2. String
  3. void
  4. 返回自定义类型对象

1.1 返回值类型:ModelAndView

参考我的这篇文章即可:https://blog.csdn.net/weixin_43823808/article/details/115280620

若处理器方法处理完后,需要跳转到其它资源,且又要在跳转的资源间传递数据,此时处理器方法返回 ModelAndView 比较好。当然,若要返回 ModelAndView,则处理器方法中需要定义 ModelAndView 对象。

在使用时,若该处理器方法只是进行跳转而不传递数据,或只是传递数据而并不向任何资源跳转(如对页面的 Ajax 异步响应),此时若返回 ModelAndView,则将总是有一部分多余:要么 Model 多余,要么 View 多余。即此时返回 ModelAndView 将不合适。

1.2 返回值类型:String(这里的String是视图)

处理器方法返回的字符串可以指定逻辑视图名,通过视图解析器解析可以将其转换为物理视图地址。

1.2.1 控制器类

package com.songzihao.controller;import com.fasterxml.jackson.databind.ObjectMapper;
import com.songzihao.entity.Student;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;@Controller
public class MyController {/***  控制器方法返回String,表示逻辑名称,需要项目中配置视图解析器*/@RequestMapping(value = {"/return-string-view.do"})public String doReturnStringView1(HttpServletRequest request,String name, Integer age) {System.out.println("执行了MyController的doReturnStringView1方法,name=" + name + ",age=" + age);//处理数据request.setAttribute("myName",name);request.setAttribute("myAge",age);//使用视图解析器,返回结果,forward,转发到show.jspreturn "show";//如果不使用视图解析器,则需要写成下面这样//return "/WEB-INF/view/show.jsp";}}

1.2.2 springmvc配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"><!-- springmvc的配置文件 --><!-- 声明组件扫描器 --><context:component-scan base-package="com.songzihao.controller" /><!-- 声明视图解析器,帮助处理视图 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 前缀:指定试图文件的路径 --><property name="prefix" value="/WEB-INF/view/" /><!-- 后缀:试图文件的扩展名 --><property name="suffix" value=".jsp" /></bean></beans>

1.2.3 index.jsp

<%@ page contentType="text/html;charset=utf-8" language="java" %>
<html>
<head><title>接受请求参数</title>
</head>
<body><p>控制器返回String-逻辑视图名称</p><form action="return-string-view.do" method="post">姓名:<input type="text" name="name"><br/>年龄:<input type="text" name="age"><br/><input type="submit" value="提交参数"></form>
</body>
</html>

1.2.4 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><!-- 声明springmvc的核心对象 --><servlet><servlet-name>DispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 自定义配置文件的位置 --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><!-- tomcat服务器创建对象的顺序,数值(大于等于0)越小,创建对象的时间就越早 --><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>DispatcherServlet</servlet-name><!--把一些请求交给指定的servlet处理1.使用扩展名方式,格式:*.xxx, xxx是自定义的扩展名例如:*.do  *.action  *.mvc , 不能使用 *.jsp!!!2.使用斜杠 "/"--><!-- 意思是将 *.do 的请求交给 DispatcherServlet 处理 --><url-pattern>*.do</url-pattern></servlet-mapping><!-- 声明过滤器,框架提供的,解决post请求中乱码的问题 --><filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><!-- 给过滤器属性赋值 --><init-param><!-- 项目使用的字符集编码 --><param-name>encoding</param-name><param-value>utf-8</param-value></init-param><init-param><!-- 强制请求对象request使用encoding的编码方式 --><param-name>forceRequestEncoding</param-name><param-value>true</param-value></init-param><init-param><!-- 强制响应对象response使用encoding的编码方式 --><param-name>forceResponseEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>CharacterEncodingFilter</filter-name><!-- 强制所有请求,先经过过滤器处理 --><url-pattern>/*</url-pattern></filter-mapping></web-app>

1.2.5 运行结果

1.3 返回值类型:void

1.3.1 控制器类

package com.songzihao.controller;import com.fasterxml.jackson.databind.ObjectMapper;
import com.songzihao.entity.Student;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;@Controller
public class MyController {/***  控制器方法返回void,响应ajax请求,使用HttpServletResponse输出数据*/@RequestMapping(value = {"/return-void-ajax.do"})public void returnVoidAjax(HttpServletResponse response,String name, Integer age) throws IOException {System.out.println("处理void返回类型:name=" + name + ",age=" + age);Student student=new Student();student.setName(name);student.setAge(age);//把对象转为jsonObjectMapper om=new ObjectMapper();String json=om.writeValueAsString(student);System.out.println("服务器对象转为json===" + json);//输出json,响应ajaxresponse.setContentType("application/json;charset=utf-8");PrintWriter pw=response.getWriter();pw.println(json);pw.flush();pw.close();}}

1.3.2 springmvc配置文件与之前的例子相同

1.3.3 index.jsp

<%@ page contentType="text/html;charset=utf-8" language="java" %>
<html>
<head><title>接受请求参数</title><script type="text/javascript" src="js/jquery-3.6.0.js"></script><script type="text/javascript">$(function () {$("#myButton").on("click",function () {$.ajax({url: "return-void-ajax.do",//url: "doStudentJson.do",//url: "doStringData.do",data: {name: "张起灵",age: 20},dataType: "json",//dataType: "text",success: function (resp) {// resp=XMLHttpRequest.responseText;alert("name===" + resp.name + ",age===" + resp.age);//alert(resp);}})})})</script>
</head>
<body><p>控制器返回String-逻辑视图名称</p><form action="return-string-view.do" method="post">姓名:<input type="text" name="name"><br/>年龄:<input type="text" name="age"><br/><input type="submit" value="提交参数"></form><br/><br/><button id="myButton">提交ajax请求</button>
</body>
</html>

1.3.4 web.xml与之间的例子相同

1.3.5 运行结果

1.4 返回值类型:Object(可以是自定义Student类、List集合、Map集合等等)

1.4.1 控制器类

package com.songzihao.controller;import com.fasterxml.jackson.databind.ObjectMapper;
import com.songzihao.entity.Student;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;@Controller
public class MyController {/***  控制器方法返回Student-----json**  框架处理模式:*  1. 框架根据控制器方法的返回值类型,找到HttpMessageConverter接口的实现类,*     最后找到的是MappingJackson2HttpMessageConverter**  2. 使用实现类MappingJackson2HttpMessageConverter,执行它的write()方法,*     把Student对象转为了json格式的数据**  3. 框架使用@ResponseBody注解,把2中的json数据输出给了浏览器*     设置了content-type: application/json;charset=utf-8*/@RequestMapping(value = "/doStudentJson.do")@ResponseBodypublic Student doAjaxJson(String name,Integer age) {System.out.println("控制器方法返回自定义对象Student,转为Json:" + name + "," + age);Student student=new Student();student.setName(name);student.setAge(age);return student;}}

1.4.2 springmvc配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"><!-- springmvc的配置文件 --><!-- 声明组件扫描器 --><context:component-scan base-package="com.songzihao.controller" /><!-- 声明视图解析器,帮助处理视图 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 前缀:指定试图文件的路径 --><property name="prefix" value="/WEB-INF/view/" /><!-- 后缀:试图文件的扩展名 --><property name="suffix" value=".jsp" /></bean><!-- 声明注解驱动,创建HttpMessageConverter接口的7个实现类对象 --><mvc:annotation-driven /></beans>

1.4.3 index.jsp

<%@ page contentType="text/html;charset=utf-8" language="java" %>
<html>
<head><title>接受请求参数</title><script type="text/javascript" src="js/jquery-3.6.0.js"></script><script type="text/javascript">$(function () {$("#myButton").on("click",function () {$.ajax({//url: "return-void-ajax.do",url: "doStudentJson.do",//url: "doStringData.do",data: {name: "张起灵",age: 20},dataType: "json",//dataType: "text",success: function (resp) {// resp=XMLHttpRequest.responseText;alert("name===" + resp.name + ",age===" + resp.age);//alert(resp);}})})})</script>
</head>
<body><p>控制器返回String-逻辑视图名称</p><form action="return-string-view.do" method="post">姓名:<input type="text" name="name"><br/>年龄:<input type="text" name="age"><br/><input type="submit" value="提交参数"></form><br/><br/><button id="myButton">提交ajax请求</button>
</body>
</html>

1.4.4 web.xml与之前的例子相同

1.4.5 运行结果

1.5 返回值类型:String(这里的String是数据)

1.5.1 控制器类

package com.songzihao.controller;import com.fasterxml.jackson.databind.ObjectMapper;
import com.songzihao.entity.Student;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;@Controller
public class MyController {/***  控制器方法返回String,这里是数据**  区分返回值String是数据还是视图*  1.方法上面有 @ResponseBody 注解,就是数据*  2.方法上面没有 @ResponseBody 注解,就是视图**  框架处理String返回值*  1.框架使用StringHttpMessageConverter*  2.StringHttpMessageConverter默认的字符集编码是ISO_8859_1*  3.使用 @RequestMapping 注解中的produces属性进行修改:produces = "text/plain;charset=utf-8"*/@RequestMapping(value = {"/doStringData.do"},produces = "text/plain;charset=utf-8")@ResponseBodypublic String doStringData(String name,Integer age) {System.out.println("控制器方法返回String,是数据");return "Hello SpringMVC注解式开发";}}

1.5.2 springmvc配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"><!-- springmvc的配置文件 --><!-- 声明组件扫描器 --><context:component-scan base-package="com.songzihao.controller" /><!-- 声明视图解析器,帮助处理视图 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 前缀:指定试图文件的路径 --><property name="prefix" value="/WEB-INF/view/" /><!-- 后缀:试图文件的扩展名 --><property name="suffix" value=".jsp" /></bean><!-- 声明注解驱动,创建HttpMessageConverter接口的7个实现类对象 --><mvc:annotation-driven /></beans>

1.5.3 index.jsp

<%@ page contentType="text/html;charset=utf-8" language="java" %>
<html>
<head><title>接受请求参数</title><script type="text/javascript" src="js/jquery-3.6.0.js"></script><script type="text/javascript">$(function () {$("#myButton").on("click",function () {$.ajax({//url: "return-void-ajax.do",//url: "doStudentJson.do",url: "doStringData.do",data: {name: "张起灵",age: 20},//dataType: "json",dataType: "text",success: function (resp) {// resp=XMLHttpRequest.responseText;//alert("name===" + resp.name + ",age===" + resp.age);alert(resp);}})})})</script>
</head>
<body><p>控制器返回String-逻辑视图名称</p><form action="return-string-view.do" method="post">姓名:<input type="text" name="name"><br/>年龄:<input type="text" name="age"><br/><input type="submit" value="提交参数"></form><br/><br/><button id="myButton">提交ajax请求</button>
</body>
</html>

1.5.4 web.xml与之前的例子相同

1.5.5 运行结果


2.控制器类中的方法返回对象转为json的步骤

  1. 在pom.xml文件中加入 jackson 依赖,springmvc框架处理json时,默认使用的是jackson。
  2. 在springmvc配置文件中,加入注解驱动标签: <mvc:annotation-driven />。
  3. 在控制器方法的上面加入 @ResponseBody 注解,表示将返回值数据输出给浏览器。

SpringMVC——控制器方法的返回值类型(ModelAndView、String、void、Object)相关推荐

  1. SpringMVC——处理器方法的返回值类型

    目录 1. 控制器controller方法的返回值 1.1 返回值类型:ModelAndView 1.2 返回值类型:String 1.3返回值类型:void 1.4 返回值类型:Object(可以是 ...

  2. java gettext返回值_012-关于EditText中的getText()方法的返回值类型以及string的转换问题(转)...

    EditText中的getText()方法的返回值为CharSequence,如果我们想要获得string类型数据的话,需要在后边加上.toString 另外,String类型转为int:Intege ...

  3. 函数式接口作为方法的返回值类型案例

    类似地,如果一个方法的返回值类型是一个函数式接口,那么就可以直接返回一个Lambda表达式.当需要通过一 个方法来获取一个java.util.Comparator 接口类型的对象作为排序器时,就可以调 ...

  4. Spring MVC 中的 controller层的方法的返回值类型

    Controller方法的返回值可以有以下几种: 1.返回ModelAndView 返回ModelAndView时最常见的一种返回结果.需要在方法结束的时候定义一个ModelAndView对象,并对M ...

  5. 方法的返回值类型是object_JavaScript中如何判断类型

    1. typeof typeof (整数/小数/自然对数Math.LN2/正无穷大数Infinity) ===> numbertypeof NaN ===> number typeof ( ...

  6. 关于c++ find返回值类型 与string::nops的使用的若干问题

    假设有这样的字符串"xiaobaizhu\nxiaobaizhu\xiaobaizhu",我们只想要截取字符串第一行,而其他行不考虑. 原始方法: 通过将find("\n ...

  7. 注意扩展方法的返回值类型

    public static IEnumerable<TSource> Where : IEnumerable<TSource>  类型 转载于:https://www.cnbl ...

  8. 测试: 如果一个方法的返回值类型是父类,那么能否返回一个子类对象.(该父类不管是类,抽象类还是接口)?

    package cn.zxj.com;public class Fu {public Fu() {System.out.println("我是父类");} } package cn ...

  9. .net mvc actionresult 返回字符串_072-SpringMVC后端控制器接收参数、处理器方法返回值类型、拦截器、文件上传下载...

    1. 注解式开发之annotation-driven解释 (1) mvc注解驱动在哪个文件中配置? 在springmvc中配置 (2) 配置mvc注解驱动使用哪个标签? 2. 注解式开发之视图解析器 ...

最新文章

  1. System Center 2012 r2优点
  2. 绩效管理是什么?怎么做绩效管理?
  3. 国内人脸识别第一案,我们来谈谈国外法规和隐私保护技术
  4. Windows Phone 7 XNA开发之关于图形的配置
  5. 图解Linux的Socket
  6. 非root用户挂载NFS
  7. python字典遍历取值_Python中字典的使用
  8. 四川省中职计算机考试题,四川省计算机等级考试模拟试题(一级)
  9. 35岁程序员惨遭裁员,找了6份兼职,晒出收入网友:“打工皇帝”
  10. laravel yii thinkphp 框架对比_thinkPHP--项目
  11. 程序员在编程中遇到的奇葩弱智问题(转)
  12. vue中实现页面全屏和指定元素全屏
  13. 科技云报道:深信服桌面云,“大”不一样
  14. 因子分解机(FM,FFM,DeepFM,libfm,xlearn)
  15. 供应链管理的三个层次
  16. 应用Itextsharp 添加图片到pdf
  17. 日系插画学习笔记(二):结构与透视
  18. 开课吧 dubbo+zookeeper
  19. Python实验、Pandas数据处理与分析
  20. 理工科科研结果展示怎样让PPT高大上?

热门文章

  1. Docker系列-安装docker
  2. 微信小程序—拖拽排序
  3. 如何根据背景颜色确定白色或黑色字体颜色?
  4. 存储性能测试软件怎么用的,存储过程在性能测试中的应用
  5. ubuntu18+ros安装
  6. uni-app开启微信小程序调试
  7. python测试驱动开发_Python测试驱动开发:使用Django、Selenium和JavaScript进行Web编程(第2版)...
  8. linux的输出重定向
  9. 海信电视的操作系统android好不好,海信安卓智能液晶电视怎么样?这个谁了解?...
  10. execution_character_set报warning: unknown pragma ignored