自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

基于JSP實(shí)現(xiàn)數(shù)據(jù)庫中圖片的存儲(chǔ)與顯示

開發(fā) 后端
本文介紹基于JSP實(shí)現(xiàn)圖片的數(shù)據(jù)庫存儲(chǔ)與顯示,包括說明存取的數(shù)據(jù)表結(jié)構(gòu)的SQL腳本。

1、引言

數(shù)據(jù)庫應(yīng)用程序,特別是基于WEB的數(shù)據(jù)庫應(yīng)用程序,常會(huì)涉及到圖片信息的存儲(chǔ)和顯示。通常我們使用的方法是將所要顯示的圖片存在特定的目錄下,在數(shù)據(jù)庫中保存相應(yīng)的圖片的名稱,在JSP中建立相應(yīng)的數(shù)據(jù)源,利用數(shù)據(jù)庫訪問技術(shù)處理圖片信息。但是,如果我們想動(dòng)態(tài)的顯示圖片,上述方法就不能滿足需要了。我們必須把圖片放入數(shù)據(jù)庫存儲(chǔ)起來,然后通過編程動(dòng)態(tài)地顯示我們需要的圖片。實(shí)際操作中,可以利用JSP的編程模式來實(shí)現(xiàn)圖片的數(shù)據(jù)庫存儲(chǔ)和顯示。

2、建立后臺(tái)數(shù)據(jù)庫

假定處理的是圖片新聞,那么我們可以建立相應(yīng)的數(shù)據(jù)庫及數(shù)據(jù)表對(duì)象。我們要存取的數(shù)據(jù)表結(jié)構(gòu)的SQL腳本如下所示:

  1. if exists (select * from dbo.sysobjects where id =   
  2. object_id(N'[dbo].[picturenews]') andOBJECTPROPERTY(id, N'IsUserTable') = 1)  
  3. drop table [dbo].[picturenews]  
  4. GO  
  5. CREATE TABLE [dbo].[picturenews] (  
  6. [id] [int] IDENTITY (1, 1) NOT NULL ,  
  7. [image] [image] NULL ,  
  8. [content] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,  
  9. [detail] [varchar] (5000) COLLATE Chinese_PRC_CI_AS NULL   
  10. ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]  
  11. GO 

表picturenews中,字段id作為標(biāo)識(shí),每存儲(chǔ)一行數(shù)據(jù),自動(dòng)增加1。字段image

用于存儲(chǔ)圖片信息,其數(shù)據(jù)類型為“image”。

3、向數(shù)據(jù)庫存儲(chǔ)二進(jìn)制圖片

啟動(dòng)Dreamweaver MX后,新建一個(gè)JSP文件。其代碼如下所示。

  1. <%@ page contentType="text/html;charset=gb2312"%>   
  2. <HTML> 
  3. <HEAD> 
  4. <TITLE>存儲(chǔ)圖片TITLE> 
  5. HEAD> 
  6. <body> 
  7.  
  8. <FORM METHOD=POST ACTION="testimage.jsp"> 
  9. 新 聞 標(biāo) 題:<INPUT TYPE="text" NAME="content"><BR> 
  10. 新 聞 圖 片:<INPUT TYPE="file" NAME="image"><BR> 
  11. 新聞內(nèi)容:  
  12. <TEXTAREA name="txtmail" rows="15" cols="90"   
  13. style="BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid;   
  14. BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; FONT-SIZE: 9pt;   
  15. HEIGHT: 200px; WIDTH: 100%" wrap="physical" >TEXTAREA><br> 
  16. <INPUT TYPE="submit">form> 
  17. body> 
  18. HTML> 

