SpringMvc响应数据及结果视图实现代码

针对SpringMvc响应数据及结果视图实现代码的完整攻略,我们可以分为以下几个部分进行讲解。

一、SpringMVC响应数据的方式

SpringMVC提供了多种方式响应数据,分别如下:

  1. 转发 forward
  2. 重定向 redirect
  3. 返回JSON数据
  4. 返回XML数据
  5. 返回文件

1. 转发 forward

使用转发可以将请求转发给其他控制器或JSP页面。实现转发的方式有两种,一种是使用HttpServletRequest对象进行转发,另一种是使用ModelAndView对象进行转发。

使用HttpServletRequest进行转发

转发时需要使用HttpServletRequest对象中的getRequestDispatcher()方法获取RequestDispatcher对象,然后通过RequestDispatcher对象中的forward()方法进行转发。转发可以直接使用请求路径或者通过请求路径前缀的方式进行转发,代码示例如下:

@RequestMapping("/test")
public void test(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    // 直接转发
    request.getRequestDispatcher("/hello.jsp").forward(request, response);

    // 使用请求路径前缀进行转发
    request.getRequestDispatcher("../index.jsp").forward(request, response);
}

使用ModelAndView进行转发

另一种使用ModelAndView对象进行转发的方式,它可以将模型数据和响应结果封装到一个ModelAndView对象中,并且通过返回ModelAndView对象实现转发。代码示例如下:

@RequestMapping("/test")
public ModelAndView test() {
    ModelAndView mav = new ModelAndView();
    // 设置模型数据
    mav.addObject("msg", "Hello, World!");
    // 设置视图名称
    mav.setViewName("hello");
    return mav;
}

2. 重定向 redirect

重定向是指将请求重定向到另一个页面或者控制器,实现重定向的方式有两种,一种是使用RedirectView对象进行重定向,另一种是使用HttpServletResponse对象进行重定向。

使用RedirectView进行重定向

使用RedirectView对象需要创建一个RedirectView对象并设置重定向路径,然后将RedirectView对象包装到ModelAndView对象中,最后通过返回ModelAndView对象实现重定向。代码示例如下:

@RequestMapping("/test")
public ModelAndView test() {
    ModelAndView mav = new ModelAndView();
    mav.setView(new RedirectView("/hello"));
    // 设置模型数据
    mav.addObject("msg", "Hello, World!");
    return mav;
}

使用HttpServletResponse进行重定向

使用HttpServletResponse对象进行重定向需要调用HttpServletResponse对象中的sendRedirect()方法,并传递重定向路径作为参数。这种方式不能将模型数据添加到响应中,只能通过URL参数或者Session对象传递数据。代码示例如下:

@RequestMapping("/test")
public void test(HttpServletResponse response) throws IOException {
    response.sendRedirect("/hello");
}

3. 返回JSON数据

返回JSON数据是指将数据以JSON格式的方式响应给客户端,SpringMVC可以使用多种方式响应JSON数据,常用的有@ResponseBody注解和MappingJackson2JsonView对象。值得注意的是,返回JSON数据时需要在项目中添加相应的JSON依赖。

使用@ResponseBody注解

@ResponseBody注解用于标记该方法可以将方法返回值作为响应体内容返回给客户端,并使用JSON格式输出。可以通过在方法中添加@RequestMapping注解或者在类上添加@RestController注解来使用@ResponseBody注解。代码示例如下:

@RestController
@RequestMapping("/test")
public class TestController {
    @GetMapping("/user")
    public User getUser() {
        User user = new User();
        user.setName("Tom");
        user.setAge(18);
        return user;
    }
}

使用MappingJackson2JsonView对象

MappingJackson2JsonView对象是SpringMVC提供的一种视图类型,主要用于将模型数据转换为JSON格式的响应体内容,并输出到客户端中。代码示例如下:

