JavaWeb網(wǎng)上商城的設(shè)計與實(shí)現(xiàn)文檔_第1頁
JavaWeb網(wǎng)上商城的設(shè)計與實(shí)現(xiàn)文檔_第2頁
JavaWeb網(wǎng)上商城的設(shè)計與實(shí)現(xiàn)文檔_第3頁
JavaWeb網(wǎng)上商城的設(shè)計與實(shí)現(xiàn)文檔_第4頁
JavaWeb網(wǎng)上商城的設(shè)計與實(shí)現(xiàn)文檔_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、不知道從什么時候起,我愛上了寫博客,對之前學(xué)得的只是進(jìn)行反思。寫了幾天課程設(shè)計,代碼量量8、9千左右。然后下面文字是我在博客上復(fù)制過來的,說得很詳細(xì)MVC(Model View Controller)設(shè)計模式在JavaFX中有著比Swing更好的表現(xiàn)方式。它使得程序界面設(shè)計和程序邏輯設(shè)計完全分開,便于代碼的可讀性和以后的可維護(hù)性。JavaEE體系架構(gòu)采用傳統(tǒng)的MVC設(shè)計模式,分為Model、View、Controller三層,其中:Model即模型層,定義數(shù)據(jù)模型和業(yè)務(wù)邏輯。為了將數(shù)據(jù)訪問與業(yè)務(wù)邏輯分離,提高業(yè)務(wù)精度,降低代碼之間的耦合,模型層又細(xì)分為DAO層與業(yè)務(wù)層,DA

2、O全稱為Data Access Object(數(shù)據(jù)訪問對象),將數(shù)據(jù)庫訪問代碼封閉起來,Hibernate API也在此封裝,不再出現(xiàn)在其他層或向其他層暴露;業(yè)務(wù)層是整個系統(tǒng)最核心也最具價值的一層,該層封裝應(yīng)用程序的業(yè)務(wù)邏輯,處理數(shù)據(jù),關(guān)注客戶需求,在業(yè)務(wù)處理過程中會訪問原始數(shù)據(jù)或產(chǎn)生新數(shù)據(jù),或者需要持久化數(shù)據(jù),DAO層提供的DAO類能很好地幫助業(yè)務(wù)層完成數(shù)據(jù)處理,業(yè)務(wù)層本身則側(cè)重于對客戶需求的理解和業(yè)務(wù)規(guī)則的適應(yīng),自然也包括大部分的計算,總體說來,DAO不處理業(yè)務(wù)邏輯,只為業(yè)務(wù)層提供輔助,獲取原始數(shù)據(jù)或持久化數(shù)據(jù)等操作。View即視圖層,為最終用戶提供一個友好的

3、交互界面,用戶可以查看請求結(jié)果,也可以通過表單等交互手段實(shí)現(xiàn)數(shù)據(jù)錄入。Controller層即控制器,控制器是Model與View的橋梁,將二者很好的銜接,通過View接收用戶數(shù)據(jù),Controller將數(shù)據(jù)傳輸給Model,Model對數(shù)據(jù)進(jìn)行處理;或者M(jìn)odel讀取數(shù)據(jù)后,Controller將數(shù)據(jù)傳遞給View,View向用戶展示數(shù)據(jù)。一來一往,Controller成了Model與View之間的快樂使者。 系統(tǒng)構(gòu)架模式:  MVC構(gòu)架模式(有用到DAO模式)  后臺管理系統(tǒng)的項目結(jié)構(gòu)有JavaBean類、Dao接口類、Dao接口實(shí)現(xiàn)類、控

4、制類,如圖a所示: 圖a網(wǎng)上商城前臺的項目結(jié)構(gòu)有JavaBean類、Dao接口類、Dao接口實(shí)現(xiàn)類、控制類,如圖b所示:                     圖bJSP圖片上傳 總的說圖片上傳有兩種方式,一種是把圖片文件寫到數(shù)據(jù)庫中,另一種是存到服務(wù)器文件目錄中。寫到數(shù)據(jù)庫中的圖片文件需要轉(zhuǎn)換成二進(jìn)制流的格式,占用數(shù)據(jù)庫空間比較,適合少量圖片的存儲,比如說,系統(tǒng)中某些小圖標(biāo),寫到數(shù)據(jù)庫中的優(yōu)點(diǎn)

5、是比較安全,不容易被用戶不小心刪除。下面是我在網(wǎng)上復(fù)制的例子:   現(xiàn)在不管是博客論壇還是企業(yè)辦公,都離不開資源的共享。通過文件上傳的方式,與大家同分享,從而達(dá)到大眾間廣泛的溝通和交流,我們既可以從中獲得更多的知識和經(jīng)驗,也能通過他人的反饋達(dá)到自我改進(jìn)和提升的目的。        下面我就為大家介紹 web項目中的這一上傳功能,那么文件是如何從本地發(fā)送到服務(wù)器的呢?看我慢慢道來:        首先,我們創(chuàng)建一個新的web工程,在工程的WebRoot目錄下新建一個upload文件夾,這樣當(dāng)我們將

