博客
关于我
springMVC学习(二)
阅读量:796 次
发布时间:2023-02-26

本文共 2968 字,大约阅读时间需要 9 分钟。

数据处理与页面展示

在Spring MVC应用中,数据如何从控制器传递到页面是一个常见的问题。本文将介绍几种常用的方法,并结合实际场景进行说明。

  • 使用ModelAndView返回数据
  • ModelAndView类在Spring MVC中是一个非常有用的工具类。通过创建ModelAndView对象,我们可以将数据和视图分开管理。以下是一个示例:

    @RequestMapping("toPerson5.do")
    public ModelAndView toPerson5() throws Exception {
    Person person = new Person();
    person.setName("zhangsan");
    person.setAge(23);
    person.setAddress("beijing");
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date date = sdf.parse("1982-09-09");
    person.setBirthday(date);
    Map
    map = new HashMap
    ();
    map.put("p", person);
    return new ModelAndView("info", map);
    }

    这种方法通过将数据封装到Map对象中,统一由视图解析器处理。虽然功能上可以实现数据的传递,但不建议在实际项目中使用,原因在于它不符合Spring MVC的最佳实践。

    1. 参数列表中定义Map对象
    2. 直接在方法参数中定义Map对象,可以让视图解析器统一处理数据。这种方法虽然简洁,但同样不建议使用,因为它不利于数据的复杂处理和扩展性。

      @RequestMapping("toPerson6.do")
      public ModelAndView toPerson6(Map
      map) throws Exception {
      Person person = new Person();
      person.setName("zhangsan");
      person.setAge(23);
      person.setAddress("beijing");
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
      Date date = sdf.parse("1982-09-09");
      person.setBirthday(date);
      map.put("p", person);
      return new ModelAndView("info", map);
      }
      1. 使用Model对象
      2. 推荐的做法是通过Model对象向页面传递数据。这种方法不仅简洁,而且符合Spring MVC的最佳实践。以下是一个示例:

        @RequestMapping("toPerson7.do")
        public String toPerson7(Model model) throws Exception {
        Person person = new Person();
        person.setName("lisi");
        person.setAddress("shanghai");
        person.setAge(32);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date birthday = sdf.parse("1782-12-12");
        person.setBirthday(birthday);
        model.addAttribute("p", person);
        return "info";
        }

        通过这种方式,数据会自动传递到页面,页面可以直接使用${p}来访问对象的属性。

        Ajax调用

        在Spring MVC中,处理Ajax请求需要注意返回值类型和数据传递方式。以下是几种常用的方法。

      3. 使用HttpServletResponse
      4. 这种方法虽然可行,但不建议在实际项目中使用,因为它不符合现代开发规范。以下是一个示例:

        @RequestMapping("ajax.do")
        public void ajax(@RequestBody String name, HttpServletResponse response) throws Exception {
        String result = "hello " + name;
        response.getWriter().write(result);
        }
        1. 使用PrintWriter
        2. 推荐的做法是通过PrintWriter对象向页面输出数据。这种方法既简洁又高效。以下是一个示例:

          @RequestMapping("ajax1.do")
          public void ajax1(@RequestBody String name, PrintWriter out) throws Exception {
          String result = "hello " + name;
          out.write(result);
          }

          页面交互

          为了实现页面之间的交互,可以使用重定向和视图名管理。以下是具体示例。

        3. Controller内部重定向
        4. 通过redirect:指定重定向的视图名,可以实现同一控制器内的页面跳转。以下是一个示例:

          @RequestMapping("redirectToForm.do")
          public String redirectToForm() {
          return "redirect:toForm.do";
          }
          1. Controller间重定向
          2. 当需要跨控制器重定向时,需要指定完整的命名空间。以下是一个示例:

            @RequestMapping("redirectToForm1.do")
            public String redirectToForm1() {
            return "redirect:/test1/toForm.do";
            }

            请求方法指定

            为了实现对请求方式的精确控制,可以使用method属性。以下是一个示例:

            @RequestMapping(value = "toPerson8.do", method = RequestMethod.POST)
            public String toPerson8(@RequestBody Person person) {
            System.out.println(person);
            return "jsp1/hello";
            }

            通过指定RequestMethod.POST,可以确保前台页面只能以POST方式提交数据。

    转载地址:http://novfk.baihongyu.com/

    你可能感兴趣的文章
    Springboot ppt转pdf——aspose方式
    查看>>
    pandas读取csv编码utf-8报错
    查看>>
    pandas读取parquet报错
    查看>>
    pandas读取数据用来深度学习
    查看>>
    pandas读取文件时,不去掉前面的0 保留原有的数据格式
    查看>>
    Pandas进阶大神!从0到100你只差这篇文章!
    查看>>
    spring5-介绍Spring框架
    查看>>
    pandas,python - 如何在时间序列中选择特定时间
    查看>>
    Spring 框架之 AOP 原理深度剖析
    查看>>
    Pandas:如何按列元素的组合分组,以指示基于不同列的值的同现?
    查看>>
    Pandas:将一列与数据帧的所有其他列进行比较
    查看>>
    PANDA和GLOB:将文件夹中的所有xlsx文件转换为CSV类型错误:__init__()获得意外的关键字参数‘;xfid‘;
    查看>>
    panda查找想要找的行合并成一个新pd
    查看>>
    PANDA:基于多列对数据表的行运行计算,并将输出存储在新列中
    查看>>
    PandoraFMS 监控软件 SQL注入漏洞复现
    查看>>
    PandoraFMS 监控软件 任意文件上传漏洞复现
    查看>>
    PanTools多网盘登录神器
    查看>>
    Papyrus项目常见问题解决方案
    查看>>
    Parallel.ForEach使用示例
    查看>>
    Parallel.ForEach的基础使用
    查看>>