在学习jersey中看到jersey框架支持几乎多有的java原生类型的传输格式。

我学习 《Java RESTful Web Service 实战》 一书。书中有些知识点,不太常用,但是比较重要,特写下次笔记已备忘。

jersey是遵循 JAX-RS2.0规范的一个实现,旨在使用java提供RESTful服务的框架

java 原生类型中
整型数值 byte, short int, long
浮点型数值 float, double
Unicode编码字符型数值 char
布尔类型值 boolean

jersey 都提供支持,并且提供了,基础类型的数组形式的支持。

比如 byte[], char[]

也提供了 File 类型,InputStream, Reader 这样的字节流和字符流类型。

以下代码基本演示输入类型的使用方法

java// File
@POST
@Consumes(MediaType.TEXT_PLAIN)
public String upFile(final File file) throws IOException {
    try (
        FileInputStream fInput = new FileInputStream(file);
        FileOutputStream fOutput = new FileOutputStream(new File("temp.txt"))
       ) {

        byte buffer = new byte[2048];
        int count = 0;
        while ( (count = fInput.read(buffer) ) != -1 ) {
            fOutput.write(buffer, 0, count); //将 buffer 字节数组中的内容全部写入到 fOutput 中。
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    return "file upload complete";
}
java// InputStream

@POST
@Consumes(MediaType.TEXT_PLAIN)
public String postString(final InputStream input) throws IOException {

    ByteArrayOutputStream outputBuf = new ByteArrayOutputStream();

    byte[] buffer = new byte[1024];
    int count = 0;

    while ( ( count = input.read(buffer) ) != -1 ) {
        outputBuf.write(buffer, 0, count);
    }

    outputBuf.flush();

    return new String(outputBuf.toByteArray(), "utf-8");
}

可以看出 jersey 能支持各种类型,是应为 java 反射机制的功劳。

以上文字片段以及图片,部分来自于 《Java RESTful Web Service 实战》一书。如有版权侵犯,请联系邮箱[ychangsheng@gmail.com]。本人及时修改。


东来
1.7k 声望55 粉丝

一年磨一剑,专心写程序