韩剧1988免费观看全集_久久影视三级福利片_亚洲视频在线观看免费_在线观看欧美日韩_国产亚洲激情在线_亚洲精品美女久久久_欧美国产日韩一区二区在线观看_91在线观看免费高清完整版在线观看_日韩av免费看_国产又爽又黄的激情精品视频_琪琪亚洲精品午夜在线_欧美性猛xxx_不卡毛片在线看_国产亚洲日本欧美韩国_91国内在线视频_精品国产福利视频

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

用JSP+Servlet完成二進(jìn)制圖像的動(dòng)態(tài)顯示

用JSP+Servlet完成二進(jìn)制圖像的動(dòng)態(tài)顯示

更新時(shí)間:2022-10-16 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

數(shù)據(jù)庫應(yīng)用程序,特別是基于WEB的數(shù)據(jù)庫應(yīng)用程序,通常會(huì)涉及到圖片信息的顯示。我們知道在HTML語言當(dāng)中為了顯示靜態(tài)的圖片資料,可以利用如下標(biāo)記來實(shí)現(xiàn):
<img src=http://cfan.net.cn/info/".image/hello.png" width="100" height="80">,而要顯示動(dòng)態(tài)的圖片資料,就要采用相關(guān)的數(shù)據(jù)庫訪問技術(shù)來實(shí)現(xiàn)。在JSP環(huán)境編程中解決辦法多種多樣,通常是在數(shù)據(jù)庫中保存相應(yīng)的圖片資料的名稱,而后在JSP中可以建立相應(yīng)的數(shù)據(jù)源,利用數(shù)據(jù)庫訪問技術(shù)處理圖片信息。在靜態(tài)標(biāo)記的基礎(chǔ)上,略加修改就可以用如下的標(biāo)記語言實(shí)現(xiàn)動(dòng)態(tài)圖片資料的顯示,即:<img src="../image/"+RS_photo.getString(photo_fiield) width="100" height="80">。
以上兩種解決方案,主要是將所要顯示的圖片資料存在特定的目錄下進(jìn)行存取控制。如果圖片資料是存儲(chǔ)在數(shù)據(jù)庫中的二進(jìn)制數(shù)據(jù),上述方法就不能滿足需要了。實(shí)際操作中,可以利用JSP+Servlet的編程模式來實(shí)現(xiàn)圖片資料的瀏覽顯示。其基本思想是,用Servlet實(shí)現(xiàn)圖片資料的后臺(tái)處理,用JSP進(jìn)行頁面表現(xiàn),具體的編程思想如下所述。
1.建立后臺(tái)數(shù)據(jù)庫和數(shù)據(jù)庫應(yīng)用程序
假定處理的是某公司的員工信息,那么我們可以建立相應(yīng)的數(shù)據(jù)庫及數(shù)據(jù)表對(duì)象。假定我們要存取的數(shù)據(jù)表結(jié)構(gòu)如下所示:
/****** Object: Table [dbo].[employee] Script Date: 2002-7-31 21:42:10 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[employee]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[employee]
GO
/****** Object: Table [dbo].[employee] Script Date: 2002-7-31 21:42:10 ******/
CREATE TABLE [dbo].[employee] (
[id] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[name] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[sex] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,
[birthday] [datetime] NULL ,
[photo] [image] NULL ,
[title] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[department] [char] (30) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
其中,employee表中的列photo字段用于存儲(chǔ)員工的照片信息,則用于存儲(chǔ)圖像,其數(shù)據(jù)類型為“image”。接下來我們就可以建立應(yīng)用程序,向數(shù)據(jù)庫中添加圖文信息。基本的操作數(shù)據(jù)庫應(yīng)用程序相對(duì)簡(jiǎn)單,大家可以利用流行的多種開發(fā)工具加以實(shí)現(xiàn),并向數(shù)據(jù)庫中添加若干記錄。圖1是利用Delphi6實(shí)現(xiàn)的一種可行存儲(chǔ)image的應(yīng)用解決方案。


圖1 Delphi6操作數(shù)據(jù)庫image列

程序?qū)崿F(xiàn)的關(guān)鍵技術(shù)是流式信息存取技術(shù)。即為了實(shí)現(xiàn)對(duì)Image列的存取,在程序中采用了數(shù)據(jù)流讀寫圖片資料。其實(shí)現(xiàn)代碼主要在數(shù)據(jù)保存和記錄集移動(dòng)的事件里。程序代碼在此就不再詳述。可以參閱作者的文章《用Delphi6操作SQL SERVER 2000的Image列存取JPEG圖象》
2.用Jbuilder7建立WEB應(yīng)用程序
對(duì)于WEB應(yīng)用程序的實(shí)現(xiàn)方式,我們可以采用JDK 1.4 JAVA環(huán)境、Apache Tomcat 4.0和Dreamweaver MX,也可以選擇Jbuilder7的集成開發(fā)環(huán)境。下面我們以Jbuilder7集成開發(fā)環(huán)境為例說明WEB應(yīng)用程序的具體實(shí)現(xiàn)過程。
2.1 建立數(shù)據(jù)庫連接池訪問
啟動(dòng)Jbuilder7后,新建工程readpicfromdb.jpx。在工程中建立數(shù)據(jù)庫連接池對(duì)象類,主要包括一個(gè)管理類DBConnectionManager,負(fù)責(zé)提供與多個(gè)連接池對(duì)象DBConnectionPool類之間的接口。每一個(gè)連接池對(duì)象管理一組JDBC連接對(duì)象,每一個(gè)連接對(duì)象可以被任意數(shù)量的Servlet共享。類DBConnectionPool可以提供以下功能:
● 從連接池獲取(創(chuàng)建)可用連接
● 把連接返回給連接池
● 在系統(tǒng)關(guān)閉時(shí)釋放所有資源,關(guān)閉所有連接
類DBConnectionManager則用于管理多個(gè)連接池對(duì)象,它提供以下功能:
● 裝載和注冊(cè)JDBC驅(qū)動(dòng)程序
● 根據(jù)在屬性文件中定義的屬性創(chuàng)建連接池對(duì)象
● 實(shí)現(xiàn)連接池名字與其實(shí)例之間的映射。
● 跟蹤客戶程序?qū)B接池的引用,保證睚最后一個(gè)客戶程序結(jié)束時(shí)安全地關(guān)閉所有連接池。
上述兩個(gè)類的詳細(xì)代碼,讀者可以參閱相關(guān)書籍,這里主要給出本例中用到的屬性文件db.properties其代碼如下所示:
**********數(shù)據(jù)庫連接池屬性文件db.properties***************
drivers=sun.jdbc.odbc.JdbcOdbcDriver //定義JDBC-ODBC橋驅(qū)動(dòng)程序
logfile=D:\\webapp\\log.txt //定義日志文件存放的位置和名稱
comdb.url=jdbc:odbc:graduweb //定義數(shù)據(jù)庫的JDBC的URL
comdb.maxconn=10 //定義數(shù)據(jù)庫的最大連接數(shù)
comdb.user=sa //指定用于該連接池的數(shù)據(jù)庫帳號(hào)
comdb.password=sa //數(shù)據(jù)庫相應(yīng)帳號(hào)的密碼
**********數(shù)據(jù)庫連接池屬性文件db.properties***************
最后將編譯過的包含數(shù)據(jù)庫連接池類的JAVA類DBConnectionManager.java 、DBConnectionManager.class以及上圖的db.properties文件一并放在工程文件的WEB-INF下的classes目錄下。
2.2 編寫讀取二進(jìn)制圖片的Servlet
從Jbuilder7的File菜單里選擇新建Servlet,并將其命名為getphoto。該Servlet的JAVA源代碼如下所示:
***************Servlet getphoto.java 的JAVA代碼*************
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;
public class getphoto extends HttpServlet {
private static final String CONTENT_TYPE = "image/jpeg";
/**Initialize global variables*/
public void init() throws ServletException {
}
/**Process the HTTP Get request*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//在數(shù)據(jù)庫中照片的ID
String PHOTOID = null;
try {
PHOTOID = request.getParameter("photoid");
}
catch(Exception e) {
e.printStackTrace();
}
//連接數(shù)據(jù)庫,自定義的數(shù)據(jù)庫連接池管理類
DBConnectionManager connMgr;
connMgr = DBConnectionManager.getInstance();
Connection conn = connMgr.getConnection("comdb"); //屬性文件中定義
//用來存儲(chǔ)照片數(shù)據(jù)的緩沖區(qū)
byte [] buf=null;
//擴(kuò)展名可以從數(shù)據(jù)庫得到,這里直接指定為JPEG
String photoname="jpeg";
try{
//根據(jù)ID查找照片
String searchSql="select photo from employee where id ="+PHOTOID;
Statement stmt = conn.createStatement();
ResultSet RS_photo = stmt.executeQuery(searchSql);
//將圖片數(shù)據(jù)讀入緩沖區(qū)
if (RS_photo.next()){
buf = RS_photo.getBytes(1);
}else
{
buf = new byte[0];
}
}catch (Exception e){
//throw e;
}
finally {
connMgr.freeConnection("comdb", conn);
}
//response.setContentType(CONTENT_TYPE);
//告訴瀏覽器輸出的是圖片
response.setContentType("image/"+photoname);
//圖片輸出的輸出流
OutputStream out = response.getOutputStream();
//將緩沖區(qū)的輸入輸出到頁面
out.write(buf);
//輸入完畢,清楚緩沖
out.flush();
}
/**Clean up resources*/
public void destroy() {
}
}
編譯后的Servlet getphoto.class也會(huì)自動(dòng)放置在工程文件的WEB-INF下的classes目錄下。
2.3 JSP實(shí)現(xiàn)數(shù)據(jù)庫圖文信息瀏覽
成功建立好Servlet后,下一步要做的工作就是將原先的HTML標(biāo)記:
<img src="../image/"+RS_photo.getString(photo_fiield) width="100" height="80">加以修改,替換為Servlet標(biāo)記。即可以將下面的標(biāo)記寫于HTML或JSP中頁面中
<img border="0" src="/servlet/getphoto?photoid=XXX&ts=AAAAA" >
其中XXX是圖片的ID,AAAAA是時(shí)間戳,用來防止圖片不刷新。如果我們要瀏覽數(shù)據(jù)庫中的所有圖文信息,可以加入適當(dāng)?shù)难h(huán)控制。在本文的示例WEB應(yīng)用程序中作者加入了簡(jiǎn)單的表格控制來修飾輸出的圖文信息。詳細(xì)的程序代碼如下所示:
***************JSP頁面瀏覽數(shù)據(jù)庫圖文信息代碼*************
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<jsp:useBean id="comdbBean" scope="page" class="dbbean.conn"/>
//使用javabean建立頁面的數(shù)據(jù)連接
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<%
int table_num=4; //指定表格每行顯示記錄的條數(shù)
ResultSet RS_photo;
strSQL="select * from employee";
RS_photo =comdbBean.executeQuery(strSQL);
out.println("<table width='75%' border='1'align='center'>");
out.println("<tr>");
while(RS_photo.next())
{
String pic01=rs.getString("id_stud");
pic01=""+pic01+"";
String employeename=rs.getString("name");
//加入表格控制
out.println("<td>");
out.println("<div align=\"center\">");
out.println("<p>");
out.println("<a
href=\"inf_ employee_details.jsp?inf_employee_id=pic01\">");
out.println("<img
border=\"0\"src=\"../servlet/getphoto?photoid="+pic01+"&ts=AAAAA\" width=\"100\" height=\"120\" align=\"absmiddle\">");
out.println("</a>");
out.println("</p>");
out.println("<p>");
out.println("<a
href=\"inf_ employee _details.jsp?inf_employee_id=pic01\">");
out.println(employeename);
out.println("</a>");
out.println("</p>");
out.println("</div>");
out.println("</td>" );
table_num++;
if((table_num%4)==0)
//如果可以被4整除,則進(jìn)入下一欄,否則繼續(xù)輸出
{
out.println("</tr>");
out.println("<tr>");
}
}
out.println(" ");
}
RS_photo.close(); //關(guān)閉數(shù)據(jù)集RS_subject
%>
</body>
</html>
在上例的程序代碼示例中,用javabean建立本JSP頁面的數(shù)據(jù)庫連接,用Servlet進(jìn)行讀取二進(jìn)制image數(shù)據(jù)。后面附加了表格修飾輸出圖文的部分代碼。程序運(yùn)行結(jié)果如下圖1-6所示。


