學編程已經三四年了,但是一直都沒有寫過相關的文章。今天,終于憋出一篇來。一來作為總結,二來可以給師弟師妹作為參考。
我讀大一的時候,老師教會了我if,while,for,等關鍵詞之后,我就開始自學了。大一的時候教的是C語言,從此之后,我迷上了C語言。因為C能實現我的想法。接下來我自學了java,jsp。當然,自學走了很多的彎路,直到現在我很后悔。~~~~(>_<)~~~~ 。交了學費不在老師那里學點東西的人的確很SB。
我現在主要說說我學java的經驗。學東西,要知道學來做什么嗎?java干什么用呢?當然不是生孩子用的,也不是下酒菜。java有兩個方向,一個是做網站,另外一個是做手機軟件。你選擇那個方向呢?
我選擇是做網站,雖然我一度鄙視做網站的(但我現在連鄙視的行業也進不去)。但選擇了java,再選別的就沒什么必要,我是這樣想的,肉吃了一半就丟掉嗎?多可惜。
java是完全面向對象的語言,面向對象主要講的是封裝,繼承,多態。但是老師對于這些至關重要的知識只用了一節課,我不想說,老師很SB,或者是她不知道如何使用這些特性。我現在告訴讀者,這些特性會讓你很爽。
我記得,我學java的時候,我用swing組件做了一個同學錄的軟件。當時的心情是自豪的,現在看里是傻B呼呼。首先,swing已經是一門過時的技術,過時的東西是被歷史淘汰了,我卻當做寶貝。是多么的無知。
我現在分析我那個軟件。我當然寫的同學錄只有一個類。一個主類,類里再套類,看得我頭昏腦脹,改一點就得改好多,然后調試的時候就出現好多錯誤。遇到這樣的問題誰都頭痛。為什么出現這樣的情況。因為只有一個類呀,所有的東西都放在一個類里,不亂才怪。就像一個籮筐里什么都放,當然亂了。這個時候,我們應該用到封裝來改變代碼的質量。
怎么做呢?
首先,界面和業務邏輯分開。對于界面,很多人都知道,但是業務邏輯有可能不明白的,我比喻一下。比如,同學錄。你想看我的同學錄,你就得知道我的登陸密碼,你輸入密碼的時候,代碼會校驗密碼,校驗密碼就是一個業務邏輯。界面和業務邏輯分開有什么好處?起碼,代碼分工分明。這些類負責界面,那些類負責業務邏輯。分工分明是有好處的。避免大家手忙腳亂做錯事,還有誰出錯了就找誰算賬就行。
這樣的話你的代碼就得這樣寫了
class 界面
{
}
class 業務邏輯
{
}
這樣總比
class 界面+業務邏輯
{
}
好管理吧。
這樣的話,界面的一些按鈕的位置改變了,對業務邏輯影響不大。這就是書上說的耦合度。
接著說業務邏輯。因為業務邏輯比較重要。
業務邏輯這么寫呢?我以前是這樣寫的,比如說,我想我的同學了,我想查一下她的電話然后call她。我很懶,不想翻電話部,我就用同學錄軟件查詢我的同學錄,那么軟件就得有查詢的功能。代碼是這樣的
class select同學name
{
}
刪除
class delete同學
{
}
但是,想用我的同學錄你得知道密碼,你就輸入密碼。那么我的代碼是
class select密碼
{
}
這樣寫下去,我感覺很無頭緒。這個時候就很適合用接口。什么是接口,我當時學java的時候,我也在想什么是接口,不就是一個interface嗎?
基本語法是這樣的
interface 接口名
{
抽象方法1;
抽象方法2;
}
當時我琢磨了很長時間,想不到interface怎么個好用?
現在我明白了。
你查詢密碼,查詢同學的電話,或者是更新同學的電話。你就得查詢數據庫吧。對于數據的操作不就是select,delete,update嗎?
那么這樣的話,我們可以這樣寫
public interface DataBase
{
// 增加操作
public void insert(name) throws Exception ;
// 修改操作
public void update(name) throws Exception ;
// 刪除操作
public void delete(String id) throws Exception ;
// 按ID查詢操作
public Person queryById(String id) throws Exception ;
// 查詢全部
public List queryAll() throws Exception ;
// 模糊查詢
public List queryByLike(String guanjianci) throws Exception ;
}
然后你就可以在各個功能類里implements DataBase了。什么是接口,就是規定你按照上面的格式去做,有規定了,就好辦事,對嗎?這個最好看看簡單工廠設計模式.
接下來說JSP吧
學完java就該學JSP了。我們發的是電子工業出版社出版的《JSP動態網頁編程技術》第七章說的是JSP操作數據庫。用的是JDBC-ODBC橋,如果堂哥沒有這樣提醒我的話,我現在可能還在配置數據源-----java的優勢是跨平臺,你這樣連接數據庫的話,就和操作系統綁定在一起了。于是我在網上查了,用JDBC驅動包。因為這樣的話速度快,如果是配置connection poll(連接池)性能就更加高了,好的東西我們為什么不用呢?第九章是servlet編程技術,但是老師沒有講,我忘記什么理由了。好像是用得不多。但是在接下來的自學過程中。我知道servlet用得很多,而且很重要。包括MVC設計模式和struts框架。不懂servelet就不懂java。servlet有很多精彩的地方。我這不是教程,所以就不詳細說servlet的語法。但是servlet的路徑問題得好好研究。對于servlet就學會配置web.xml和獲取,跳轉就可以了。
但是你要是有很多servlet的話。你就得配置很多,這樣的話,web.xml的文件就顯得很臃腫,有沒有更高的解決方法?有的。<url-pattern>*.do</url-pattern>,你可以試一下,不管你什么請求,你請求的路徑是什么,只要.do結尾的都能找到那個servlet。這就是從多個名稱映射同一個servlet。
servlet可以用request.getRequestURL()獲取路徑,然后用字符串截取函數substring()截取請求后面的路徑。然后根據請求的路徑跳轉到哪個類。當然,跳轉到哪個類,最好的解決方法是在.xml中配置。避免了大量的if語句。而且很靈活。所以,在struts1.x中有個默認的配置文件struts-config.xml配置映射。在struts中,actionServlet就做上面的截取路徑的動作。然后由struts-config.xml提供的映射分發到Action。對于struts我不易多說,因為我現在在學習。我感覺它是個好東西。很經典,很多設計模式都在里面找到。
我愿意和你們一起學習struts。