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

在浏览器显示一张图片,使用标签 <img src="">, 从技术上讲,<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来做一个简单示例

 

<%@ 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

/** 

 * 该Servlet将本地硬盘的图片输入管道中 

 */  

@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;  

        }  

    }  

}  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值