1、创建测试类(FileController.java)
package com.jeff.controller;
import java.io.InputStream;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.jeff.utils.HttpUtils;
@RestController
public class FileController {
/**
*
* @description: 从服务器端获得图片,并输出到页面
* @author: Jeff
* @date: 2019年12月7日
* @param resp
*/
@RequestMapping("getImage")
public void getImage(HttpServletResponse resp) {
// 服务器图片url
String urlPath = "http://192.168.1.100:8080/images/jie.jpg";
// 从服务器端获得图片,并输出到页面
InputStream inputStream = HttpUtils.getInputStream(urlPath);
HttpUtils.writeFile(resp, inputStream);
}
}
2、创建http工具类(HttpUtils.java)
package com.jeff.utils;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import javax.servlet.http.HttpServletResponse;
public class HttpUtils {
/**
*
* @description: 从服务器获得一个输入流(本例是指从服务器获得一个image输入流)
* @author: Jeff
* @date: 2019年12月7日
* @return
*/
public static InputStream getInputStream(String urlPath) {
InputStream inputStream = null;
HttpURLConnection httpURLConnection = null;
try {
URL url = new URL(urlPath);
httpURLConnection = (HttpURLConnection) url.openConnection();
// 设置网络连接超时时间
httpURLConnection.setConnectTimeout(3000);
// 设置应用程序要从网络连接读取数据
httpURLConnection.setDoInput(true);
httpURLConnection.setRequestMethod("GET");
int responseCode = httpURLConnection.getResponseCode();
System.out.println("responseCode is:" + responseCode);
if (responseCode == HttpURLConnection.HTTP_OK) {
// 从服务器返回一个输入流
inputStream = httpURLConnection.getInputStream();
} else {
inputStream = httpURLConnection.getErrorStream();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return inputStream;
}
/**
*
* @description: 将输入流输出到页面
* @author: Jeff
* @date: 2019年12月7日
* @param resp
* @param inputStream
*/
public static void writeFile(HttpServletResponse resp, InputStream inputStream) {
OutputStream out = null;
try {
out = resp.getOutputStream();
int len = 0;
byte[] b = new byte[1024];
while ((len = inputStream.read(b)) != -1) {
out.write(b, 0, len);
}
out.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (out != null) {
out.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
3、打开浏览器测试response输出到页面