實(shí)習(xí)第一周 No.1
基礎(chǔ)知識(shí)點(diǎn)
第一部分 工具的使用
一、Eclipse的字長設(shè)置為150,為了格式化代碼規(guī)格一樣所以統(tǒng)一。
Eclipse—window—preferences—formatter/editor—line width調(diào)為150。
二、Eclipse的編碼規(guī)格改為UTF-8,Eclipse—window—preferences—text改為UTF-8。
三、svn的使用,用于團(tuán)隊(duì)開發(fā)的代碼,注意點(diǎn):先更新代碼再上傳,
上傳代碼時(shí)寫明注釋。
第二部分 SSH框架簡介
一、S-struts
1、主要控制頁面跳轉(zhuǎn),負(fù)責(zé)MVC的分離。
2、上述MVC中,M指model(由form和bean組成)、V指view(jsp或HTML)、C指controller(由核心控制器servlet和邏輯控制器組成)。注:此處邏輯控制器是調(diào)用model完成處理。
二、S-spring:主要是對(duì)框架的整合。
三、H-hibernate:對(duì)象關(guān)系映射
四、Web.xml
1、web項(xiàng)目的入口是web.xml文件
2、Hibernate配置文件整合在此文件中,即application-context.xml。
3、其他context.xml文件路徑配置在此文件中。
4、包括監(jiān)聽、shiro文件、encoding定義、initFilter、Struts2、session-timeout(多長時(shí)間之后需重新登錄)、welcome-file-list(歡迎頁,可為多個(gè))、error-page(包括403、404),以上所有的配置。
五、application-context.xml
1、jdbc文件的配置,包括driveClassName、url等所有參數(shù)。
2、Hbm.xml文件的配置。
3、Hibernate的相關(guān)性能的配置,包括dialect、show_sql等。
4、hBaseDao和事物管理的引用。
5、Service包路徑的定義。
六、context.xml
1、將service注入到action中,scope類型為session,將dao注入到service中,將service注入到ajaxAction中,scope類型為prototype。
2、Action引對(duì)應(yīng)action,service和dao引對(duì)應(yīng)的實(shí)現(xiàn)類。Dao繼承hBaseDao。
3、此處scope類型有五種,
singleton: 單例,Spring 容器只會(huì)創(chuàng)建該bean定義的唯一實(shí)例。prototype:多例,每次對(duì)該bean的請(qǐng)求都會(huì)創(chuàng)建一個(gè)新的實(shí)例。
request:每次http請(qǐng)求將會(huì)有各自的bean實(shí)例,類似于prototype。
session:在一個(gè)http session中,一個(gè)bean定義對(duì)應(yīng)一個(gè)bean實(shí)例。
global session:在一個(gè)全局的http session中,一個(gè)bean定義對(duì)應(yīng)一個(gè)bean實(shí)例。
七、Struts.xml
1、constant:框架固定配置。其中ui.theme的value為simple,可自行修改框架樣式。
2、配置所有業(yè)務(wù)的strut.xml文件
3、配置攔截器,先配Struts自帶攔截器,才可配自定義攔截器。
八、Struts.xml
1、繼承Struts.xml文件中default包。
2、定義action的name,引入action。
3、Result是根據(jù)action返回的name,找到對(duì)應(yīng)的文件路徑。
4、Ajax定義json返回類型。
第三部分 代碼規(guī)范
一、數(shù)據(jù)庫建表
1、數(shù)據(jù)庫名、表名和字段名用有意義的英文,盡量簡短。
2、數(shù)據(jù)庫名用駝峰形式,數(shù)據(jù)庫表分為自定義表和系統(tǒng)表,自定義表命名以d_開頭,系統(tǒng)表以sys_開頭,多個(gè)詞時(shí)用_隔開。
3、系統(tǒng)表通常會(huì)有下面這些,sys_annex:附件表,sys_dic_info:字典項(xiàng)類型,sys_dic_type_info:字典項(xiàng)父類型,sys_log:系統(tǒng)日志,sys_map:地圖表,sys_news:新聞表,sys_module:功能模塊表,sys_org_info:機(jī)構(gòu)表,sys_role:角色表,sys_role_module:角色與模塊關(guān)系表,sys_user:用戶表,sys_user_role:用戶與角色關(guān)系表,sys_version:版本。
4、數(shù)據(jù)庫表的字段分為自定義字段和系統(tǒng)字段,系統(tǒng)字段為:id(主鍵)、createId(創(chuàng)建人)、createDate(創(chuàng)建時(shí)間)、operId(操作人)、operDate(操作時(shí)間)、sortId(排序)、status(狀態(tài))、version(版本)。
規(guī)范為id是表的第一個(gè)字段,其他系統(tǒng)字段放在表的最后,依次排列。
二、hbm.xml文件
1、如果不需要用hibernate生成數(shù)據(jù)庫表,則length無用,去掉。
2、表單提交不跟隨表單update的字段,需配update=false。
3、在數(shù)據(jù)庫表中已配默認(rèn)值字段,需配insert=false,否則會(huì)付為null。
4、不建議在此文件中寫select查詢語句,因?yàn)樵趫?zhí)行時(shí)是select改語句,影響效率。
三、Bean
1、由數(shù)據(jù)庫表字段和輔助字段組成。
2、只允許有8類基本類型,即boolean、byte、short、int、long、char、float、double,和對(duì)應(yīng)的set、get方法,不允許有復(fù)雜類型。
四、action文件
1、只做頁面跳轉(zhuǎn),禁止處理業(yè)務(wù)。
2、可以有自己的service和注入其他的service。
3、Query用于傳數(shù)據(jù),pageModel用于分頁,getModel用于接收頁面?zhèn)鬏數(shù)臄?shù)據(jù)。
4、所有數(shù)據(jù)都是get方法中return得到的,private只是定義。
5、取值只寫get方法。
6、不要改原生grid方法的結(jié)構(gòu),因?yàn)槠渌丝赡軙?huì)用到。
7、在grid方法中查的字典項(xiàng),在add方法中不需再查該字典項(xiàng),直接可以取到。
五、ajaxAction
1、返回值為json類型。
2、ajax中的get方法一定會(huì)返回值,沒有則報(bào)錯(cuò)。在bean的get方法上加@JSON(serialize = false),作用是不對(duì)其檢查是否有返回值。
3、bean傳值的方式為,將其轉(zhuǎn)換成json字符串。
六、service
1、處理自己的所有業(yè)務(wù)。
2、只注入自己的dao和其他的service。
七、dao
1、不要改原生的save、update、delete、searchList、searchListAll方法,因?yàn)槠渌丝赡軙?huì)用到。
2、原生的update方法存在bug,原來有值時(shí)不能改為空,所以u(píng)pdate方法需重新寫,用super.update,原生的update可用于單個(gè)字段的修改保存。
2、盡量不用hql查詢,影響性能。
3、sql語句不要用select *,不要用select里套select,盡量避免結(jié)果集與結(jié)果集之間進(jìn)行處理。
八、jsp
1、taglib.jsp中封裝了所有標(biāo)簽。
2、meta.jsp封裝了鍵盤操作。
3、引用自己的js要加時(shí)間戳,清瀏覽器中的js緩存。
4、加title寫明改頁面的名稱,便于在瀏覽器中找頁面。
5、add頁加hidden類型的bean.id,name加bean前綴,為了編輯頁面做準(zhǔn)備。
6、param=all作用是清掉query中的數(shù)據(jù)。
5、qui的按鈕兩個(gè)字之間加兩個(gè)占位符,為了美觀。
5、調(diào)頁面樣式,自帶審美。
九、總規(guī)范
1、除配置文件以外,所有代碼寫明注釋。
2、格式化代碼,注意:jsp頁面需手動(dòng)格式化。
3、寫代碼之前,考慮代碼優(yōu)化,包括sql語句的優(yōu)化,代碼復(fù)用同時(shí)包括sql復(fù)用。
4、代碼分塊,將一個(gè)功能拆分成部分,盡量寫成通用的。
5、頁面整潔,不留一行多余代碼。
第四部分 項(xiàng)目中快捷鍵使用
1、Ctrl+f 找當(dāng)前文件中的代碼或文字
2、Ctrl+shift+r 找文件
3、Ctrl+o 找方法
4、Ctrl+shift+o 去除多余引入的包,并將未引的引進(jìn)來。
5、Ctrl+h 可自行定義條件查找輸入的代碼所在的所有文件
6、Ctrl+shift+f 格式化代碼
7、Shift+tab 向前退一個(gè)tab
組長傳授細(xì)節(jié):
1 接口設(shè)計(jì)要完善,像是在使用查詢字典項(xiàng)的通用service時(shí),里面對(duì)應(yīng)只有一個(gè)傳入bean對(duì)象的方法,這樣就不是很方面了。
2 action需要向頁面?zhèn)髦档臅r(shí)候添加get方法,需要從頁面取值的時(shí)候添加set方法。
3 sql在使用函數(shù)什么的時(shí)候記得起別名,在每次出現(xiàn)得地方都替換成別名,并且注意有些地方能不使用函數(shù)就不使用函數(shù),影響性能。
4 頁面潔癖--出現(xiàn)警告的地方要全部刪除。
5 自己創(chuàng)建的頁面,action什么的都要保持命名的統(tǒng)一。
6 sql語句的where 第一個(gè)小條件要盡量過濾到最小的結(jié)果集,依次向下。
7 自帶審美,自帶美工,自帶測(cè)試。對(duì)于業(yè)務(wù),邏輯,需求都要有自己的考慮。
8 考慮優(yōu)化與重構(gòu)。
因?yàn)轫?xiàng)目框架是使用自動(dòng)生成代碼工具完成的,所以有些多余的東西要?jiǎng)h掉。
1 Bean名去掉注釋(因?yàn)橛刑砑訉?duì)應(yīng)的column)
2 hbm.xml去掉length(因?yàn)楸聿皇亲詣?dòng)生成的)
3 不需要跟著表單更新的數(shù)據(jù)要在hbm.xml中添加update=false
4 delete不使用生成的方法,而是直接刪除。
5 更新不使用生成的方法,直接使用super.update
6 Action刪除多余的沒有使用到的方法。
7 jsp頁面 引入自己的js文件的路徑后加上時(shí)間,清瀏覽器緩存
8 頁面中的onCookie方法刪掉,不會(huì)使用
9 將頁面路徑寫到title里。
10 查看頁面(XXView)用s:property獲取值顯示
11 onClick方法刪除JavaScript:這個(gè)前綴
PS: 百度了下為什么:
javascript:xxx() 這種格式一般用在a標(biāo)簽中的href屬性上如:
<a href=“javascript:alert('我是誰?');”>點(diǎn)我</a>
而onclick本身就是針對(duì)JavaScript的事件屬性,所以,這里按規(guī)范要求,是不加javascript:的
12 自動(dòng)生成代碼中的Action的add方法中的clean去掉。
13 QUI 表格的回調(diào)里統(tǒng)一改成var back。。。render。。。的形式。
實(shí)習(xí)之前都沒有聽說過,不知道QUI是什么鬼,看到項(xiàng)目里用的前端框架是QUI,然后就去百度了下。
QUI網(wǎng)頁界面集成框架是一套完整的BS模式系統(tǒng)界面,適合用于自動(dòng)化辦公、電子政務(wù)和RIA應(yīng)用等系統(tǒng)的開發(fā)中。
(感覺收費(fèi)不開源的這個(gè)東東貌似使用的人不是很多吧,對(duì)于個(gè)人來說覺得用了它之后在js,jQuery之類前端技術(shù)上不會(huì)得到提升了呢。。。)