TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
在浏览器显示一张图片,使用标签:
<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 %>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>/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;
- }
- }
- }
复制代码 就是获取本地硬盘的文件的字节流,然后写入到管道中而已!
源码下载:http://file.javaxxz.com/2014/10/10/015511937.zip |
|