`
tntxia
  • 浏览: 1485302 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Servlet从本地文件中读取图片,并显示在页面中

阅读更多
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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;

/**
 * 
 * 显示文件的Servlet
 * 负责从本地文件中读取图片,
 * 
 */
public class ShowPic extends javax.servlet.http.HttpServlet implements
		javax.servlet.Servlet {

	private static final String GIF = "image/gif;charset=GB2312";// 设定输出的类型

	private static final String JPG = "image/jpeg;charset=GB2312";

	/*
	 * (non-Java-doc)
	 * 
	 * @see javax.servlet.http.HttpServlet#HttpServlet()
	 */
	public ShowPic() {
		super();
	}

	/*
	 * (non-Java-doc)
	 * 
	 * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request,
	 *      HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	/*
	 * (non-Java-doc)
	 * 
	 * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request,
	 *      HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		String spec = request.getParameter("spec");// 输出图片的类型的标志

		String imagePath = "D:\\temp\\1.jpg";

		response.reset();

		OutputStream output = response.getOutputStream();// 得到输出流
		if (imagePath.toLowerCase().endsWith(".jpg"))// 使用编码处理文件流的情况:
		{
			response.setContentType(JPG);// 设定输出的类型
			// 得到图片的真实路径

			// 得到图片的文件流
			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的名映射为

 

 

<servlet>
  	<servlet-name>ShowPic</servlet-name>
  	<display-name>ShowPic</display-name>
  	<description></description>
  	<servlet-class>
  	cn.ccb.zlgz.web.servlet.ShowPic</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>ShowPic</servlet-name>
  	<url-pattern>/ShowPic</url-pattern>
  </servlet-mapping>
 


       使用HTML调用:

 

<html>
<body>
<img src="ShowPic?spec=2"></a>
</body>
</html>
 

      这样图片便显示在htm上了

分享到:
评论

相关推荐

    java-servlet-api.doc

    Servlet引擎利用Java类载入工具载入一个Servlet,Servlet引擎可以从一个本地的文件系统、一个远程的文件系统以及网络载入Servlet。 Servlet的初始化 Servlet引擎载入Servlet后,Servlet引擎必须对Servlet进行初始化...

    web开发文件的上传和下载

    在servlet中读取上传文件的数据,并保存到本地硬盘中。 如何在web页面中添加上传输入项? “file”&gt;标签用于在web页面中添加文件上传输入项,设置文件上传输入项时须注意: 1、必须要设置input输入项的name属性,否则...

    JAVA上百实例源码以及开源项目

     数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录  一个Java+ajax写...

    java 面试题 总结

    forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 redirect...

    JavaScript完全自学宝典 源代码

    Calculate1.java 计算浮点数运算结果并调用页面中JavaScript函数的Applet。 Calculate1.class Calculate1.java的字节码文件。 第16章(\c16) 示例描述:介绍JavaScript访问本地文件的各种方法。 16.1....

    ssh(structs,spring,hibernate)框架中的上传下载

     此外lazy="true"说明地返回整个Tfile对象时,并不返回fileContent这个字段的数据,只有在显式调用tfile.getFileContent()方法时才真正从数据库中获取fileContent的数据。这是Hibernate3引入的新特性,对于包含重量...

    java面试宝典

    130、如何防止在JSP或SERVLET中的输出不被BROWSER保存在CACHE中? 32 131、在JSP中如何设置COOKIE? 32 132、在JSP中如何删除一个COOKIE? 32 133、在一个JSP的请求处理中如何停止JSP的执行 33 134、在JSP中如何定义...

    JAVA上百实例源码以及开源项目源代码

     数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录  一个Java+ajax写...

    超级有影响力霸气的Java面试题大全文档

     forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。...

    Website-Downloader:用于下载网页以供离线预览的应用程序

    服务器端应用程序读取整个HTML页面和所有相关文件:图片,css等。 然后,系统在主HTML文件中更改到其他文件的所有链接,以便能够在本地打开它。 最后,它将所有文件压缩到一个.zip文件中,并提供了下载的可能性。 ...

    千方百计笔试题大全

    130、如何防止在JSP或SERVLET中的输出不被BROWSER保存在CACHE中? 32 131、在JSP中如何设置COOKIE? 32 132、在JSP中如何删除一个COOKIE? 32 133、在一个JSP的请求处理中如何停止JSP的执行 33 134、在JSP中如何定义...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    如果某种操作在不同的地区有不同的结果,那它就是对地区敏感的(10cale-sensitive),例如,显示日期就是一种对地区敏感的操作,因为日期的显示格式应该顺应本地用户所在的国家或地区的语言习惯。以2007年8月15日为...

    Android Studio DuDuMusic实例及源码 音乐播放器实现SQLite用户注册登录 管理员服务器数据交互

    1.首页实现读取本地Music本地文件夹中的MP3文件然后放进listview里面 2.实现了用户的用户的登录注册页面,登录过后用户可以进行自己的信息修改,实现了服务器的数据交互问题 3.实现了管理员登录,使用的是与Tomcat...

    疯狂Android讲义源码

     10.1.3 绑定本地Service并与之  通信 377  10.1.4 Service的生命周期 381  10.2 跨进程调用Service  (AIDL服务) 382  10.2.1 AIDL服务简介 382  10.2.2 创建AIDL文件 383  10.2.3 将接口暴露给客户端 383...

    疯狂Android讲义.part2

    10.1.3 绑定本地Service并与之 通信 377 10.1.4 Service的生命周期 381 10.2 跨进程调用Service (AIDL服务) 382 10.2.1 AIDL服务简介 382 10.2.2 创建AIDL文件 383 10.2.3 将接口暴露给客户端 383 10.2.4 客户端...

    疯狂Android讲义.part1

    10.1.3 绑定本地Service并与之 通信 377 10.1.4 Service的生命周期 381 10.2 跨进程调用Service (AIDL服务) 382 10.2.1 AIDL服务简介 382 10.2.2 创建AIDL文件 383 10.2.3 将接口暴露给客户端 383 10.2.4 客户端...

Global site tag (gtag.js) - Google Analytics