




版權(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)的項(xiàng)目結(jié)構(gòu)有JavaBean類、Dao接口類、Dao接口實(shí)現(xiàn)類、控
4、制類,如圖a所示: 圖a網(wǎng)上商城前臺的項(xià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)驗(yàn),也能通過他人的反饋達(dá)到自我改進(jìn)和提升的目的。 下面我就為大家介紹 web項(xiàng)目中的這一上傳功能,那么文件是如何從本地發(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育類課題申報書分工
- 2018贛州課題申報書
- 合同范本剪輯制作
- 育人平臺課題申報書
- 旅游教改課題申報書范本
- 教改研究課題申報書
- 下浮類合同范本
- 痛經(jīng)課題申報書
- 單位全供貨合同范本
- 合同范例軟件全
- 湖北省2025屆高三下學(xué)期2月調(diào)考語文試題及參考答案
- 2025年湖南國防工業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫完整版
- 2025年《地陪導(dǎo)游服務(wù)程序》公開課標(biāo)準(zhǔn)教案
- 愛耳日完整課件
- 云南省2025年中考化學(xué)第三次模擬考試試題含答案
- 生物醫(yī)藥研發(fā)實(shí)驗(yàn)室的安全風(fēng)險評估與控制
- 合肥科技職業(yè)學(xué)院單招計算機(jī)類考試復(fù)習(xí)題庫(含答案)
- 系統(tǒng)集成項(xiàng)目售后服務(wù)方案
- 2018-2022年北京市中考真題數(shù)學(xué)試題匯編:填空壓軸(第16題)
- 初三物理常識試卷單選題100道及答案
- 2025年吉林省吉林市事業(yè)單位招聘入伍高校畢業(yè)生54人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
評論
0/150
提交評論