简单的图片处理servlet

原创 2015年07月09日 15:54:18

好久没写博客了,最近做了一个比较有趣的商城项目,里面的业务还真的很复杂,好在做了特殊的处理之后商城也能正常的使用了。但是没中不足的就是图片文件夹和项目掺杂在一块,实在有些难以维护,之后找了点资料就搞了个简单的图片读取服务端程序,还算好用今天得闲了就整理出来给大家参考一下。

1 项目源代码和图片文件夹放一块的优缺点

优点:方便检索、逻辑相对清晰

缺点:源代码体积增大、容易丢失图片、容易被类似struts2这样的漏洞利用(如被黑客删除、篡改)

2 解决方案

项目的上传文件的代码做相应调整,改为和源代码不同的路径;图片显示先经过servlet把图片读取到服务器内存缓冲区,之后显示出来

3 图片读取与显示servlet

package org.lxh;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @说明 该Servlet将本地硬盘的图片输入管道中
 * @version 1.0
 * @since
 */
@SuppressWarnings("serial")
public class ImageShowServlet extends HttpServlet {

	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		
		String uri=request.getRequestURI();
		String rs=uri.substring(6);
		String result=rs.replace("/", File.separator);
		
		OutputStream os = response.getOutputStream();
		File file = new File("D:\\"+result);
		FileInputStream fips = new FileInputStream(file);
		byte[] btImg = readStream(fips);
		os.write(btImg);
		os.flush();
	}
	
	/**
	 * 读取管道中的流数据
	 */
	public byte[] readStream(InputStream inStream) {
		ByteArrayOutputStream bops = new ByteArrayOutputStream();
		int data = -1;
		try {
			while((data = inStream.read()) != -1){
				bops.write(data);
			}
			return bops.toByteArray();
		}catch(Exception e){
			return null;
		}
	}
}

图片的路径根据实际情况进行修改,关键方法是readStream

4 web.xml的配置

  <servlet>  
    <servlet-name>ImageShowServlet</servlet-name>  
    <servlet-class>org.lxh.ImageShowServlet</servlet-class>  
  </servlet>  
  <servlet-mapping>  
    <servlet-name>ImageShowServlet</servlet-name>  
    <url-pattern>/*</url-pattern>  
  </servlet-mapping>  

5 如何使用(一句代码搞定)

<img src="/image${smallImage}" width="50px" height="50px"/>

${smallImage}是通过数据库动态读取出来的,就类似“/upload/front/image/201412/9da935f7-e3fe-45c1-9823-1d6c7d748606.jpg”这种

注:该servlet可作为一个项目打包,和主项目放一块就可以搭配使用了。



版权声明:本文为博主原创文章,未经博主允许不得转载。

Servlet/Jsp实现发送压缩Web页面 Gzip技术

(1)什么话都不说,意思很简单 就是实现页面的压缩后发送!据说对于篇幅比较长的页面可以提高几百倍哦! (2)注意事项:并不是所有的游览器都支持压缩页面的发送与接收,所以要用代码来检验,如果可以则发送...
  • u010870518
  • u010870518
  • 2014年09月05日 12:59
  • 2784

减小网络传输图片大小,使用gzip进行压缩

package com.servlet;import java.io.FileInputStream;import java.io.IOException;import java.io.OutputS...
  • lsj19830812
  • lsj19830812
  • 2009年11月03日 14:14
  • 8059

移动前端—图片压缩上传实践

在做移动端图片上传的时候,用户传的都是手机本地图片,而本地图片一般都相对比较大,拿iphone6来说,平时拍很多图片都是一两M的,如果直接这样上传,那图片就太大了,如果用户用的是移动流量,完全把图片上...
  • hsany330
  • hsany330
  • 2016年08月19日 10:05
  • 1183

IOS 图片上传处理 图片压缩 图片处理

提到从摄像头/相册获取图片是面向终端用户的,由用户去浏览并选择图片为程序使用。在这里,我们需要过UIImagePickerController类来和用户交互。 使用UIImagePickerCo...
  • yidu_blog
  • yidu_blog
  • 2016年03月09日 18:59
  • 3875

Android 大图压缩处理,避免OOM

一、遇到问题:      Android的开发的小伙伴在项目中有时遇到多张大图片的加载,图片的类型是多种多样,不同大小。但是大多数的图片都是高分辨率,总体来说,远远大于我们要展示的容器ImageVie...
  • qq_21126979
  • qq_21126979
  • 2016年12月07日 09:25
  • 1159

简单的对图片处理的软件

  • 2013年08月02日 15:36
  • 1.71MB
  • 下载

简单图片处理

  • 2013年11月17日 11:06
  • 1.79MB
  • 下载

简单图片处理

  • 2016年07月21日 07:14
  • 2.01MB
  • 下载

Windows Phone 简单图片处理例子程序

  • 2014年09月06日 03:13
  • 96KB
  • 下载

简单的图片处理软件

  • 2013年08月26日 18:26
  • 2.55MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:简单的图片处理servlet
举报原因:
原因补充:

(最多只允许输入30个字)