圖2 JSP頁面瀏覽數(shù)據(jù)庫圖文信息結(jié)果

以上WEB應(yīng)用程序在Windows 2000 Server+JBuilder 7+SQL Server 2000+ Apache Tomcat 4.0環(huán)境下調(diào)試通過。

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
一区二区免费播放| 一区 二区 三区| 日韩av在线看| 精品久久人妻av中文字幕| 中文字幕欧美国内| 99re6这里只有精品视频在线观看| 人妻少妇偷人精品久久久任期| 亚洲最大福利网| 黑人操亚洲女人| 中文字幕一区二区三区域| 久久久99精品久久| 小向美奈子av| 欧美日韩精品亚洲精品| 国内精品久久久久国产盗摄免费观看完整版| 在线观看不卡一区| 成人交换视频| 国产一区 在线播放| 亚洲AV无码精品色毛片浪潮| 日韩av播放器| 亚洲自拍偷拍麻豆| 丁香花在线影院| 91在线porny国产在线看| 成人自拍视频网站| 极品美女销魂一区二区三区免费| 日韩高清不卡| 91伊人久久大香线蕉| 国产欧美精品区一区二区三区| 手机av在线不卡| 亚洲欧洲精品一区二区三区| 四虎1515hh.com| 樱空桃在线播放| 欧美日韩一区二| 91视频免费看片| 美女一区二区三区视频| 香蕉成人av| 欧美日韩亚洲国产另类| 亚洲石原莉奈一区二区在线观看| 国产一区二区免费在线观看| 91高清视频在线观看| 一区二区三区高清在线| 国产三级精品网站| 91沈先生在线观看| 日本不卡一二区| 黄色动漫在线观看| 久久国产福利国产秒拍| 欧美一区二区三区四区高清| 国产精品va无码一区二区三区| 欧美独立站高清久久| 亚欧洲精品视频在线观看| 国产女人水真多18毛片18精品| 日韩av在线资源| 男人的天堂网页| 亚洲图片小说在线| 日本一区二区三区四区五区六区| 亚洲国产经典视频| 国产福利av网站| 校园春色另类视频| 久久亚洲国产视频| 青青在线视频观看| 午夜伦欧美伦电影理论片| 国产成人精品一区二区三区| 九九热精品视频| 涩爱av在线播放一区二区| 免费观看30秒视频久久| 青青视频免费在线| 女人18毛片水真多免费播放| 日韩成人一级| 婷婷激情四射五月天| 美女少妇全过程你懂的久久| 懂色av蜜臀av粉嫩av分享吧| 欧美日韩一二| 激情视频综合网| 丝袜熟女一区二区三区| 秋霞影院午夜丰满少妇在线视频| 国产精品18久久久久久vr| 日韩精品无码一区二区三区久久久| 亚洲精品自拍视频| koreanbj精品视频一区| 在线一区视频观看| 欧美日韩色一区| 久久成人福利视频| xvideos.蜜桃一区二区| 久热中文字幕在线观看| 色欲综合视频天天天| 黑人一区二区三区| 在线观看亚洲视频啊啊啊啊| 色天天色综合| 日本黄色三级网站| 日韩小视频在线观看| 欧美a级片一区| 日韩a在线观看| 亚洲高潮女人毛茸茸| 黄色在线观看网站| 国产免费观看久久| 久久一区二区三区视频| 欧洲金发美女大战黑人| 精品国产av一区二区| 国产伦精品一区二区三区视频我| 亚洲第一狼人社区| 国产l精品国产亚洲区在线观看| 九九九九精品九九九九| 午夜视频在线观看一区二区三区| 欧美艳星kaydenkross| 亚洲一区网址| 日本在线视频免费观看| 黑丝美女久久久| 色综合中文字幕| 少妇bbw搡bbbb搡bbbb| 欧美另类bbbxxxxx另类| japansex久久高清精品| 五月婷婷六月丁香综合| 18成人在线| 色偷偷成人一区二区三区91| 精品少妇一区二区三区在线视频| 在线观看黄色片| 国产精品免费视频一区| jizzjizzjizz欧美| 亚洲色图网站| 99re8在线精品视频免费播放| 国产精品热久久久久夜色精品三区| 欧美男男freegayvideosroom| 在线观看欧美精品| 久99久在线视频| 六月婷婷综合| 成人免费毛片xxx| 粉嫩av一区二区夜夜嗨| 中文成人综合网| 992tv快乐视频| 日韩在线观看免费av| 午夜精品三级久久久有码| 91视频欧美| 欧美一区二区三区在线看| 黄色录像一级片| 国产91久久久久蜜臀青青天草二| 国产原创av在线| 久青青在线观看视频国产| 高清wwwwxxxx| 正在播放91九色| 亚洲一区二区在线视频| 欧美一级大片免费看| 一级一片免费看| 国产一级大片在线观看| av电影在线免费| 国产成人亚洲精品狼色在线| 国产精品视频免费在线| 丰满少妇一区二区三区| 在线日韩国产精品| 日本高清一区二区视频| 最新日本视频| 国产精品久久久久精k8| 欧美精品一区二区三区免费播放| 青青草在线视频免费观看| 亚洲欧洲一区二区在线观看| 天天综合网天天| 亚洲性夜色噜噜噜7777| 国产在线视频二区| 久草视频视频在线播放| 国产一级影视| 亚洲欧美在线综合| 日本视频中文字幕一区二区三区| 欧美亚洲免费电影| 欧美亚洲另类视频| 亚洲高清在线观看视频| 免费成人在线视频观看| 亚洲国产精品久| 蜜臀av国内免费精品久久久夜夜| 黄色激情视频网址| 一本一生久久a久久精品综合蜜| 久久黄色免费网站| 午夜剧场高清版免费观看| 亚洲精品国产无码| 中国黄色一级视频| 久久久久久久久免费看无码| 日韩成人一区二区| 亚洲综合在线一区二区| 在线观看日韩www视频免费| 精品香蕉在线观看视频一| 国产亚洲精品久久久网站好莱| www高清在线视频日韩欧美| 国产鲁鲁视频在线观看免费| 日本在线观看中文字幕| 精品国产91久久久久久浪潮蜜月| 一区二区视频免费完整版观看| 日韩精品中文字幕在线一区| 青娱乐一区二区| 色综合激情久久| 尤物影院在线播放| 麻豆视频入口| 色婷婷综合中文久久一本| 岛国一区二区三区高清视频| 亚洲精品乱码久久久久久蜜桃欧美| av 日韩 人妻 黑人 综合 无码| 欧美在线视频全部完| 欧美日韩一区二区三区69堂| 成人在线视频首页| 欧美精品亚洲精品| 亚洲精品中文字幕av| 一区二区免费不卡在线| 久久青草福利网站| av在线官网| 精品久久久久久亚洲国产300| 免费观看国产视频在线| 一级黄色录像免费看| canopen超线视频网线的应用| 盗摄女厕thunder| 国产女人被狂躁到高潮小说| 欧美日韩精品在线视频| 国产午夜精品理论片a级探花| mm131午夜| 波多野结衣av在线免费观看| 欧美人xxxxx| 午夜一区在线| 成人国产视频在线| 摸摸摸bbb毛毛毛片| 午放福利视频在线播放| 国产日本久久| 久久精品国产成人一区二区三区| 亚洲精品国产精品自产a区红杏吧| 日韩毛片一区二区三区| 久久精品日韩一区二区三区| 日韩在线电影| 内射中出日韩无国产剧情| 在线播放一区二区精品产| 自拍偷拍亚洲欧美日韩| 夜夜嗨av一区二区三区四区| 日韩欧美一区二区久久婷婷| 国产一区二区三区四区五区六区| 男人添女人下部高潮视频在线观看| 日韩在线视频第一页| 成人黄色在线网站| 国产伦精品一区二区三区视频免费| 国外av在线| 免费一级欧美片在线播放| 中文字幕一区久| 制服丝袜中文字幕一区| 中文在线免费| 欧美午夜视频| 日韩a一级欧美一级| 97人人爽人人爽人人爽| 亚洲精品欧美二区三区中文字幕| av网站在线观看不卡| 九九免费精品视频| 宅男在线观看免费高清网站| 性感美女久久精品| 国产麻豆久久| 精品国产自在久精品国产| 福利视频网址导航| 日本aa在线观看| 欧美日韩一区二区三区四区五区六区| 国产成人一级电影| 免费看的黄网站| 蜜桃精品成人影片| 超碰在线观看免费| 日本日本精品二区免费| 午夜国产在线视频| 精品视频二区| 18涩涩午夜精品.www| 北条麻妃av高潮尖叫在线观看| 国产夜色精品一区二区av| 日本人妻丰满熟妇久久久久久| 国产探花在线播放| 91国自产精品中文字幕亚洲| 午夜一区二区三区不卡视频| 清纯唯美日韩制服另类| 中文字幕精品一区二区精品绿巨人| av日韩在线免费观看| 亚洲四区在线观看| 欧美日韩久久不卡| 亚洲色图久久久| 肥女人的一级毛片| 国产999精品久久久久久绿帽| 伊人久久国产| 国产精品一区二区三区四区在线观看| 欧美日韩国产综合视频在线观看| 亚洲精选91| 97成人在线视频| 欧美性理论片在线观看片免费| www.狠狠操| 免费av成人在线| 亚洲免费av观看| 91精品国产乱| 国产欧美一区二区三区在线观看视频| 在线女人免费视频| 97品白浆高清久久久久久| 免费网站观看www在线观| 亚洲欧洲av一区二区三区久久| 国产农村妇女精品一二区| 久久影视中文粉嫩av| 黄色永久免费网站| 国产高清在线| 亚洲精品一区二区三| 日本成在线观看| 性感美女极品91精品| 成人高清在线观看视频| 91九色视频导航| 男人添女人下面高潮视频| 欧美自拍大量在线观看| 欧美黄色大片网站| 久久婷婷国产综合国色天香| 在线免费不卡电影| **孕交吃奶水一级毛片| 国产又大又黄视频| 成人动漫免费在线观看| 乱h高h女3p含苞待放| 午夜免费激情视频| 欧美日韩一区在线| 精品国产电影一区二区| 久久午夜电影网| 鲁丝片一区二区三区| gogogo高清在线观看一区二区| 中文字幕中文在线| 国产在线精品一区二区不卡| 91玉足脚交嫩脚丫在线播放| xfplay资源站色先锋在线观看| 国产成人亚洲精品| 先锋影音中文字幕| 在线www天堂网在线| 国产午夜一区二区| 亚洲无码精品在线观看| 黄色成人91| 五月激激激综合网色播| 久久精品国产68国产精品亚洲| 精品国产免费久久久久久婷婷| 久久久久综合网| 香蕉久久一区二区不卡无毒影院| 少妇精品无码一区二区免费视频| 中文字幕不卡一区| 日韩有码在线播放|