初學java的小白接到了項目:JSP頁面與MySQL數據庫連接、MVC模式等。怎么做才能體現項目需求呢?
網友解答: 謝謝邀請!JSP是Java Web開發(fā)的傳統技術之一,雖然弊端比較多,比如業(yè)務邏輯與顯示邏輯耦合、無法分別部署、開發(fā)角色分工不清等問題,但是JSP對于初學者來說還是有一定的學
謝謝邀請!
JSP是Java Web開發(fā)的傳統技術之一,雖然弊端比較多,比如業(yè)務邏輯與顯示邏輯耦合、無法分別部署、開發(fā)角色分工不清等問題,但是JSP對于初學者來說還是有一定的學習必要性,有不少遺留項目依然需要采用JSP技術。
MySQL數據庫是目前使用比較多的數據庫之一,尤其在Web開發(fā)領域。MySQL數據庫簡單易學且功能強大,Java程序員往往都對MySQL數據庫比較熟悉。雖然通過JSP直接連接MySQL數據庫是可以做到的,但是這種做法顯然是有很多問題的,恰好通過MVC結構是可以基本解決這些問題的。
MVC是一個軟件開發(fā)領域的經典結構,采用MVC進行Web開發(fā)也就是所謂的Model2開發(fā)方式,這種開發(fā)方式用JavaBean來描述M(模型),采用JSP來描述V(視圖),采用Servlet來描述C(控制器)。MVC最大的好處是實現了不同部分的解耦,提升了Web程序的模塊化程度,使得多角色協作開發(fā)有了重要的基礎,也為日后的優(yōu)化打下來基礎。
要想利用MVC結構完成一個傳統Java Web開發(fā),需要綜合使用Servlet、JSP、JavaBean、JDBC、MVC、DAO等一系列傳統技術,而通過一個模擬銀行“存取轉”業(yè)務的Web應用是一個不錯的選擇。
存取轉業(yè)務的基礎是賬戶,所以可以先寫一個Account類作為M部分,然后為M定義一個映射表格。以DAO的方式完成數據庫與Account類的映射,需要定義接口、實現類和工廠類。接著定義控制器Servlet,在Servlet中完成用戶請求的各種“導航”,最終通過JSP完成呈現。
這個過程只是一個基本的模擬,而且并沒有采用任何開源框架,對于Java學習者來說,學習開源框架是必要的。在掌握了MVC和DAO之后,再學習SpringMVC和Mybatis會更容易理解。
作者簡介:中國科學院大學計算機專業(yè)研究生導師,從事IT行業(yè)多年,研究方向包括動態(tài)軟件體系結構、大數據、人工智能相關領域,有多年的一線研發(fā)經驗。
歡迎關注作者,歡迎咨詢計算機相關問題。
網友解答:謝邀~
針對這個問題,具體的怎么連接數據庫,怎么增刪查改,這些代碼自己用google一下就可以得到答案,這里就不細說;初學者寫代碼經常會有個問題:把所有代碼都寫在“一層”里,甚至是一個類、一個方法里。
下面我談談自己的建議,如果意見不同,請留言討論。
什么是MVCMVC是Model—View—Controler的簡稱;即模型—視圖—控制;MVC是一種設計模式,它強制性的把應用程序的輸入、處理和輸出分開。
視圖: 視圖是用戶看到并與之交互的界面;視圖向用戶顯示相關的數據,并接受用戶的輸入;視圖不進行任何業(yè)務邏輯處理。
模型: 模型表示業(yè)務數據和業(yè)務處理;相當于JavaBean;一個模型能為多個視圖提供數據。這提高了應用程序的重用性
控制器: 當用戶單擊Web頁面中的提交按鈕時,控制器接受請求并調用相應的模型去處理請求;然后根據處理的結果調用相應的視圖來顯示處理的結果。
MVC的處理過程:首先控制器接受用戶的請求,調用相應的模型來進行業(yè)務處理,并返回數據給控制器??刂破髡{用相應的視圖來顯示處理的結果。并通過視圖呈現給用戶。
代碼如何分層大概知道什么是MVC了吧,其實就是:對代碼分層,各司其職。
現在看看題主的代碼怎么寫,我就按照我的習慣進行一下分層:
JSP能直接訪問數據庫么?技術上是沒問題的,但是我們通常不會這么做。和數據庫完成交互的,一般代碼里面會有兩層:Model和Dao。Model相當于JavaBean,是對數據庫表中數據的承載,Dao就是對數據庫表的操作。這里可以是JDBC,也可以使用ORM框架。
再往上,我一般會設置單獨的Service層,Service會有業(yè)務邏輯,可能會調用其他的Service,也可能會調用Dao層中的方法,也可能是調用其他系統的接口。
Service上面,再是Controller層,主要用于接受客戶端的數據,并對數據進行簡單的校驗。(我這樣的寫法,Service層+Controller層 = MVC中的C)
瀏覽器(客戶端)與C層的交互,會使用的View。
當然,靜態(tài)變量、配置、工具類等,都會有單獨的包,不在這里討論。
具體的流程所以具體的一個流程是這樣的?例如頁面輸入用戶身份證號,查詢用戶詳細信息:
JSP中輸入身份證號;
Controller層拿到View,對于代碼來說就是個Java對象,這一層可以增加驗證,比如不能輸入空、null或是身份證號規(guī)則驗證;
傳到Service層,這一層這個場景下,沒有什么特殊處理;
傳到Dao層,查詢數據庫,返回客戶信息:客戶姓名-張三,客戶性別-M;開始返回;
傳回Service層,把M轉成“男”(不過經常是在SQL中直接關聯字典表了);
傳回Controller層,再傳回JSP展示。
我將持續(xù)分享Java開發(fā)、架構設計、程序員職業(yè)發(fā)展等方面的見解,希望能得到你的關注。