Spring Boot serve text - 在 Spring Boot 应用程序中提供纯文本

位置:首页>文章>详情   分类: Java教程 > 编程技术   阅读(594)   2023-06-26 07:54:18

Spring Boot 服务文本教程展示了如何在 Spring Boot 应用程序中提供纯文本服务。

春天 是一个流行的 Java 应用程序框架,弹簧贴 是 Spring 的演变,有助于创建独立的、生产级的基于 Spring 的应用程序容易地。

内容类型

内容类型或媒体类型是与文件一起发送的字符串,指示文件的类型。它描述了内容格式;例如,HTML 文件可能被标记为 text/html,或者图像文件可能被标记为 image/png)。它的作用与 Windows 上的文件扩展名相同。

content-type 标头值用于指示资源的媒体类型。 text/plain; charset=utf-8 用于文本文件。

Spring Boot 服务文本示例

下面的应用程序展示了三种向客户端发送文本的方法。

build.gradle
...
src
├── main
│   ├── java
│   │   └── com
│   │       └── zetcode
│   │           ├── Application.java
│   │           └── controller
│   │               └── MyController.java
│   └── resources
└── test
    ├── java
    └── resources

这是项目结构。

build.gradle
plugins {
    id 'org.springframework.boot' version '2.6.7'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter'
    implementation 'org.springframework.boot:spring-boot-starter-web'
}

这是 Gradle 构建文件。我们只需要 spring-boot-starter-web 依赖项。

com/zetcode/controller/MyController.java
package com.zetcode.controller;

import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;


@Controller
public class MyController {

    @GetMapping(value = "/", produces = MediaType.TEXT_PLAIN_VALUE)
    public @ResponseBody
    String home() {

        return "home page";
    }

    @GetMapping(value = "/about")
    public void test(HttpServletResponse response) throws IOException {

        response.addHeader("content-type", "text/plain; charset=utf-8");
        response.setStatus(200);

        PrintWriter out = response.getWriter();
        out.println("about page");
    }

    @GetMapping(value = "/contact")
    public ResponseEntity<String> contact() {

        var httpHeaders = new HttpHeaders();
        httpHeaders.setContentType(new MediaType("text", "plain", StandardCharsets.UTF_8));

        return new ResponseEntity<>("contact page", httpHeaders, HttpStatus.OK);
    }
}

我们有三种方法可以在控制器中返回文本。每种方法使用不同的技术。

@Controller
public class MyController {

    @GetMapping(value = "/", produces = MediaType.TEXT_PLAIN_VALUE)
    public @ResponseBody
    String home() {

        return "home page";
    }

由于controller被注解了@Controller注解,所以我们必须添加@ResponseBody注解来直接写入response的body而不是返回要处理的视图名称。 home() 方法有一个 String 返回类型并且 produces 属性设置为MediaType.TEXT_PLAIN_VALUE

@GetMapping(value = "/about")
public void test(HttpServletResponse response) throws IOException {

    response.addHeader("content-type", "text/plain; charset=utf-8");
    response.setStatus(200);

    PrintWriter out = response.getWriter();
    out.println("about page");
}

第二种方式使用 HttpServletResponse。这是一种低级方法,我们直接写入响应对象。

@GetMapping(value = "/contact")
public ResponseEntity<String> contact() {

    var httpHeaders = new HttpHeaders();
    httpHeaders.setContentType(new MediaType("text", "plain", StandardCharsets.UTF_8));

    return new ResponseEntity<>("contact page", httpHeaders, HttpStatus.OK);
}

在第三种情况下,我们使用 ResponseEntity 来提供文本。媒体类型在 HttpHeaders 中设置。

com/zetcode/Application.java
package com.zetcode;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application  {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

Application 是设置 Spring Boot 应用程序的入口点。

我们使用 mvn -q spring-boot:run 运行应用程序。

$ curl localhost:8080/
home page
$ curl localhost:8080/about
about page
$ curl localhost:8080/contact
contact page

这是所有三个页面的输出。

$ curl -i localhost:8080/contact
HTTP/1.1 200 
Content-Type: text/plain;charset=UTF-8
Content-Length: 12
Date: Tue, 10 May 2022 15:52:34 GMT

contact page

通过 curl 的 -i 选项,我们还包含了标头。

在本教程中,我们展示了如何从 Spring Boot 应用程序向客户端发送文本数据。

地址:https://www.cundage.com/article/springboot-text.html

相关阅读

Spring Boot Vue.js 教程展示了如何使用 Vue.js 框架创建一个简单的 Spring Boot。 Vue.js Vue.js 是一个用于构建用户界面的 JavaScript ...
JavaScript 是否已经取代 Java 成为新的“一次编写,随处运行”的编程语言?这完全取决于您的观点。随着 WebAssembly 等技术的出现,Java 可以在新奇的“一次编写,随处编...
Usage of TypeScript,微软基于 JavaScript 的强类型语言, has soared compared to six years ago, according to th...
云莓将基于 Spring 构建的 Java 后端与使用 Lit 构建的 TypeScript 前端相结合,一个快速、响应式的 JavaScript 框架。基于 Vaadin Fusion 的 H...
本博客严重偏向于 GWT(和基于 GWT 的框架),但我们牢记 GWT 将来可能会被其他技术接管,因此我们始终对探索其他平台/框架持开放态度。正如他们所说,多元化可以降低风险。每种编程语言,即使...
Java JSON 教程展示了如何使用 JSON-Java 在 Java 中进行 JSON 序列化和反序列化。 JSON(JavaScript 对象显示法) 是一种轻量级数据交换格式。人类易于读...
JHipster 是一个长期存在且雄心勃勃的混合 Java 和 JavaScript 项目,致力于使用现代反应式前端简化全栈 Java 应用程序的开发。 JHipster 开发团队不断发布新版本...
解析器是强大的工具,使用 ANTLR 可以编写可用于多种不同语言的各种解析器。 在这个完整的教程中,我们将: 解释基础:什么是解析器,它可以用来做什么 查看如何设置 ANTLR 以便在 Java...
Spring Boot JSON 教程展示了如何在 Spring Boot 注释中提供 JSON 数据。 春天 是一个流行的 Java 应用程序框架,弹簧贴 是 Spring 的演变,有助于创建...
根据最近一项全球开发人员调查,在开发人员偏好方面,JavaScript 和 Python 保持了持久力,而 锈 的使用率正在上升. 5 月 4 日的一份题为“开发者国家情况,第 22nd 版”的...