摘要:根據(jù)計算機實踐教學的需要,分析介紹了在WEB應用服務器GlassFish中,利用jspSmartUpload組件實現(xiàn)文件上傳的方法。為實現(xiàn)準確、快速、安全的收取學生課堂作業(yè),提供了一種較為簡明的方法。
關鍵詞:JSP;文件上傳
中圖法分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)16-21368-03
The Application of JSP Uploading File in Teaching
SHI Ze-quan
(Guandong Forestrical Occupation Technology School, Guangzhou 510520, China)
Abstract:According to the computer practice teaching need, introduc the method of uploading file base on Web Application Server GlassFish, by JspSmartUpload module. In order to realize the accurate, fast ,security collection student classwork, has provided one more concise method.
Key words:JSP; Uploading File
1 引言
在計算機實踐教學中,課堂作業(yè)是一個非常重要的環(huán)節(jié)。它不但是課堂教學的延伸和補充,同時,還可以真實地反映課堂教學的效果和了解學生對知識的掌握程度。如何準確、及時地收取每位學生的課堂作業(yè),是擺在教師面前的必須解決的現(xiàn)實問題。回顧過去,在局域網中,曾經使用了軟盤、文件夾共享,F(xiàn)TP,NetMeeting,點對點文件傳輸,多媒體教學軟件等方式方法,雖說也可以完成作業(yè)的回收,但還是覺得不是十分滿意,有時存在文件被刪除、復制、打不開或不易上交等現(xiàn)象,達不到預期的效果。利用JSP的文件傳輸功能,可以克服上述的弊端,實現(xiàn)準確,快速,安全在收取學生課堂作業(yè)的目的。
JSP是在傳統(tǒng)的網頁HTML文件中加入JAVA程序片段和JSP標記而構成的網頁,是一種實現(xiàn)普通靜態(tài)HTML和動態(tài)HTML混合編碼的網頁設計技術,目前已廣泛流行。在JSP中上傳文件也有多種方法,但都涉及到較復雜的JAVA編程,而利用SUN公司的WEB應用服務器GlassFish和jspSmartUpload組件,可較為輕松的完成文件上傳。
2 應用環(huán)境的構建
2.1 安裝Java EE JDK
Java EE JDK是SUN公司開發(fā)的基于Java編程環(huán)境的JSP應用產品。主要包含Java平臺JDK和開源的Java EE應用服務器GlassFish。該軟件的最新版本可從http://java.sun.com/javaee/downloads/index.jsp頁面免費下載。名稱為Java EE 5 SDK Update 4 (with JDK 6 U4) for Windows。在Windows下,直接運行下載的java_ee_sdk-5_04-windows.exe文件,根據(jù)安裝向導安裝到指定的目錄,例如安裝到D:\\sun\\sdk。安裝完成后從開始菜單中啟動缺省服務器(Start Default Server),在地址欄中http://localhost/或http://localhost:8080/,如果成功顯示默認的網頁,則Java EE JDK安裝成功。
2.2 添加jspSmartUpload組件
jspSmartUpload組件可以從www.jspsmart.com網站下載,壓縮包的名字是jspSmartUpload.zip。解壓后,將WEB-INF中的classes文件夾復制到domains\\domain1\\lib中。這樣就可以在JSP文件中使用jspSmartUpload組件中的JavaBean了。
3 上傳文件的實現(xiàn)
在GlassFish服務器文件夾domains\\domain1\\docroot中創(chuàng)建三個文件index.html、myupload.jsp和show.jsp,分別用于顯示上傳頁面、處理文件傳輸和顯示傳輸結果。其中index.html和myupload.jsp是必不可少的。
3.1 顯示上傳頁面
當用戶通過URL訪問WEB服務器時,顯示在用戶機上的頁面文件。在包含文件域的表單中,ENCTYPE屬性值必須為multipart/form-data ,METHOD屬性值必須為post。
index.html文件內容如下:
<html>
<head>
<title>==作業(yè)提交==</title>
</head>
<body>
<FORM ACTION=\"myupload.jsp\" ENCTYPE=\"multipart/form-data\" METHOD=\"POST\" >
<table border=0 cellpadding=10 cellspacing=18 width=400 bgcolor=\"#CC99FF\" align=center>
<td height=90 bgcolor=#00FFCC align=center >
請選擇要提交的文件: <p>
<input id=\"file_field\" type=\"file\" name=\"file\" size=\"50\" > <p>
<input type=\"submit\" name=\"Submit\" value=\"提交作業(yè)\" >
</td>
</table>
</form>
</body>
3.2 處理文件傳輸
WEB服務器收到用戶上傳文件的請求后,導入com.jspsmart.upload.*包,然后使用該包中的類方法傳送文件和保存文件到指定的文件夾。
myupload.jsp文件內容如下:
<%@ page contentType=\"text/html;charset=gb2312\" %>
<%@ page language=\"java\" import=\"com.jspsmart.upload.*\"%>
<jsp:useBean id=\"mySmartUpload\" scope=\"page\" class=\"com.jspsmart.upload.SmartUpload\" />
<HTML>
<BODY>
<H1>顯示提交結果</H1>
<HR>
<%
mySmartUpload.initialize(pageContext);
mySmartUpload.upload();
try {
mySmartUpload.save(\"d:/upload\");
out.println(\"作業(yè)提交成功.\");
} catch (Exception e) {
out.println(e.toString());
}
%>
</BODY>
</HTML>
3.3 返饋上傳結果
實際上,經過“處理文件傳輸”階段后,已經完成了文件的上傳。返饋上傳結果的目的是讓學生進一步明確已經提交作業(yè)文件的情況。這里采用讀取D:/upload文件夾內容的方法,完成上傳信息的反饋。需要強調的是,在調用show.jsp之前,必須在myupload.jsp的BODY中添加下列代碼:
<FORM ACTION=\"show.jsp\" ENCTYPE=\"multipart/form-data\" METHOD=\"POST\" >
<input type=\"submit\" name=\"Submit\" value=\"查看已提交的作業(yè)\" >
</FORM>
而show.jsp文件內容如下:
<%@page language=\"java\" contentType=\"text/html;charset=GB2312\"%>
<%@ page import=\"java.io.*\" %>
<html>
<head>
<title>顯示文件夾內容</title>
</head>
<body>
<%
File path = new File(\"D:/upload\");
File file[] = path.listFiles();
for(int i=0;i<file.length;i++)
{
out.println(file[i].getName()+\"<br/>\");
}
%>
</body>
</html>
4 問題探討
4.1 文件名
如果上傳的文件相同,則新上傳的文件會覆蓋已有文件。因此,要特別強調文件名的不同,最好用姓名加編號。
4.2 上傳文件的大小限制
在調用mySmartUpload .upload()方法之前,可以采用mySmartUpload.setTotalMaxFileSize()方法設定上傳文件的最大值。如:mySmartUpload.setTotalMaxFileSize(1000000);限定上傳的文件在1MB內。
4.3 記錄上傳文件信息
通過request對象中的getRemoteHost()方法獲取用戶的機器名或IP地址,并與上傳的文件名一起寫入一個指定的文件當中。
5 結束語
在Java EE JDK環(huán)境下,通過直接使用jspSmartUpload組件中的JavaBean,采用幾行Java代碼,便可以快速實現(xiàn)課堂作業(yè)的提交,大大提高了工作效率。
參考文獻:
[1] 鄧子云.JSP網絡編程從基礎到實踐[M].北京:電子工業(yè)出版社.2005,(9).
[2] 戴洋,陳海.在JSP中實現(xiàn)文件上傳下載的相關問題及改進方案[J].計算機與現(xiàn)代化,2006,(10).
[3] 汪健峰,張永忠,在Java Web開發(fā)中實現(xiàn)文件上載[J].計算機時代, 2006,(09).