對于演示原型,上午要下午給的快速交付,或者某些不知道到底一年有多少個(gè)人點(diǎn)進(jìn)去的網(wǎng)站角落,或者極少數(shù)管理人員才用到的管理功能,在恨不能php,ror的時(shí)候,你會想起jsp+jdbc的溫暖。
又或者你請到了只會寫jsp和sql的極品,又想讓他明天開始干活.....
所以在SS3里另做了這個(gè)extreme-web風(fēng)格示例 , 在簡化到no config file的jsp+jdbc同時(shí),仍然是個(gè)可堪一觀的MVC,仍然基于親愛的Spring.
View層:一個(gè)jsp
Web應(yīng)用里,單純的內(nèi)容展示型場景占絕大多數(shù)。我們也單純的在jsp的開始代碼調(diào)用Model層的Service Bean查出所需內(nèi)容。
一頁到尾,不要再扯什么Struts2 Action,什么struts.xml。 (見webapp/.../user.jsp )
內(nèi)容展示時(shí)可以繼續(xù)忍受旁人的鄙視,直接在頁面中嵌入jsp顯示代碼;也可以將查詢結(jié)果放入貫通兩界的pageContext里,換用Jsp2.0 EL和JSTL taglib來作展示。
Controller層:還是一個(gè)jsp
少量的用戶提交內(nèi)容的場景,就會來到這個(gè)代替Struts2 Action的jsp,由它來調(diào)用Model層的Service Bean,然后又redirect/forward回View層的jsp。
如果順手,可以用spring的DataBinder 將Request參數(shù)綁定到DTO。否則繼續(xù)復(fù)古的用N多request.getParameter("foo")手工組合。 (見webapp/.../userAction.jsp )
Model層:一個(gè)使用Spring JdbcTemplate的Pojo
為什么不繼續(xù)用jsp,徹底的改代碼不重啟服務(wù)器?因?yàn)樯岵坏肧pring的JdbcTemplate/DataSource/Transcation這一系列功能。
用Spring 2.5的@Service注冊bean,就不用在applicationContext.xml定義bean了。
然后繼續(xù)用@Transcational 定義事務(wù),不再編寫commit/rollback語句。
Spring的SimpleJDBCTemplate其實(shí)也挺好用的,順手的話,可以將輸入?yún)?shù)和ResultSet都直接反射到DTO上。
不順手的話,用MapSqlParameterSource綁定DTO到輸入?yún)?shù),用ParameterizedRowMapper綁定ResultSet到DTO。 (見src/.../UserService.java )
除了上面幾點(diǎn),其他地方也簡化退化了,比如maven的功能退化到j(luò)ar管理,連接池直接用commons-dbcp定義不依賴應(yīng)用服務(wù)器等等...
不過在URL Mapping、安全、緩存上難免存在損失。服務(wù)端校驗(yàn)、定時(shí)任務(wù)、Webservice實(shí)現(xiàn)起來會很笨拙。
確實(shí)只適合很小的應(yīng)用。
不敢使用 jdbc 的人
jdbc4.0 已經(jīng)很強(qiáng)大了 ;我們應(yīng)該直面 她
Java SE 6中的JDBC 4.0增強(qiáng)
http://dev2dev.bea.com.cn/techdoc/20061025892.html
-----------------------------------------
這個(gè)還分什么MVC喲,
拿出當(dāng)年Delphi,PB的那種開發(fā)模式
OO都不管了!!
因?yàn)?OO的最高原則 開閉原則在這兒不生效.
這個(gè)東東不得變動,沒有修改,不可能擴(kuò)展,因?yàn)橄挛缇鸵萌パ菔?演示完了,也就結(jié)束了.
最高原則是怎么做出來快當(dāng)!!呵呵呵....
懶人的要求,用 notepad 搞定。
1) download springside.jar 到 tomcat/lib
2) download spring side list.jsp/insert.jsp/edit.jsp 模板或例子
3) notepad打開修改下文字和字段, 不用懂spring,ioc,orm
4) IE 打開頁面測試
5) 扔給美工
URL Mapping、安全、緩存的確是損失了,
定時(shí)任務(wù)、Webservice因?yàn)椴浑xSpring,按照平時(shí)的做法做就是了, 不搞特別簡化。
你還別說,如果用Groovy寫Spring的Bean,還真的有點(diǎn)可能。
看來我知道的太少了!
努力嘗試下