ShowImageFromDiskServlet.java代码如下:
import java.io.*;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class ShowImageFromDiskServlet extends HttpServlet {
private static final long serialVersionUID = -3099500650220853030L;
private static final Log log = LogFactory.getLog(ShowImageFromDiskServlet.class);
String imagePath;
public ShowImageFromDiskServlet() {
}
@Override
public void init(ServletConfig config) {
imagePath = config.getInitParameter("imagePath");
log.info("图片路径:" + imagePath);
}
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(response.getOutputStream());
File file = new File(imagePath);
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(file));
byte[] buffer = new byte[1024];
for (int len; (len = bufferedInputStream.read(buffer)) > 0; ) {
bufferedOutputStream.write(buffer, 0, len);
}
// bufferedOutputStream.flush();//关闭时会自动刷新,无需显示调用,否则必须显示调用
bufferedOutputStream.close();
bufferedInputStream.close();
}
@Deprecated
protected byte[] readStream(InputStream in) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
int data;
try {
while ((data = in.read()) != -1) {
outputStream.write(data);
}
return outputStream.toByteArray();
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
/**
* 通过url请求返回图像的字节流
*/
@RequestMapping("/icon/{cateogry}")
public void getIcon(@PathVariable("cateogry") String cateogry,
HttpServletRequest request,
HttpServletResponse response) throws IOException {
if (StringUtils.isEmpty(cateogry)) {
cateogry = "";
}
String fileName = request.getSession().getServletContext().getRealPath("/") + "resource/icons/auth/" + cateogry.toUpperCase().trim() + ".png";
File file = new File(fileName);
// 判断文件是否存在如果不存在就返回默认图标
if (!(file.exists() && file.canRead())) {
file = new File(request.getSession().getServletContext().getRealPath("/") + "resource/icons/auth/root.png");
}
FileInputStream inputStream = new FileInputStream(file);
byte[] data = new byte[(int) file.length()];
int length = inputStream.read(data);
inputStream.close();
response.setContentType("image/png");
OutputStream stream = response.getOutputStream();
stream.write(data);
stream.flush();
stream.close();
}
通过Servlet 将服务器硬盘图片 展示到浏览器
通过Java HTTP连接将网络图片下载到本地
在jsp页面中响应速度提高的7种方法
又一编辑神器-百度编辑器-Ueditor