將此文件保存為InputImage.jsp文件,其中testimage.jsp文件是用來將圖片數(shù)據(jù)存入數(shù)據(jù)庫的,具體代碼如下所示:

 

  1. <%@ page contentType="text/html;charset=gb2312"%>   
  2. <%@ page import="java.sql.*" %> 
  3. <%@ page import="java.util.*"%> 
  4. <%@ page import="java.text.*"%> 
  5. <%@ page import="java.io.*"%> 
  6. <html>   
  7. <body>   
  8. <%  
  9. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  
  10. //加載驅(qū)動(dòng)程序類  
  11. Connection con=DriverManager.getConnection("jdbc:odbc:denglu","sa","sa");  
  12. //建立數(shù)據(jù)庫聯(lián)機(jī),其中denglu為數(shù)據(jù)庫名,sa為連接數(shù)據(jù)庫的帳號(hào)及密碼。  
  13. Statement stmt=con.createStatement();   
  14. //建立Statement對(duì)象  
  15. String content=request.getParameter("content");  
  16. content=new String(content.getBytes("8859_1"),"gb2312");  
  17. String filename=request.getParameter("image");  
  18. filename=new String(filename.getBytes("8859_1"),"gb2312");  
  19. String detail=request.getParameter("txtmail");  
  20. detail=new String(detail.getBytes("8859_1"),"gb2312");  
  21. //獲得所要顯示圖片的標(biāo)題、存儲(chǔ)路徑、內(nèi)容,并進(jìn)行中文編碼  
  22. FileInputStream str=new FileInputStream(filename);  
  23. String sql="insert into picturenews(content,image,detail) values(?,?,?)";  
  24. PreparedStatement pstmt=con.prepareStatement(sql);  
  25. pstmt.setString(1,content);  
  26. pstmt.setBinaryStream(2,str,str.available());  
  27. pstmt.setString(3,detail);  
  28. pstmt.execute();  
  29. //將數(shù)據(jù)存入數(shù)據(jù)庫  
  30. out.println("Success,You Have Insert an Image Successfully");  
  31. %> 

4、網(wǎng)頁中動(dòng)態(tài)顯示圖片

接下來我們要編程從數(shù)據(jù)庫中取出圖片,其代碼如下所示。

  1. <%@ page contentType="text/html;charset=gb2312"%>   
  2. <%@ page import="java.sql.*" %> 
  3. <%@ page import="java.util.*"%> 
  4. <%@ page import="java.text.*"%> 
  5. <%@ page import="java.io.*"%>   
  6. <html> 
  7. <body> 
  8. <%  
  9. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");   
  10. //加載驅(qū)動(dòng)程序類  
  11. Connection con=DriverManager.getConnection("jdbc:odbc:denglu","sa","sa");  
  12. Statement stmt=con.createStatement();  
  13. ResultSet rs=null;   
  14. //建立ResultSet(結(jié)果集)對(duì)象  
  15. int idInteger.parseInt(request.getParameter("id"));  
  16. //獲得所要顯示圖片的編號(hào)id,并轉(zhuǎn)換為整型  
  17. String sql = "select image from picturenews WHERE id="+id+"";   
  18. //要執(zhí)行查詢的SQL語句  
  19. rs=stmt.executeQuery(sql);  
  20. while(rs.next()) {  
  21. ServletOutputStream sout = response.getOutputStream();  
  22. //圖片輸出的輸出流  
  23. InputStream in = rs.getBinaryStream(1);  
  24. byte b[] = new byte[0x7a120];  
  25. for(int i = in.read(b); i != -1;)  
  26. {  
  27. sout.write(b);   
  28. //將緩沖區(qū)的輸入輸出到頁面  
  29. in.read(b);  
  30. }  
  31. sout.flush();  
  32. //輸入完畢,清除緩沖  
  33. sout.close();  
  34. }  
  35. %> 
  36. body> 
  37. html> 

將此文件保存為testimageout.jsp文件。下一步要做的工作就是使用HTML標(biāo)記:

  1. <IMG src="testimageout.jsp?id=<%=rs.getInt("id")%>" width=100 height=100> 

