最近,公司用servlet做一个跟踪图片点击技术的模块,我个人略有心得想和大家分享,
不知大家愿意审视。
这个模块挺大,我仅说说用servlet显示图片部分。我先说说用servlet显示图片的一个流程:
1. 设置response的输出类型:
对应的语句--response.setContentType("image/gif;charset=GB2312") ,response
便能输出gif图片,"image/gif;charset=GB2312"便是输出类型,当然你可以输出
"image/jpg;charset=GB2312"类型文件。
2. 得到文件流:
servlet是以流的形式件图片文件从服务器读出,通过response将流发到浏览器的。
3. 得到输出流:
对应的语句--OutputStream output = response.getOutputStream();
当然,处理图片文件需要以二进制形式的流。
4. 文件流的编码(但也不一定必须编码的,如果不是文件流,则必须编码)
所以我给大家一个用编码的代码和不用编码的代码.
顺便说一句,sun公司仅提供了jpg图片文件的编码api。
我想基本流程都讲完了,下面我把代码拿给大家看一下,大家自然一目了然了:
package xjw.personal.servet;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import com.sun.image.codec.jpeg.*;//sun公司仅提供了jpg图片文件的编码api
import javax.imageio.stream.*;
import java.awt.*;
import java.awt.image.BufferedImage;
public class ShowPicture extends HttpServlet
{
private static final String GIF="image/gif;charset=GB2312";//设定输出的类型
private static final String JPG="image/jpeg;charset=GB2312";
public void init() throws ServletException
{
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
String spec=request.getParameter("spec");//输出图片的类型的标志
int int_spec=Integer.parseInt(spec);
if(spec==1)
{
String imagePath="/jfgg/b1.jpg";//图片相对web应用的位置
}
else
{
String imagePath="/jfgg/b2.gif";//图片相对web应用的位置
}
OutputStream output = response.getOutputStream();//得到输出流
if(imagePath.toLowerCase().endsWith(".jpg"))//使用编码处理文件流的情况:
{
response.setContentType(JPG);//设定输出的类型
//得到图片的真实路径
imagePath = getServletContext().getRealPath(imagePath);
//得到图片的文件流
InputStream imageIn = new FileInputStream(new File(imagePath));
//得到输入的编码器,将文件流进行jpg格式编码
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(imageIn);
//得到编码后的图片对象
BufferedImage image = decoder.decodeAsBufferedImage();
//得到输出的编码器
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(output);
encoder.encode(image);//对图片进行输出编码
imageIn.close();//关闭文件流
}
if(imagePath.toLowerCase().endsWith(".gif"))//不使用编码处理文件流的情况:
{
response.setContentType(GIF);
ServletContext context = getServletContext();//得到背景对象
InputStream imageIn=context.getResourceAsStream(imagePath);//文件流
BufferedInputStream bis=new BufferedInputStream(imageIn);//输入缓冲流
BufferedOutputStream bos=new BufferedOutputStream(output);//输出缓冲流
byte data[]=new byte[4096];//缓冲字节数
int size=0;
size=bis.read(data);
while (size!=-1)
{
bos.write(data,0,size);
size=bis.read(data);
}
bis.close();
bos.flush();//清空输出缓冲流
bos.close();
}
output.close();
}
}
最后是如何调用,你可以简单的映射一下servelt,我就将servet的名映射为
ShowPic, 于是下代码调用
<html>
<body>
<img src="ShowPic?spec=2"></a>
</body>
</html>
分享到:
相关推荐
JSP 调用servlet 显示图片,通过Servlet显示图片。
Flex4.6+java+servlet上传图片例子+图片上传预览
简单的servlet+jsp图片上传并显示图片,解压就能用,感觉好就给个好评!
基于jsp+servlet实现的小项目(实现图片上传功能)
使用jsp+servlet实现图片的上传保存,有完整的可运行的代码。
使用Servlet生成验证码图片。 一个生成验证码图片的工具类。
该demo实现前端无刷新请求,实现图片批量上传,后台存储数据,并将数据通过JSON形式反馈给android端显示网络图片
NULL 博文链接:https://xuriyunhai.iteye.com/blog/1157715
具体参考:www.thinkerso.com thinker搜索 jsp+servlet上传图片的example,全部完整的代码
在学习Servlet过程中,针对图片上传做了一个Demo,如果大家对Java Servlet上传图片到指定文件夹并显示图片功能感兴趣的朋友大家通过本文一起学习吧
一个简单的Servlet 实现用户登录到相册查看图片,图片放在tomcat服务器中,获取服务器的名字加上图片的名字来显示图片,用户与相册还有图片数据库之间的关联,有点混乱,第一次写,见谅,只实现图片展示,相应的相册...
jsp+javabean+servlet+ajax,数据分页显示,使用SERVLET完成增删改查操作, 文件、图片上传,使用smartUpload组件完成上传操作。 MVC模式 非常适合初学者;
eclipse,在mvc模式下,使用jsp,servlet,dao,service进行文件(图片)上传,存储到mysql和path中,还能查询显示图片。
客户端通过servlet实现对数据库信息的操作,包括查询显示,添加,删除,更新记录等。 通过该设计,进一步掌握servlet和数据库操作的知识。
破解图片防盗链,有时连接不了网站的图片,因为对方有防盗链系统,写一个servlet代码
jsp+servlet实现文件下载(而不是在网页中显示出文件内容) 迅雷下载功能.zip
根据提供的图片路径显示图片,无论路径是否包含中文,不影响显示,可用在servlet中或者三大框架中显示中英文文件夹下的图片
基于jsp+js+servlet+jdbc+mysql开发产品后台管理系统,实现用户增删改查、分页,登录,注册,图片上传等功能。 包括以下5个功能: 1、登录 用户默认主页index.jsp,可选择【登录】功能,若登录成功,则进入产品管理中...
Servlet随即产生验证码,在页面显示。通过Servlet验证。简单实用。
使用jquery+Jcrop+servlet,简单实现图片上传默认裁剪,选择裁剪区域不同尺寸进行预览,并进行裁剪图片保存,获取裁剪后的图片显示。