極簡風格Web架構,jsp+jdbc的二次複辟

來源:互聯網
上載者:User
 

    對於示範原型,上午要下午給的快速交付,或者某些不知道到底一年有多少個人點進去的網站角落,或者極少數管理員才用到的管理功能,在恨不能php,ror的時候,你會想起jsp+jdbc的溫暖。

    又或者你請到了只會寫jsp和sql的極品,又想讓他明天開始幹活.....

    所以在SS3裡另做了這個extreme-web風格樣本 , 在簡化到no config file的jsp+jdbc同時,仍然是個可堪一觀的MVC,仍然基於親愛的Spring.

View層:一個jsp

   Web應用裡,單純的內容展示型情境占絕大多數。我們也單純的在jsp的開始代碼調用Model層的Service Bean查出所需內容。
   一頁到尾,不要再扯什麼Struts2 Action,什麼struts.xml。  (見webapp/.../user.jsp)
 
   內容展示時可以繼續忍受旁人的鄙視,直接在頁面中嵌入jsp顯示代碼;也可以將查詢結果放入貫通兩界的pageContext裡,換用Jsp2.0 EL和JSTL taglib來作展示。
  

Controller層:還是一個jsp

   少量的使用者提交內容的情境,就會來到這個代替Struts2 Action的jsp,由它來調用Model層的Service Bean,然後又redirect/forward回View層的jsp。
   如果順手,可以用spring的DataBinder 將Request參數綁定到DTO。否則繼續複古的用N多request.getParameter("foo")手工組合。  (見webapp/.../userAction.jsp)

Model層:一個使用Spring JdbcTemplate的Pojo

    為什麼不繼續用jsp,徹底的改代碼不重啟伺服器?因為捨不得Spring的JdbcTemplate/DataSource/Transcation這一系列功能。

    用Spring 2.5的@Service註冊bean,就不用在applicationContext.xml定義bean了。
    然後繼續用@Transcational 定義事務,不再編寫commit/rollback語句。
    Spring的SimpleJDBCTemplate其實也挺好用的,順手的話,可以將輸入參數和ResultSet都直接反射到DTO上。
    不順手的話,用MapSqlParameterSource綁定DTO到輸入參數,用ParameterizedRowMapper綁定ResultSet到DTO。    (見src/.../UserService.java)

   除了上面幾點,其他地方也簡化退化了,比如maven的功能退化到jar管理,串連池直接用commons-dbcp定義不依賴應用伺服器等等...

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.