Java 是否可以从servlet向客户端返回多个值?

Java 是否可以从servlet向客户端返回多个值?,java,json,servlets,stream,Java,Json,Servlets,Stream,我有一个servlet,它生成一个.png图像,并将其作为字节数组写入OutputStream 我想创建一个应用程序,启动servlet并下载生成的图像。我还想测量servlet生成映像需要多少时间,不包括参数检查等时间。我知道客户端应用程序不可能这样做,所以servlet本身这次应该进行测量,然后将测量值发送回客户端应用程序 我的问题:如何从servlet发送多个内容:图像和时间值 我应该使用JSON作为例子吗?或者,如果我将图像(作为字节数组)和时间值(作为长值)写入OutputStream

我有一个servlet,它生成一个.png图像,并将其作为字节数组写入
OutputStream

我想创建一个应用程序,启动servlet并下载生成的图像。我还想测量servlet生成映像需要多少时间,不包括参数检查等时间。我知道客户端应用程序不可能这样做,所以servlet本身这次应该进行测量,然后将测量值发送回客户端应用程序

我的问题:如何从servlet发送多个内容:图像和时间值


我应该使用JSON作为例子吗?或者,如果我将图像(作为字节数组)和时间值(作为长值)写入
OutputStream
如何在客户端读取它?

在这种情况下,您可以发送头参数

long startTime = System.currentTimeMillis();

// Generate the image

long stopTime = System.currentTimeMillis();
long elapsedTime = stopTime - startTime;
response.setHeader("ElapsedTime", elapsedTime);

在这种情况下,您可以发送一个header参数

long startTime = System.currentTimeMillis();

// Generate the image

long stopTime = System.currentTimeMillis();
long elapsedTime = stopTime - startTime;
response.setHeader("ElapsedTime", elapsedTime);

在这种情况下,您可以发送一个header参数

long startTime = System.currentTimeMillis();

// Generate the image

long stopTime = System.currentTimeMillis();
long elapsedTime = stopTime - startTime;
response.setHeader("ElapsedTime", elapsedTime);

在这种情况下,您可以发送一个header参数

long startTime = System.currentTimeMillis();

// Generate the image

long stopTime = System.currentTimeMillis();
long elapsedTime = stopTime - startTime;
response.setHeader("ElapsedTime", elapsedTime);

这取决于你的客户。正如您提到的,servlet处理字节。它可以使用您选择的协议向输出流写入您想要的内容。例如,写入
int
值,该值包含以毫秒为单位的处理时间,后跟包含图像的字节数组

但是什么样的客户机会读取这个流呢?如果它是可编程的厚客户端,您可以在那里实现类似的逻辑。但我相信它应该是一个创建HTTP请求的web浏览器,因为它使用
标记呈现HTML。但浏览器不知道如何获取附加数据


然而,如果您使用AJAX获取图像,您可以将额外的数据放入HTTP响应头中,然后在客户端读取其值

这取决于你的客户。正如您提到的,servlet处理字节。它可以使用您选择的协议向输出流写入您想要的内容。例如,写入
int
值,该值包含以毫秒为单位的处理时间,后跟包含图像的字节数组

但是什么样的客户机会读取这个流呢?如果它是可编程的厚客户端,您可以在那里实现类似的逻辑。但我相信它应该是一个创建HTTP请求的web浏览器,因为它使用
标记呈现HTML。但浏览器不知道如何获取附加数据


然而,如果您使用AJAX获取图像,您可以将额外的数据放入HTTP响应头中,然后在客户端读取其值

这取决于你的客户。正如您提到的,servlet处理字节。它可以使用您选择的协议向输出流写入您想要的内容。例如,写入
int
值,该值包含以毫秒为单位的处理时间,后跟包含图像的字节数组

但是什么样的客户机会读取这个流呢?如果它是可编程的厚客户端,您可以在那里实现类似的逻辑。但我相信它应该是一个创建HTTP请求的web浏览器,因为它使用
标记呈现HTML。但浏览器不知道如何获取附加数据


然而,如果您使用AJAX获取图像,您可以将额外的数据放入HTTP响应头中,然后在客户端读取其值

这取决于你的客户。正如您提到的,servlet处理字节。它可以使用您选择的协议向输出流写入您想要的内容。例如,写入
int
值,该值包含以毫秒为单位的处理时间,后跟包含图像的字节数组

但是什么样的客户机会读取这个流呢?如果它是可编程的厚客户端,您可以在那里实现类似的逻辑。但我相信它应该是一个创建HTTP请求的web浏览器,因为它使用
标记呈现HTML。但浏览器不知道如何获取附加数据


然而,如果您使用AJAX获取图像,您可以将额外的数据放入HTTP响应头中,然后在客户端读取其值

是的,我们可以从HttpServletResponse向客户端返回多个值

从servlet版本2.2开始,servlet还可以使用HttpServletResponse中的方法为同一响应头发送多个值


新的addHeader(String name,String value)方法将头设置为给定值。虽然传统的setHeader()方法将替换任何现有的值,但addHeader()只保留当前设置,只设置一个附加值。还有AddInHeader(String name,int value)和addDateHeader(String name,long date)。

是的,我们可以从HttpServletResponse向客户端返回多个值

从servlet版本2.2开始,servlet还可以使用HttpServletResponse中的方法为同一响应头发送多个值


新的addHeader(String name,String value)方法将头设置为给定值。虽然传统的setHeader()方法将替换任何现有的值,但addHeader()只保留当前设置,只设置一个附加值。还有AddInHeader(String name,int value)和addDateHeader(String name,long date)。

是的,我们可以从HttpServletResponse向客户端返回多个值

从servlet版本2.2开始,servlet还可以使用HttpServletResponse中的方法为同一响应头发送多个值


新的addHeader(String name,String value)方法将头设置为给定值。虽然传统的setHeader()方法将替换任何现有的值,但addHeader()只保留当前设置,只设置一个附加值。还有AddInHeader(字符串名,int值)和addDateHeader(字符串名,长日期)。

是的,我们可以返回多个