6、該工程部署到服務(wù)器上時,服務(wù)器便也生成個upload文件夾,用來存放上傳的資源。        然后,在WebRoot目錄下新建一個jsp文件,主要實(shí)現(xiàn)的作用就是選擇上傳的文件,提交至servlet來進(jìn)行處理       詳細(xì)代碼如下:一個form將文件信息通過post方式傳送到指定的servlethtml view plaincopy1. <% page language="java" import="java.util.*"&

7、#160;pageEncoding="utf-8"%>  2. <%  3. String path = request.getContextPath();  4. String basePath = request.getScheme()+":/"+request.getServerName()+":"+request.getServerPort()+path+"/" &#

8、160;5. %>  6.   7. <!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN">  8. <html>  9.   <head>  10.     <base href="<%=basePath%>&q

9、uot;>  11.       12.     <title>My JSP 'upload.jsp' starting page</title>  13.       14.     <meta http-equiv="pragma"&

10、#160;content="no-cache">  15.     <meta http-equiv="cache-control" content="no-cache">  16.     <meta http-equiv="expires" content="0">   &#

11、160;  17.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  18.     <meta http-equiv="description" content="This is my page"> &

12、#160;19.     <!- 20.     <link rel="stylesheet" type="text/css" href="styles.css"> 21.     ->  22.   23.   </head>  24.  &

13、#160;  25.   <body>  26.     <form action="/upload/UpLoad" method="post" enctype="multipart/form-data">  27.      請選擇上傳的圖片或文件:<input type="file&q

14、uot; name="fileName"/><input type="submit" value="上傳"/>  28.     </form>  29.   </body>  30. </html>               可以看到,我們將

15、數(shù)據(jù)提交到工程下的upload/UpLoad。             之后,我們就來編寫這個servletUpLoad.java           java view plaincopy1. package load;  2.   3. import java.io.File;  4. import java.io.IOException;  

16、5. import java.io.PrintWriter;  6. import java.util.List;  7.   8. import javax.servlet.ServletContext;  9. import javax.servlet.ServletException;  10. import javax.servlet.http.HttpServlet;  11. import javax.s

17、ervlet.http.HttpServletRequest;  12. import javax.servlet.http.HttpServletResponse;  13.   14. import mons.fileupload.FileItem;  15. import mons.fileupload.FileUploadException;  16. import mons.fileupload.disk.DiskFileItemFactory;

18、  17. import mons.fileupload.servlet.ServletFileUpload;  18.   19. public class UpLoad extends HttpServlet   20.     SuppressWarnings("unchecked")  21.     Override 

19、 22.     protected void service(HttpServletRequest req, HttpServletResponse resp)  23.             throws ServletException, IOException   24.   &

20、#160;     req.setCharacterEncoding("utf-8");  25.         resp.setContentType("text/html;charset=utf-8");  26.         /為解析類提供配置信息  27.  

21、60;      DiskFileItemFactory factory = new DiskFileItemFactory();  28.         /創(chuàng)建解析類的實(shí)例  29.         ServletFileUpload sfu = new 

22、ServletFileUpload(factory);  30.         /開始解析  31.         sfu.setFileSizeMax(1024*400);  32.         /每個表單域中數(shù)據(jù)會封裝到一個對應(yīng)的FileItem對象上  33. &#

23、160;       try   34.             List<FileItem> items = sfu.parseRequest(req);  35.             /區(qū)分

24、表單域  36.             for (int i = 0; i < items.size(); i+)   37.                 FileItem

25、60;item = items.get(i);  38.                 /isFormField為true,表示這不是文件上傳表單域  39.                 if(!item.isFo

26、rmField()  40.                     ServletContext sctx = getServletContext();  41.              

27、0;      /獲得存放文件的物理路徑  42.                     /upload下的某個文件夾   得到當(dāng)前在線的用戶  找到對應(yīng)的文件夾  43.       &

28、#160;               44.                     String path = sctx.getRealPath("/upload");  45

29、.                     System.out.println(path);  46.                     /獲得文件名  

30、;47.                     String fileName = item.getName();  48.                   

31、60; System.out.println(fileName);  49.                     /該方法在某些平臺(操作系統(tǒng)),會返回路徑+文件名  50.               &

32、#160;     fileName = fileName.substring(fileName.lastIndexOf("/")+1);  51.                     File file = new File(path+&quo

33、t;"+fileName);  52.                     if(!file.exists()  53.                   

34、0;     item.write(file);  54.                         /將上傳圖片的名字記錄到數(shù)據(jù)庫中  55.           

35、;                56.                         resp.sendRedirect("/upload/ok.html");  57.            

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論