@RequestMapping("/test")
public ModelAndView test() {
    ModelAndView mav = new ModelAndView();
    // 设置模型数据
    Map<String, Object> model = new HashMap<>();
    model.put("msg", "Hello, World!");
    // 设置视图名称
    MappingJackson2JsonView view = new MappingJackson2JsonView();
    view.setExtractValueFromSingleKeyModel(true);
    mav.setView(view);
    mav.addAllObjects(model);
    return mav;
}

4. 返回XML数据

返回XML数据是指将数据以XML格式的方式响应给客户端,SpringMVC可以使用多种方式响应XML数据,常用的有@ResponseBody注解和MarshallingView对象。值得注意的是,返回XML数据时需要在项目中添加相应的XML依赖。

使用@ResponseBody注解

@ResponseBody注解用于标记该方法可以将方法返回值作为响应体内容返回给客户端,并使用XML格式输出。可以通过在方法中添加@RequestMapping注解或者在类上添加@RestController注解来使用@ResponseBody注解。代码示例如下:

@RestController
@RequestMapping("/test")
public class TestController {
    @GetMapping("/user")
    @ResponseBody
    public User getUser() {
        User user = new User();
        user.setName("Tom");
        user.setAge(18);
        return user;
    }
}

使用MarshallingView对象

MarshallingView对象是SpringMVC提供的一种视图类型,主要用于将模型数据转换为XML格式的响应体内容,并输出到客户端中。代码示例如下:

@RequestMapping("/test")
public ModelAndView test() {
    ModelAndView mav = new ModelAndView();
    // 设置模型数据
    Map<String, Object> model = new HashMap<>();
    model.put("msg", "Hello, World!");
    // 设置视图名称
    MarshallingView view = new MarshallingView();
    view.setMarshaller(new Jaxb2Marshaller());
    mav.setView(view);
    mav.addAllObjects(model);
    return mav;
}

5. 返回文件

返回文件是指将文件以响应体的形式返回给客户端。SpringMVC可以使用@ResponseBody注解和ResponseEntity对象来实现返回文件。代码示例如下:

@RequestMapping("/download")
public ResponseEntity<byte[]> download() throws IOException {
    // 获取文件
    File file = new File("/path/to/file");
    // 设置响应头
    HttpHeaders headers = new HttpHeaders();
    headers.setContentDispositionFormData("attachment", file.getName());
    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
    // 读取文件内容
    byte[] bytes = FileUtils.readFileToByteArray(file);
    return new ResponseEntity<>(bytes, headers, HttpStatus.OK);
}

二、SpringMVC结果视图实现代码

SpringMVC提供了多种方式实现结果视图,包括JSP页面、HTML页面、Thymeleaf视图、Velocity视图、FreeMarker视图等。值得注意的是,不同的视图类型需要在项目中添加相应的依赖。以下将对其中的两种方式进行示例说明。

1. JSP页面

使用JSP页面作为结果视图的实现方式非常常见。在项目中添加了相关依赖之后,可以使用InternalResourceViewResolver对象进行配置。代码示例如下:

@Configuration
public class WebConfig {
    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setViewClass(JstlView.class);
        viewResolver.setPrefix("/WEB-INF/views/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }
}

2. Thymeleaf视图

Thymeleaf视图是SpringBoot提供的一种模板引擎,它支持HTML、XML、JavaScript、CSS、Text和其他文本格式,并且能够与SpringMVC集成使用。在项目中添加了相关依赖之后,可以使用ThymeleafViewResolver对象进行配置。代码示例如下:

@Configuration
public class WebConfig {
    @Bean
    public ViewResolver viewResolver() {
        ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
        viewResolver.setTemplateEngine(templateEngine());
        viewResolver.setCharacterEncoding("UTF-8");
        return viewResolver;
    }

    @Bean
    public SpringTemplateEngine templateEngine() {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(templateResolver());
        return templateEngine;
    }

    @Bean
    public ITemplateResolver templateResolver() {
        SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
        templateResolver.setPrefix("/WEB-INF/views/");
        templateResolver.setSuffix(".html");
        templateResolver.setTemplateMode(TemplateMode.HTML);
        templateResolver.setCacheable(false);
        return templateResolver;
    }
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringMvc响应数据及结果视图实现代码 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • Java后台返回和处理JSon数据的方法步骤

