最近,公司用
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>
分享到:
相关推荐
在本文中,我们将介绍如何使用 Servlet 显示图片,并在 JSP 页面中调用 Servlet 实现图片的显示。 首先,我们需要创建一个 Servlet 程序来显示图片。这个 Servlet 程序需要继承 HttpServlet 类,并重写 doGet() ...
完成文件保存后,Servlet可以通过HttpServletResponse向Flex客户端返回一个响应,比如返回文件的URL,这样前端就可以根据URL显示已上传的图片。 此外,"PicUpload_Java"和"PicUpload_Flex"可能是项目中的两个关键源...
用户可以通过JSP页面上传图片,Servlet接收并保存文件,然后通过另一个Servlet显示上传的图片。这个系统虽然简单,但在实际应用中可能需要考虑更多因素,如文件大小限制、错误处理、文件重命名以防止重复文件名等。...
本项目"jsp+servlet小项目(实现图片上传功能)"旨在教授如何利用这两者创建一个简单的图片上传功能。下面将详细介绍这个项目涉及的关键知识点。 1. JSP基础:JSP是一种动态网页技术,允许开发者在HTML页面中嵌入...
本文将深入讲解如何使用Servlet来创建图片验证码,确保用户交互的安全性。验证码的主要目的是防止自动化程序(如机器人)对网站进行恶意操作,例如注册大量虚假账户或进行垃圾信息提交。 首先,我们需要了解Servlet...
对于显示图片的Servlet,它们可能接收一个请求参数(如文件名),然后根据这个参数读取相应的图片文件,将内容转化为字节数组,最后设置响应状态码和内容类型,将字节数组写入响应。 7. **性能优化**: 为了提高...
在本文中,我们将深入探讨如何使用Java的JSP(JavaServer Pages)和Servlet技术来实现一个图片上传功能。这是一个常见的Web开发任务,特别是在构建交互性强、动态内容丰富的网站时。以下是一些关键知识点: 1. **...
在本项目中,它被用来实现类似QQ空间的多张图片上传体验,后端处理服务使用的是Java的Servlet技术。这里我们将深入探讨SwfUpload与Servlet结合实现图片上传的相关知识点。 1. **SwfUpload组件介绍** SwfUpload 是...
9. **前端展示**:在`JSP`页面上,可以显示上传结果,比如成功信息、错误信息,甚至预览上传的图片。 以上就是`JSP`和`Servlet`结合实现图片上传功能的基本流程。实践中,还可能涉及到安全性优化,如使用MIME类型...
在这个场景中,我们使用Servlet来生成图片验证码,这是一种防止恶意自动化程序(如机器人)进行非法操作的安全机制。验证码通常是一串随机生成的字符,以图像形式显示,用户需要在输入框中正确输入才能完成验证。 ...
【标题】"使用Servlet+jQuery实现读取本地硬盘图片"涉及的主要知识点是Web开发中的服务器端处理和客户端交互。在Web应用中,Servlet是Java语言用于处理HTTP请求的重要组件,而jQuery则是一种广泛使用的JavaScript库...
本教程将详细介绍如何使用Servlet技术来实现一个基本的图片验证码功能。Servlet是Java服务器端编程的核心技术之一,它可以接收和响应HTTP请求,非常适合构建动态Web应用程序。 首先,我们需要理解验证码的基本原理...
下面通过具体的代码示例来解释如何使用Servlet生成验证码图片。 ```java public class CreateImageServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) ...
`servlet`生成验证码图片是通过服务器端动态创建一个包含随机字符的图像,用户需要输入图像中显示的文字或数字来验证其身份。以下将详细解释这个过程及其相关知识点: 1. **Servlet**:Servlet是Java中用于扩展...
通过上述步骤,我们可以使用ExtJS 3和Servlet创建一个基本的图片上传功能。在实际应用中,可能还需要考虑更多细节,比如进度条显示、多文件上传、图片预览等功能,这需要更复杂的前端交互和后端逻辑。总的来说,理解...
在IT行业中,动态生成GIF图片的servlet是一种常见的服务器端技术,主要用于创建自定义的图形,例如在网页上显示动态的文本或图像。这里提到的servlet是基于Java编程语言实现的,它利用JavaBean组件来处理图像生成的...
它通常表现为一张包含随机扭曲字母或数字的图片,用户需要输入图片上显示的文字来证明自己是人类。动态生成图片验证码的目的是防止自动化程序(如爬虫或恶意脚本)自动填写表单,从而提高网站的安全性。 在Servlet...
这个“一个简单的JSP+Servlet图片上传例子”是一个基础教程,旨在帮助初学者理解如何通过这两种技术实现用户界面与服务器端的交互,特别是处理文件上传的功能。 首先,JSP是Java的一种视图技术,它允许开发者在HTML...
实际开发中,可能还会用到一些库,如Gson或Jackson处理JSON数据,Picasso或 Glide 显示图片,Retrofit或Volley简化网络请求等。 总结,实现Android应用中的图片上传和断点续传下载涉及多个技术点,包括Android权限...
Java 使用 Servlet 动态生成图片 在 Web 应用中,经常需要动态生成图片,如实时股市行情、各种统计图等等。这种情况下,图片只能在服务器内存中动态生成并发送给用户,然后在浏览器中显示出来。本质上,浏览器向...