明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

WEB應(yīng)用中報(bào)表打印的完成

[摘要]隨著世界范圍內(nèi)Internet環(huán)境的形成,全球正進(jìn)入一個(gè)以網(wǎng)絡(luò)為中心的計(jì)算時(shí)代。Web模型是在傳統(tǒng)的C/S模型的基礎(chǔ)上發(fā)展起來的一種新的Browser/Server計(jì)算模式。Browser/Serv...

隨著世界范圍內(nèi)Internet環(huán)境的形成,全球正進(jìn)入一個(gè)以網(wǎng)絡(luò)為中心的計(jì)算時(shí)代。Web模型是在傳統(tǒng)的C/S模型的基礎(chǔ)上發(fā)展起來的一種新的Browser/Server計(jì)算模式。Browser/Server模型簡(jiǎn)化了C/S中的客戶端,客戶端只需裝上操作系統(tǒng)、網(wǎng)絡(luò)協(xié)議軟件及瀏覽器;而服務(wù)器端則集中了所有的應(yīng)用邏輯,開發(fā)、維護(hù)等幾乎所有工作也都集中在服務(wù)器端。這時(shí)的客戶機(jī)被稱為瘦客戶機(jī),服務(wù)器被稱為肥服務(wù)器。而WEB應(yīng)用中的客戶端的報(bào)表打印則沒有C/S模型那么容易實(shí)現(xiàn),如何在不使用ActiveX控件的情況下,實(shí)現(xiàn)打印字體、字體顏色、表格寬度、打印紙型等的設(shè)置。下面就以一個(gè)小例子來說明。 

一、 創(chuàng)建數(shù)據(jù)庫 

用 ACCESS創(chuàng)建一個(gè)名為user.mdb的數(shù)據(jù)庫,然后建一張名為user的表,表結(jié)構(gòu)如下: 

字段名稱 數(shù)據(jù)類型 

username 文本 

name 文本 

sex 文本 

二、 在asp中的實(shí)現(xiàn) 

創(chuàng)建一個(gè)名為aspreport.asp的文件,其源代碼如下: 

<% 

'等到文本緩沖完才顯示 

response.buffer = true 

dim accessdb, cn, rs, sql 

'數(shù)據(jù)庫名 

accessdb="user.mdb" 

'連接數(shù)據(jù)庫 

cn="DRIVER={Microsoft Access Driver (*.mdb)};" 

cn=cn & "DBQ=" & server.mappath(accessdb) 

'創(chuàng)建記錄集 

Set rs = Server.CreateObject("ADODB.Recordset") 

'查詢語句 

sql = "select * from user " 

'開始查詢 

rs.Open sql, cn 

%> 

<% 

'告訴瀏覽器用word來顯示文檔內(nèi)容 

Response.ContentType = "application/msword" 

'文檔設(shè)定 

response.AddHeader "content-disposition", "inline; filename=report.doc" 

%> 

<html> 

<head> 

<title>報(bào)表</title> 

</head> 

<body bgcolor="#FFFFFF"> 

<center><h1>報(bào)表</h1></center> 

<table border=1 cellspacing=0 cellpadding=0 bordercolor=#000000 align=center> 

<tr> 

<td>用戶名</td> 

<td>真實(shí)姓名</td> 

<td>性別</td> 

</tr> 

<% 

'移到第一個(gè)記錄 

rs.movefirst 

do while not rs.eof 

%> 

<tr> 

<td><%= rs("username") %></td> 

<td><%= rs("name") %></td> 

<td><%= rs("sex") %></td> 

</tr> 

<% 

'移到下一個(gè)記錄 

rs.movenext 

loop %> 

<% 

'關(guān)閉記錄集 

rs.close 

set rs=nothing 

response.flush 

response.end 

%> 

</table> 

</body> 

</html> 

把上面的report.asp文件和user.mdb數(shù)據(jù)庫放在同一目錄下,再用iis或pws把他們所在的目錄發(fā)布,打開瀏覽器,只要客戶端機(jī)子上有裝word,就會(huì)自動(dòng)調(diào)用word以內(nèi)嵌方式在瀏覽器上顯示,此時(shí)完全可以像使用word一樣來調(diào)整和打印。 

三、 在jsp中的實(shí)現(xiàn) 

創(chuàng)建一個(gè)名為jspreport.jsp的文件,其源代碼如下: 

<%@ page contentType="application/msword;charset=gb2312" %> 

<%@ page import="java.sql.*" %> 

<html> 

<head> 

<title>報(bào)表</title> 

</head> 

<body bgcolor="#FFFFFF"> 

<center><h1>報(bào)表</h1></center> 

<table border=1 cellspacing=0 cellpadding=0 bordercolor=#000000 align=center> 

<tr> 

<td>用戶名</td> 

<td>真實(shí)姓名</td> 

<td>性別</td> 

</tr> 

<% 

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 

String url="jdbc:odbc:user"; 

//連接user數(shù)據(jù)庫 

Connection con=DriverManager.getConnection (url, "", ""); 

Statement stmt=con.createStatement(); 

ResultSet rs=stmt.executeQuery("select * from user "); 

//查詢user表 

while(rs.next()){ 

%> 

<tr> 

<td><%= rs.getString("username") %></td> 

<td><%= rs.getString("name") %></td> 

<td><%= rs.getString("sex") %></td> 

</tr> 

<% 



%> 

<% 

rs.close(); 

stmt.close(); 

con.close(); 

%> 

</table> 

jsp的服務(wù)器以TOMCAT為例,把上面的jspreport.jsp和user.mdb放在TOMCAT的root目錄下。在控制面板的ODBC中建立相應(yīng)的DSN,類型mdb數(shù)據(jù)庫,數(shù)據(jù)源名為user。啟動(dòng)TOMCAT,輸入相應(yīng)的url,就可以看到和以上面asp一樣的效果。 

以上只是一個(gè)簡(jiǎn)單的例子,在作報(bào)表時(shí),可以先用word設(shè)計(jì)好,然后另存為網(wǎng)頁,再利用此網(wǎng)頁改編成相應(yīng)的腳本,就可以達(dá)到較好的效果。此方法有一個(gè)限制就是客戶端要有word軟件,但是會(huì)比使用ActiveX控件安全和方便,而且服務(wù)器端使用的平臺(tái)與WebServer是可以比較靈活的,特別適用于基于web的OA系統(tǒng)。