    Java后台返回和处理JSON数据的方法步骤可以分为以下几个步骤: 步骤一:导入JSON库 首先需要在Java项目中导入Json库,比较流行的有Gson和Jackson。这里以Gson为例: <!–导入Gson依赖–> <dependency> <groupId>com.google.code.gson</gro…

    Java 2023年5月26日
    00
  • JNDI,JTA和JMS简介

    JNDI、JTA和JMS是JavaEE中非常重要的三个技术。它们分别用于实现面向对象的命名和目录服务、事务管理和消息传递。 JNDI简介 Java Naming and Directory Interface(JNDI)是一个面向对象的Java API,用于访问命名和目录服务。它提供了一种机制,使得Java应用程序能够发现和访问各种类型的命名服务,如文件系统…

    Java 2023年5月20日
    00
  • Spring Boot深入学习数据访问之Spring Data JPA与Hibernate的应用

    Spring Boot深入学习数据访问之Spring Data JPA与Hibernate的应用 前言 本文将介绍Spring Boot中的数据访问方案之一的Spring Data JPA。首先会了解JPA和Hibernate的基本概念和使用方法,然后结合Spring Data对其进行应用。最后提供两个具体的示例,分别是使用Spring Data JPA和H…

    Java 2023年6月2日
    00
  • Java日常练习题,每天进步一点点(58)

    以下是对Java日常练习题攻略的详细讲解。 1. 了解练习题目的类型和难度 在开始练习之前,首先要了解练习题目的类型和难度。这些练习题目主要包括数据类型、数组、字符串处理等基础知识,以及流程控制语句、循环语句等基础流程控制语句,具有一定的难度。因此,在练习之前,建议先了解这些基础知识和语句,再根据自己的水平选择不同难度的练习题。 2. 流程掌握 在做练习题之…

    Java 2023年5月20日
    00
  • Jdbc连接数据库基本步骤详解

    以下是 Jdbc 连接数据库基本步骤的详细攻略: 步骤一:加载驱动程序 在 Java 中,要使用 JDBC 连接数据库,需要先加载相应的数据库驱动。具体步骤为: Class.forName("com.mysql.jdbc.Driver"); 其中 com.mysql.jdbc.Driver 是 MySQL 数据库的驱动程序名,其他数据库的…

    Java 2023年5月20日
    00
  • 如何避免对象引用的循环依赖?

    如何避免对象引用的循环依赖 在面向对象编程中,一个对象可能同时引用了另一个对象,这种引用关系如果不注意可能会出现循环依赖问题,即两个或多个对象相互引用,彼此依赖,无法被垃圾回收机制回收,导致内存泄漏。此时就需要采取一些方式来避免对象引用的循环依赖。下面介绍两种常用的方式: 方法一:使用弱引用 弱引用是一种比较常见的避免循环依赖的方式,它可以让对象之间的相互引…

    Java 2023年5月11日
    00
  • Java hibernate延迟加载get和load的区别

    下面是详细讲解Java Hibernate延迟加载get和load的区别的攻略: 延迟加载的概念 Hibernate是一个开源的ORM(对象关系映射)框架,它提供了对象到关系数据库的映射服务,可以方便地操作数据库。对于大量数据的操作,Hibernate采用了延迟加载的机制,即只有在需要使用数据时才会从数据库中取出数据,以节省内存和网络资源。 Hibernat…

    Java 2023年5月19日
    00
  • Java将json对象转换为map键值对案例详解

    当需要在Java程序中处理JSON对象时,常见的方式是将其解析为Java中的HashMap数据结构。以下是将JSON对象转换为Map键值对的完整攻略。 步骤一:导入依赖包 在Java代码中解析JSON对象通常需要使用第三方库,如FastJson、Jackson等。我们可以在项目的pom.xml文件中添加如下依赖: <dependency> &lt…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部