首页 > 其他分享 >SpringMVC返回值

SpringMVC返回值

时间:2023-11-19 23:22:06浏览次数:24  
标签:SpringMVC 视图 user ModelAndView 返回值 Model 方法 User

字符串

    /**
     * 测试返回字符串
     * @param model model
     * @return 返回的字符串,通过视图解析器调整到jsp页面
     */
    @RequestMapping("/testString")
    public String testString(Model model){
        System.out.println("testString方法执行了。。。");
        User user = new User("zjw哈哈","123456",18);
        model.addAttribute("user",user);
        //相当于重定向
        return "success";
    }
  • 方法的功能和返回类型:

方法名称为 testString,其主要功能是处理一个 HTTP 请求并返回一个字符串。这个字符串通常用于指定要渲染的视图的名称。

  • 参数 - Model:

方法接受一个 Model 类型的参数。在 Spring MVC 中,Model 是一个接口,用于定义一个模型来存储控制器处理数据的结果。这些数据然后可以被传递给视图,用于渲染响应。
在这个方法中,通过调用 model.addAttribute("user", user),一个名为 "user" 的属性被添加到模型中,属性值是一个 User 对象实例。这意味着当视图被渲染时,这个 User 对象的数据将可用于显示。

  • 为什么可以直接写Model参数:

在 Spring MVC 中,当一个方法声明了 Model 作为参数,Spring 框架会自动为这个方法提供一个 Model 的实例。这是框架的一部分“依赖注入”功能。控制器方法不需要自己创建 Model 实例;框架会负责这个过程,并将实例传递给方法。
Model 参数的作用是允许开发者将数据添加到模型中,这些数据随后可以被视图访问和渲染。这是一种常见的模式,用于在 MVC(Model-View-Controller)架构中在控制器和视图之间传递数据。

转发和重定向

    @RequestMapping("/testVoid")
    public void testVoid(HttpServletRequest request, HttpServletResponse response) throws Exception {
        System.out.println("testVoid方法执行了。。。");
        //1、请求转发 不会再调用视图解析器,需要写完整的资源路径
//        request.getRequestDispatcher("/pages/success.jsp").forward(request,response);

        //2、重定向
//        response.sendRedirect(request.getContextPath()+"/index.jsp");
//        response.sendRedirect(request.getContextPath()+"/user/testVoid2");

        //3、直接打印
        //解决中文乱码
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter writer = response.getWriter();
        writer.print("hello,<br>");
        writer.print("<a href='#'>zzzzz</a>。");
    }
    /**
     * 使用关键字的方式进行转发或者重定向,不会用到视图解析器
     * @return
     */
    @RequestMapping("/testForwardOrRedirect")
    public String testForwardOrRedirect(){
        System.out.println("testForwardOrRedirect方法执行了。。。");

        //请求转发 这个也会自动识别项目名
//        return "forward:/pages/success.jsp";

        //重定向 不用加项目名称
//        return "redirect:/index.jsp";
        return "redirect:/user/testString";
    }

ModelAndView

    @RequestMapping("/testModelAndView")
    public ModelAndView testModelAndView(){

        //创建ModelAndView
        ModelAndView mv = new ModelAndView();
        System.out.println("testModelAndView方法执行了。。。");
        //模拟从数据库中查询出User对象
        User user = new User();
        user.setUsername("朱俊伟");
        user.setPassword("123");
        user.setAge(18);
        //把user对象存储到mv对象中,也会把user对象存入到request对象中
        mv.addObject("user",user);
        //跳转到哪个页面
        mv.setViewName("success");
        return mv;
    }
  • 方法的功能:

方法名称为 testModelAndView,其功能是创建一个 ModelAndView 对象,向其中添加数据,然后返回这个对象。
这个方法首先创建一个新的 ModelAndView 实例。然后,它模拟从数据库中查询出一个 User 对象,并将这个对象添加到 ModelAndView 实例中。
最后,方法通过 setViewName 方法设置视图名称为 "success",这指示视图解析器要渲染的视图(例如 success.jsp)。

  • ModelAndView 对象的作用:

