在JavaWeb项目中许多项目会使用SpringMVC作为开发框架,下面将介绍几种将后台Controller控制器执行的结果返回到页面的方法。

首先创建示例中需要用到的类、公共方法和结果显示页面。

(1)创建用户信息模型类(UserModel.java)。

package com.pjb.ssm.model;/*** 用户信息模型类** @author pan_junbiao**/
public class UserModel
{private int userId; //用户IDprivate String userName; //用户名称private String blogUrl; //博客地址private String remark; //备注信息//省略getter与setter方法...
}

(2)编写获取用户信息方法,模拟Service层的业务。

/*** 获取用户信息(模拟Service层的业务)*/
public UserModel getUserDetail()
{UserModel userModel = new UserModel();userModel.setUserId(1);userModel.setUserName("pan_junbiao的博客");userModel.setBlogUrl("https://blog.csdn.net/pan_junbiao");userModel.setRemark("您好,欢迎访问 pan_junbiao的博客");return userModel;
}

(3)创建user文件夹,并在该文件夹中创建结果显示页面(user_info.jsp)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>用户信息</title><meta name="author" content="pan_junbiao的博客"><style>table {border-collapse: collapse;}table, table tr th, table tr td {border: 1px solid #000000;padding: 5px 10px;}</style>
</head>
<body>
<table align="center"><caption>用户信息</caption><tr><th>用户编号</th><td>${userModel.userId}</td></tr><tr><th>用户姓名</th><td>${userModel.userName}</td></tr><tr><th>博客地址</th><td>${userModel.blogUrl}</td></tr><tr><th>备注信息</th><td>${userModel.remark}</td></tr>
</table>
</body>
</html>

1、使用Model/ModelMap对象

SpringMVC有一些默认支持的类型,这些类型可以直接在Controller类的方法中定义,在参数绑定的过程中遇到该种类型就直接进行绑定。HttpServletRequest可以通过request对象获取请求信息;对于Model/ModelMap,其中Model是一个接口,ModelMap是一个接口实现,它的作用就是将model数据填充到request域。

编写后台Controller控制器执行方法,使用Model保存数据结果。

/*** 获取用户信息** @author pan_junbiao*/
@RequestMapping(value = "/getUserModel", method = RequestMethod.GET)
public String getUserModel(Model model)
{//获取用户信息(模拟Service层的业务)UserModel userModel = getUserDetail();//将用户信息保存到Model对象中model.addAttribute("userModel", userModel);//返回页面return "/user/user_info.jsp";
}

执行结果:

2、使用ModelAndView对象

使用ModelAndView类用来存储处理完后的结果数据,以及显示该数据的视图。从名字上看ModelAndView中的Model代表模型,View代表视图,这个名字就很好地解释了该类的作用。业务处理器调用模型层处理完用户请求后,把结果数据存储在该类的model属性中,把要返回的视图信息存储在该类的view属性中,然后让该ModelAndView返回该SpringMVC框架。框架通过调用配置文件中定义的视图解析器,对该对象进行解析,最后把结果数据显示在指定的页面上。

/*** 获取用户信息** @author pan_junbiao*/
@RequestMapping(value = "/getUserModel", method = RequestMethod.GET)
public ModelAndView getUserModel()
{//获取用户信息(模拟Service层的业务)UserModel userModel = getUserDetail();//创建返回结果ModelAndView对象ModelAndView modelAndView = new ModelAndView();//相当于request的setAttribut方法modelAndView.addObject("userModel", userModel);//指定视图modelAndView.setViewName("/user/user_info.jsp");//返回结果return modelAndView;
}

3、使用HttpServletRequest对象

HttpServletRequest对象提供的setAtribute(String name, Object object)方法可以将数据保存到request范围内的变量中。

/*** 获取用户信息** @author pan_junbiao*/
@RequestMapping(value = "/getUserModel", method = RequestMethod.GET)
public String getUserModel(HttpServletRequest request)
{//获取用户信息(模拟Service层的业务)UserModel userModel = getUserDetail();//将用户信息保存到HttpServletRequest对象中request.setAttribute("userModel", userModel);//返回页面return "/user/user_info.jsp";
}

4、返回String字符串结果

SpringMVC返回字符串结果,并解决中文乱码问题。

/*** SpringMVC返回字符串结果,并解决中文乱码问题** @author pan_junbiao*/
@RequestMapping(value = "/getMessage", produces = {"text/html;charset=UTF-8;", "application/json;"})
@ResponseBody
public String getMessage()
{return "您好,欢迎访问 pan_junbiao的博客";
}

5、返回JSON格式数据

SpringMVC的Controller控制器方法,需要返回JSON格式的数据,需要使用@RequestBody注解。@RequestBody注解的特点就是,根据请求参数的Content-Type决定是否将相关格式转换至包装类,如果Content-Type是目标类型,就进行转换。这里转换的是JSON数据,所有要求将前端请求的Content-Type指定为“application/json”类型,而普通key/value请求参数的Content-Type默认为“application/x-www-form-urlencoded”类型。

/*** 获取JSON格式的登录用户信息** @author pan_junbiao*/
@RequestMapping(value = "getLoginUser", method = RequestMethod.POST)
@ResponseBody
public UserModel getLoginUser(@RequestBody UserParam userParam)
{UserModel userModel = null;//判断登录信息if (userParam.getUserName().equals("pan_junbiao的博客") && userParam.getPassword().equals("123456")){//获取用户信息userModel = new UserModel();userModel.setUserId(1);userModel.setUserName("pan_junbiao的博客");userModel.setBlogUrl("https://blog.csdn.net/pan_junbiao");userModel.setRemark("您好,欢迎访问 pan_junbiao的博客");}//返回结果return userModel;
}

5.1 执行方法一:使用ajax请求

使用JQuery提供的Ajax功能请求,关键代码:

//加载数据钮事件
$("#btnLoad").click(function () {//请求参数对象var params = {};params.userName = "pan_junbiao的博客";params.password = "123456";//执行Ajax请求$.ajax({type: "POST",url: "${pageContext.request.contextPath}/json/getLoginUser.action",dataType: "json",contentType: "application/json; charset=UTF-8",data: JSON.stringify(params),success: function (result) {//绑定数据$("#td_userId").html(result.userId);$("#td_userName").html(result.userName);$("#td_blogUrl").html(result.blogUrl);$("#td_remark").html(result.remark);}});
});

5.2 执行方法二:使用Postman工具

第二种执行方法,使用Postman工具进行测试。

执行结果:

SpringMVC返回数据到页面的方法相关推荐

  1. php怎么返回数据到控制台,php返回数据到控制台的方法

    php返回数据到控制台的方法 发布时间:2020-09-18 11:51:41 来源:亿速云 阅读:63 作者:小新 这篇文章给大家分享的是有关php返回数据到控制台的方法的内容.小编觉得挺实用的,因 ...

  2. springmvc返回数据中文乱码

    今天用springmvc作为接口产生了中文乱码,因为返回的是string  就不能用以前的更改responseBody了  . 在spring-mvc.xml文件中: <mvc:annotati ...

  3. SpringMVC的数据响应-页面跳转-返回ModelAndView形式1(应用)

    在Controller中方法返回ModelAndView对象,并且设置视图名称 @RequestMapping(value="/quick2") public ModelAndVi ...

  4. SpringMVC的数据响应-页面跳转-返回ModelAndView形式2(应用)

    在Controller中方法形参上直接声明ModelAndView,无需在方法中自己创建,在方法中直接使用该对象设置视图,同样可以跳转页面 @RequestMapping(value="/q ...

  5. SpringMVC的数据响应-页面跳转-返回ModelAndView3(应用)

    在Controller方法的形参上可以直接使用原生的HttpServeltRequest对象,只需声明即可 @RequestMapping(value="/quick5") pub ...

  6. SpringMVC的数据响应-页面跳转-返回字符串形式(应用)

  7. 常用WebServices返回数据的4种方法比较

    以前经常在群里听到朋友们说WebServices的性能特别的慢,说的如何如何.说实话,WebServices的确比调用本地数据要慢一些,可是究竟有多慢,真的如朋友们说的那么难以忍受吗?我个人感觉,多半 ...

  8. 常用WebServices返回数据的4种方法比较 (转)

    以前经常在群里听到朋友们说WebServices的性能特别的慢,说的如何如何.说实话,WebServices的确比调用本地数据要慢一些,可是究竟有多慢,真的如朋友们说的那么难以忍受吗?我个人感觉,多半 ...

  9. php写的接口返回数据的页面,PHP怎么解析 WEBSERVICES接口返回的数据

    PHP如何解析 WEBSERVICES接口返回的数据 WEBSERVICE服务器,他们用.net写了个接口 http://XXX.XXX.XXX.XX/Info.asmx?wsdl 我用PHP调用这个 ...

最新文章

  1. JQuery dataTable 扩展+Ajax Post,Get一些基本操作(一)
  2. 云通讯平台:为更多游戏玩家解放双手
  3. Container View Controller
  4. Spring Boot-热部署和Debugger使用(三)
  5. 用sqoop将mysql的数据导入到hive表
  6. XSLT的处理模型(1)
  7. php 地区表设计,php消息表设计
  8. 亲测可用小米刷旧版开发版固件,刷入华硕、潘多拉固件
  9. python随堂笔记(2)- globle全局变量的修改
  10. spring boot中小学餐饮配送系统 毕业设计-附源码645661
  11. React Native-6.React Native Text组件,多组件封装实战之凤凰资讯页面
  12. c语言笔试程序改错题,C语言笔试--程序改错题.doc
  13. vue 移动端拨打电话
  14. 最优化:一维搜索的Wolfe条件与Goldstein条件
  15. 揭秘支撑百度搜索、Feed、小程序三大业务的MVVM框架设计思想,San 核心人员倾力打造...
  16. 行业前研|人工智能在作战仿真中的应用
  17. 利用文件头标志判断文件类型
  18. 这个专门提供多角恋约会的软件,终于被谷歌封杀了
  19. 杭电4510—小Q系列故事—为什么时光不能倒流
  20. 外贸管理软件CRM、ERP对外贸企业有什么用?

热门文章

  1. 笑谈XML,xsd与xsl文件的区别
  2. 求菲波那切数列第n项
  3. Could not find multidex.jar (com.android.support:multidex:1.0.2).
  4. 铁姆肯公司收购Aurora轴承公司
  5. 一张图掌握薛兆丰经济学讲义的精华
  6. 公有云与私有云的区别(转)
  7. Android 进程间通信方式
  8. 部分特定领域的信息化检测管理要求和获认可机构目录
  9. 平稳/非平稳信号举例
  10. APK打包、安装流程