SpringMVC 响应数据与视图

响应数据与视图

返回字符串

Controller 方法返回字符串可以指定逻辑视图的名称,根据视图解析器为物理视图的地址。

SpringMVC 响应数据与视图
    @RequestMapping(value="/hello")
    public String sayHello() {
        //  跳转到 success 页面
        return "success";
    }

返回 void

1、默认会跳转到同 mapping 同名的页面,如@RequestMapping(value="/hello") 默认跳转到 hello 页面,不存在报 404

2、已知道 Servlet 原始 API 可以作为控制器中方法的参数,可使用其做转发或重定向

    @RequestMapping(value = "/initAdd")
    public void initAdd(HttpServletRequest request, HttpServletResponse response) throws
            Exception {        System.out.println(" 请求转发或者重定向 ");
//  请求转发   转发网址栏地址不变   页面变
// request.getRequestDispatcher("/WEB-INF/pages/add.jsp").forward(request,response);
//  重定向   跳转网址会产生变化
// response.sendRedirect(request.getContextPath()+"/add2.jsp");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
//  用 getWriter()直接响应数据
        response.getWriter().print(" 你好 ");
        return;
    }

3、使用 SpringMVC 关键字进行转发与重定向

如下重定向与转发不仅仅可以跳页面也能跳到其他 Controller 的 mapping

//"forward: 转发的 JSP 路径 ",不走视图解析器了,所以需要编写完整的路径
// 转发
	@RequestMapping("/delete")
    public String delete() throws Exception {
// return "forward:/WEB-INF/pages/success.jsp";
        return "forward:/user/findAll";
    }

// 重定向   到本机不需要完整路径
    @RequestMapping("/count")
    public String count() throws Exception {
        return "redirect:/add.jsp";
// return "redirect:/user/findAll";
    }

Model 与 ModelAndView

Model

Model 作为参数可调用其 addAttribute 方法添加数据到 request 域,如下:

    @RequestMapping(value = "/initUpdate")
    public String initUpdate(Model model) {
//  模拟从数据库中查询的数据
        User user = new User();
        user.setUsername(" 张三 ");
        model.addAttribute("user", user);
        return "update";
    }

在 jsp 页面可通过 ${requestScope}${user.username} 调用 request 中内容。

ModelAndView

ModelAndView 对象是 Spring 提供的一个对象,可以用来调整具体的 JSP 视图。它可以同时传入跳转页面名与数据对象,与上方 Model 功能差不多。只是 Model 将数据存在 Model 中,返回 String 页面名称,一般作为参数,但 ModelAndView 是作为返回值的。

    /**
     *  返回 ModelAndView 对象
     *  可以传入视图的名称(即跳转的页面),还可以传入对象。
     *
     * @return
     * @throws Exception
     */
    @RequestMapping(value = "/findAll")
    public ModelAndView findAll() throws Exception {        ModelAndView mv = new ModelAndView();
//  跳转到 list.jsp 的页面
        mv.setViewName("list");
//  模拟从数据库中查询所有的用户信息
        List<User> users = new ArrayList<>();
        User user1 = new User();
        user1.setUsername(" 张三 ");
        user1.setPassword("123");
        User user2 = new User();
        user2.setUsername(" 赵四 ");
        user2.setPassword("456");
        users.add(user1);
        users.add(user2);
//  添加对象
        mv.addObject("users", users);
        return mv;
    }

JSP 页面开启 c 标签调用

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

获取集合中值通过 forEach 遍历

<c:forEach items="${ users }" var="user">
${ user.username }
</c:forEach>

ResponseBody 返回 json

@ResponseBody 注解写在方法上或者方法返回的类型前,或者写在类上或者使用 @RestCotroller 注解

public @ResponseBody Address testJson(@RequestBody String body) {}

RequestBody 转对象

上述代码如果 @RequestBody 注解修饰的 String 变量封装成 JavaBean 对象

public @ResponseBody Address testJson(@RequestBody Address address) {}

使用 jackson 添加 jar 包即可,Springmvc 默认用 MappingJacksonHttpMessageConverter 对 json 数据进行转换

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.0</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.9.0</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.9.0</version>
</dependency>
目录
  • 响应数据与视图
    • 返回字符串
    • 返回 void
    • Model 与 ModelAndView
      • Model
      • ModelAndView
    • ResponseBody 返回 json
    • RequestBody 转对象
  • 目录
  • 响应数据与视图
    • 返回字符串
    • 返回 void
    • Model 与 ModelAndView
      • Model
      • ModelAndView
    • ResponseBody 返回 json
    • RequestBody 转对象
  • 手机扫描二维码访问

    本文标题:《SpringMVC 响应数据与视图》作者:极四维博客
    原文链接:https://cway.top/post/547.html
    特别注明外均为原创,转载请注明。

    分享到微信

    扫描二维码

    可在微信查看或分享至朋友圈。

    下一篇: SpringMVC异常处理

    相关文章

    发表评论:

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

    «    2024年10月    »
    123456
    78910111213
    14151617181920
    21222324252627
    28293031

    搜索

    控制面板

    您好,欢迎到访网站!
      查看权限

    最新留言

    文章归档

    • 订阅本站的 RSS 2.0 新闻聚合