ModelAndView 是一个便捷的方式,用于在单个返回值中同时处理模型数据和视图信息。
addObject 方法用于向 ModelAndView 对象添加属性。在这个例子中,它添加了一个名为 "user" 的属性,其值为一个 User 对象实例。这意味着当视图被渲染时,这个 User 对象的数据将可用于显示。
setViewName 方法设置了要渲染的视图的名称。在这种情况下,方法返回后,Spring MVC 的视图解析器会寻找一个名为 success 的视图来渲染响应。

  • 与 Model 的对比:

在其他 Spring MVC 控制器方法中,你可能看到使用 Model 或 ModelMap 类型的参数来传递模型数据,然后方法返回一个视图名称的字符串。这种方式将模型数据和视图分开处理。
ModelAndView 提供了一种更为紧密集成的方式,允许在单个对象中同时处理模型和视图,这在某些情况下可以使代码更清晰、更易于管理。

标签:SpringMVC,视图,user,ModelAndView,返回值,Model,方法,User
From: https://www.cnblogs.com/zjw-blog/p/17842959.html

相关文章

  • 14、SpringMVC之注解配置
    14.1、概述在实际工作中,一般使用配置类和注解代替web.xml和SpringMVC配置文件的功能;在Servlet3.0环境中,容器会在类路径中查找实现了javax.servlet.ServletContainerInitializer接口的类,如果找到了的话,就会用它来配置Servlet容器;Spring提供了ServletContainerIni......
  • SpringMVC参数绑定
    目录参数的绑定绑定的机制支持的数据类型使用要求使用示例基本类型和String类型作为参数POJO类型作为参数POJO类中包含集合类型参数请求参数乱码问题特殊情况自定义类型转换器使用场景使用ServletAPI对象作为方法参数参数的绑定绑定的机制我们都知道,表单中请求参数都是基于......
  • SpringMVC框架第一天
    目录SpringMVC的基本概念三层架构和MVC三层架构MVC模型MVC概述SpringMVC是什么SpringMVC在三层架构的位置SpringMVC的优势SpringMVC的入门SpringMVC的入门案例入门案例中的组件DispatcherServlet:前端控制器HandlerMapping:处理器映射器Handler:处理器HandlAdapter:处理器适配器ViewR......
  • Spring,SpringMVC,SpringBoot中注解讲解
    目录1Spring和SpringMVC注解1.1SpringMVC注解[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@ExceptionHandler1.1.11@ResponseS......
  • 13、SpringMVC之异常处理器
    13.1、环境搭建创建名为spring_mvc_exception的新module,过程参考9.1节和9.5节13.1.1、创建错误提示页<!DOCTYPEhtml><htmllang="en"xmlns:th="http://www.thymeleaf.org"><head><metacharset="UTF-8"><title>错误页面&l......
  • 数组的sort方法接受一个比较函数:compareFun(a, b); 如果返回的值>0,则调换a,b位置,即b的
    现有一组人员年龄的数据,要求将这些人员的年龄按照从小到大的顺序进行排列起来,要怎样来实现AfunctionnumberSort(a,b){returna-b;}vararr=newArray("23","6","12","35","76");document.write(arr.push(numberSort));BfunctionnumberSort(a,b){retu......
  • 12、SpringMVC之拦截器
    12.1、环境搭建创建名为spring_mvc_interceptor的新module,过程参考9.1节和9.5节12.1.1、页面请求示例<ath:href="@{/test/hello}">测试拦截器</a>12.1.2、控制器方法示例@RequestMapping("/test/hello")publicStringtestHello(){return"succe......
  • SpringMVC中Velocity的配置
    pom.xml所需velocity的jar<dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity</artifactId> <version>1.7</version> </dependency> <dependency> <groupId>org.apache.ve......
  • SpringMVC整合Shiro权限框架
    最近在学习Shiro,首先非常感谢开涛大神的《跟我学Shiro》系列,在我学习的过程中发挥了很大的指导作用。学习一个新的东西首先就是做一个demo,多看不如多敲,只有在实践中才能发现自己的欠缺,下面记录下来我整合shiro的过程。如果有不足之处,还望各位看官多多指出。......
  • javaWeb&springMVC
    Servlet1:servlet定义servlet是开发动态web的一门技术,通过servlet实现与用户的动态交互。2:使用方式(1)javaWeb中只需要继承HttpServlet接口,重写其中的doGet和doPost方法即可编写一个servlet;写好servlet程序后需要在web.xml文件中编写映射,相当于将我们缩写的servlet注册到web服务......