上一篇是更改tomcat配置文件,访问磁盘下的多张图片,这次呢是访问磁盘中的一张图片;
在浏览器显示一张图片,使用标签
- <img src="">
img 元素向网页中嵌入一幅图像。
请注意,从技术上讲,<img> 标签并不会在网页中插入图像,而是从网页上链接图像。<img> 标签创建的是被引用图像的占位空间。
<img> 标签有两个必需的属性:src 属性 和 alt 属性。
HTML 与 XHTML 之间的差异
在 HTML 中,<img> 标签没有结束标签。
在 XHTML 中,<img> 标签必须被正确地关闭。
在 HTML 4.01 中,不推荐使用 image 元素的 "align"、"border"、"hspace" 以及 "vspace" 属性。
在 XHTML 1.0 Strict DTD 中,不支持 image 元素的 "align"、"border"、"hspace" 以及 "vspace" 属性。
SRC的路径有很多:
指向其他站点(比如 src="http://www.******.com/***.jpg")
指向站点内的文件(比如 src="/i/image.gif")
许多新手忽略了一点是,其实IMG只是告诉浏览器这里要现实图片,而浏览器通过路径去获得图片的数据流然后进行显示
简单来说,SRC其实就是浏览器走了一个请求,然后这个请求返回图片的数据流给浏览器而已
所以,SRC同样可以是请求,可以是Servlet也可以是Action,这里我们用Servlet来做一个简单示例
JSP页面:
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <base href="<%=basePath%>">
- <title>图片显示</title>
- </head>
- <body>
- <img src="<%=basePath %>servlet/ImageShowServlet">
- </body>
- </html>
Web.xml配置:
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.5"
- xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
- <servlet>
- <servlet-name>ImageShowServlet</servlet-name>
- <servlet-class>servlet.ImageShowServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>ImageShowServlet</servlet-name>
- <url-pattern>/servlet/ImageShowServlet</url-pattern>
- </servlet-mapping>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
Servlet非常简单:
- package servlet;
- 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将本地硬盘的图片输入管道中
- * @author cuisuqiang
- * @version 1.0
- * @since
- */
- @SuppressWarnings("serial")
- public class ImageShowServlet extends HttpServlet {
- @Override
- protected void service(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- OutputStream os = response.getOutputStream();
- File file = new File("C:\\abc.jpg");
- 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;
- }
- }
- }
就是获取本地硬盘的文件的字节流,然后写入到管道中而已!
请您到ITEYE网站看原创,谢谢!