`

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

    博客分类:
  • java
 
阅读更多
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();
	}
}


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



这样的话,可以再servlet那一层,缓存图片内容,提高速度了!
分享到:
评论

相关推荐

    使用Servlet+jQuery实现读取本地硬盘图片

    通过以上知识点,我们可以构建一个简单的Web应用,实现用户在前端点击按钮后,服务器读取本地图片并显示在页面上。这个过程涵盖了前后端交互的基本流程,对于学习Web开发是非常基础且实用的示例。

    详解Java读取本地文件并显示在JSP文件中

    总而言之,Java读取本地文件并显示在JSP文件中涉及的知识点包括:文件I/O操作、异常处理、资源管理、Web应用的安全性、MVC设计模式、页面动态内容生成以及前后端交互。通过阅读本文,大家可以了解到如何将这些知识点...

    Java Servlet实现在浏览器中打开pdf文件

    在HTML页面中,你可以创建一个链接,指向Servlet的URL,例如: ```html 点击这里打开PDF文件 ``` 当用户点击这个链接时,浏览器会向服务器发送GET请求,服务器通过`FileDownLoadServlet`返回PDF内容,浏览器则会尝试...

    Servlet 下 kindeditor使用!封装了servlet本地图片上传及源码说明!

    在HTML页面中,我们需要配置KindEditor的图片上传选项,指向我们的Servlet: ```html KindEditor.ready(function(K) { var editor = K.create('#editor_id', { uploadJson : '/image/upload', // Servlet的URL ...

    Java从数据库中读取Blob对象图片并显示的方法

    这里我们主要探讨两种Java从数据库中读取Blob对象图片并显示的方法。 **方法一** 这个方法涉及从数据库获取Blob对象的输入流,并将其直接写入HTTP响应的输出流,以便浏览器可以解析并显示图片。以下是实现步骤: ...

    解决servlet页面乱码问题

    本文将深入探讨如何解决Servlet页面显示乱码的问题,这对于初学者来说是至关重要的知识点。 首先,我们需要理解乱码的根源。在Web应用中,乱码通常出现在两个阶段:输入(如POST表单数据)和输出(如HTML页面的响应...

    纯jsp本地file文件读取小程序

    在这个项目中,Tomcat扮演了服务器的角色,承载了JSP文件的执行环境,使得用户能够通过Web浏览器与这个本地文件读取小程序交互。 总的来说,这个纯JSP的小程序旨在提供一个基本的货物管理系统,通过文件操作实现...

    jsp+java类+servlet实现文件读取、写入的功能.rar

    4. **转发与重定向**:在Servlet中,可以通过`RequestDispatcher`的`forward()`方法将请求转发到另一个资源,比如JSP页面,以显示文件读取或写入的结果。`response.sendRedirect()`方法则可以重定向用户到新的URL。 ...

    java查询本地文件夹动态显示并下载文件

    这个功能的主要目的是允许用户通过应用程序浏览本地文件系统,并能够选择文件进行下载。以下是一些核心的技术点: 1. 文件操作:Java的`java.io`包提供了对文件和目录的基本操作,如创建、读取、写入、删除等。`...

    答Servlet下载文件的附件

    当用户需要从服务器下载文件时,Servlet扮演着至关重要的角色。这篇博客"答Servlet下载文件的附件"可能涉及了如何利用Servlet来实现文件的下载功能,让我们深入探讨这个话题。 首先,我们需要了解Servlet生命周期中...

    文件下载,jsp,servlet编写

    本项目显然涉及到利用这两者实现一个本地文件的下载功能。下面将详细介绍这两个核心技术以及如何结合它们来创建一个文件下载系统。 **1. JSP(JavaServer Pages)** JSP是一种基于Java的服务器端脚本语言,主要用于...

    购物车(jsp+servlet+javabean)

    在购物车项目中,Servlet接收用户通过JSP页面发送的请求,如添加商品到购物车、更新购物车商品数量等,然后处理这些请求,操作数据库,并将响应返回给JSP,更新页面显示。 【JavaBean】是一种符合特定规范的Java类...

    图片上传,html页面,本地预览,后台前台页面代码都有

    JavaScript的`previewImage`函数可以获取到选中的文件,然后利用FileReader API读取文件内容并显示预览。例如: ```javascript function previewImage(input) { var file = input.files[0]; if (file) { var ...

    js+jsp+servlet 实现跨全域多文件上传(原创)

    3. **文件预览**:如果需要,js还可以读取文件内容并生成预览,例如图片、文本等。 4. **数据格式化**:将选取的文件转换为适合发送到服务器的格式,如FormData对象,它能够方便地携带文件数据。 接下来,Java...

    使用Springboot上传图片并将URL保存到数据库中

    在Spring Boot框架中,文件上传是一项常见的功能,尤其在处理用户提交的图片、文档等数据时。本示例将详细讲解如何实现一个简单的文件上传功能,将图片上传至服务器,并将图片的URL保存到数据库中。 首先,我们需要...

    JSP中通过Servlet 将服务器硬盘图片并展示到浏览器

    在本文中,我们将探讨如何在JSP页面中通过Servlet将服务器硬盘上的图片展示到浏览器上。这是一个相当实用的技术,可用于动态生成图片或从服务器存储中检索图片资源,并将其作为响应发送到用户浏览器。下面将分步骤...

    Servlet文件上传

    Servlet文件上传是Java Web开发中的常见任务,主要涉及前端用户界面与后端服务器之间的交互,以及文件在服务器上的存储管理。下面将详细讲解这个过程。 首先,用户通过界面上传文件。这通常涉及到HTML表单的设计,...

    servlet写的,登陆,注册,注销。

    在这个项目中,我们不依赖数据库,而是选择将用户数据存储在本地文件中,这是一种简化版的实现方式。 首先,让我们了解Servlet的基本结构。一个Servlet通常由以下几部分组成: 1. **Servlet生命周期**:Servlet...

    jsp+servlet实现MP3乐园

    Servlet读取文件内容后,通过输出流将数据发送给客户端,并在响应头中设置适当的Content-Type(例如audio/mpeg针对MP3文件),以及Content-Disposition来指示浏览器如何处理这个响应,通常是作为文件下载。...

    java Web 读取数据库存储图片

    在HTML页面中,我们可以使用`&lt;img&gt;`标签来显示图片,通过Servlet提供图片数据: ```html ``` 此外,考虑到性能和可扩展性,实际应用中可能需要使用缓存、CDN(内容分发网络)或静态资源服务器来处理图片。如果...

Global site tag (gtag.js) - Google Analytics