springMVC学习(二)
发布日期:2025-05-01 23:48:44 浏览次数:13 分类:精选文章

本文共 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方式提交数据。

    上一篇:Pdfkit页眉和页脚
    下一篇:PDB文件:每个开发人员都必须知道的

    发表评论

    最新留言

    很好
    [***.229.124.182]2026年06月11日 15时15分05秒