取出所要顯示的圖片,其中id是所要取出圖片的編號(hào)。本例中我們輸出了***個(gè)和***一個(gè)圖片信息,詳細(xì)的程序代碼如下所示。

  1. <%@ page contentType="text/html;charset=gb2312"%>   
  2. <%@ page import="java.sql.*" %> 
  3. <html> 
  4. <head> 
  5. <title>動(dòng)態(tài)顯示數(shù)據(jù)庫圖片title> 
  6. head> 
  7. <body> 
  8. <%   
  9. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  
  10. Connection con=DriverManager.getConnection("jdbc:odbc:denglu","sa","sa");  
  11. Statement stmt=con.createStatement();  
  12. String sql=new String();  
  13. sql"select * from picturenews";  
  14. ResultSet rs=stmt.executeQuery(sql);  
  15. rs.last();  
  16. //將指針移至***一條記錄  
  17. %>   
  18. <table> 
  19. <tr><td><IMG height=99 src="testimageout.jsp?id=1" width=136>td> 
  20. //取出***個(gè)圖片  
  21. <td><IMG height=99 src="testimageout.jsp?id=<%=rs.getInt("id")%>" width=136>td> 
  22. //取出***一個(gè)圖片  
  23. tr>table> 
  24. body> 
  25. html> 

以上基于JSP實(shí)現(xiàn)數(shù)據(jù)庫中圖片的存儲(chǔ)與顯示的WEB應(yīng)用程序在Windows 2000 Professional/SQL Server 2000/ Apache Tomcat 4.0/JDK 1.4 JAVA環(huán)境下調(diào)試通過。

【編輯推薦】

  1. JSP實(shí)現(xiàn)JDOM處理數(shù)據(jù)庫到XML轉(zhuǎn)換的應(yīng)用
  2. 在JSP編程中Application的使用方法詳解
  3. Ajax和JSF使用Rational Application Developer V7輕松實(shí)現(xiàn)Web應(yīng)用程序
  4. JSF技術(shù)詳細(xì)介紹
  5. 使用Acegi保護(hù)JSF應(yīng)用程序
責(zé)任編輯:佚名 來源: builder
相關(guān)推薦

2009-05-08 09:17:48

動(dòng)態(tài)數(shù)據(jù)庫圖片

2009-03-23 09:01:00

圖片存儲(chǔ)數(shù)據(jù)庫JSP

2009-07-02 14:24:02

JSP讀取數(shù)據(jù)庫

2011-08-30 15:10:46

Qt圖片數(shù)據(jù)庫

2009-08-12 11:04:38

ASP.NET和SQL

2009-07-06 15:57:56

獲取數(shù)據(jù)庫連接JSP

2009-07-31 13:52:26

ASP.NET數(shù)據(jù)庫圖

2020-03-16 08:16:16

數(shù)據(jù)庫數(shù)據(jù)安全

2011-03-23 11:11:17

圖片數(shù)據(jù)庫

2016-12-08 09:30:00

圖片數(shù)據(jù)庫網(wǎng)絡(luò)爬取數(shù)據(jù)清洗

2011-07-14 14:36:29

Dbgrid多數(shù)據(jù)庫

2022-09-02 11:59:41

AI算法

2018-07-13 09:20:30

SQLite數(shù)據(jù)庫存儲(chǔ)

2009-07-03 13:56:21

JSP編程技巧

2009-07-31 16:09:23

ASP.NET數(shù)據(jù)庫圖

2009-06-29 18:04:32

JDOM文檔JSP

2009-07-21 13:40:24

ASP.NET上傳圖片顯示圖片

2009-07-02 09:00:25

JDBC設(shè)計(jì)JSP訪問數(shù)據(jù)庫

2011-09-01 14:00:11

SQL Server 存儲(chǔ)過程顯示表結(jié)構(gòu)

2009-07-01 16:01:58

JSP數(shù)據(jù)庫
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)