JSP servlet與ssh等架構相比,在互連網網站開發和企業級開發中的優劣勢分析?

來源:互聯網
上載者:User
關鍵字 servlet java ssh JSP
我們知道,企業級開發,架構帶來了各種好處。
在互連網網站項目開發時,側重點不同,架構是否還盡如人意?
java開發網站,用純JSP servlet和ssh的優劣勢。分析。

回複內容:

這個問題其實是只可意會不可言傳,然而從看到這個邀請,就有跟知友賣弄的衝動。

首先,我是從qbasic開始編程,經曆了qb到vb,vb到asp(不帶.net),asp到jsp,jsp到php,再回頭學習j2ee。這個過程可能導致我的觀點可能跟主流觀點不同,希望各位理解。

j2ee並不等於spring struts hibernate,還有各種其他的選擇,ssh不是唯一甚至不是最好的選擇,這裡按下不表。

先問一個問題,什麼是jsp/servlet不能做,而ssh能做的?沒有ssh之前,就沒有web應用了嗎?

有人會覺得servlet傻,可是你看看struts的核心入口Dispatcher,不就是一個Servlet麼。你覺得jdbc難用,hibernate的功能最後還是用jdbc實現的,而且不少批量處理的情況,還是原生sql好用,以至於hibernate不得不提供原生sql介面,mybatis正是從這裡挖走不少使用者。

在很多情況下,ssh做的,只不過是把java/jsp/servlet/jdbc本來就具有的功能,封裝成不一樣的API,把原先用Java編寫的代碼變成用XML編寫,然後在用java寫的解譯器在jvm裡面去運行這些XML。所以,我覺得ssh其實就是面向web開發這個領域創造出來的一組DSL(領特定領域語言)。而這套語言以XML開始,現在轉移到java的註解annotation,慢慢的又迴歸java語言本身。

不太全面的說,struts就是給不熟悉html/css/js的web程式員擺脫它們寫商務邏輯用的,hibernate就是給不熟悉SQL的程式員擺脫SQL寫資料庫程式用的,spring就是給不熟悉java的介面、反射的程式員擺脫介面反射寫AOP用的。而上面被代替的這些,恰恰是相關領域的原生DSL,這裡面多少有一點諷刺的意味,對嗎?

如果struts的開發人員沒有在jsp混雜java片段的各種<%="'"+xx.yy()+"'"%>嵌套括弧引號海裡面摸爬滾打過來,你覺得他們會想到要做struts嗎?
如果hibernate的開發人員沒有在SQL的join鏈中繞暈過,他們會搞hibernate?
如果spring的開發人員沒有對java反射的異常數量吐過槽,會有spring?

如果你只想做一個平庸的碼農,去學ssh能讓你找到一份不錯的入門工作。
如果你希望能深入的理解系統、語言、架構,去學習語言本身提供的功能,去學習servlet、jdbc、java,去看看如何用他們構造通用的複雜的系統,也許未來5-10年,人們再提起j2ee,說的就是你創造的架構的名字,而不再是什麼spring struts hibernate。

我們總是希望高內聚低耦合,但兩者通常是矛盾的;如果你願意放棄其中的一個,就可以在另一個上面走的更遠。(這裡寫的觀點有偏差,正解請看 評論裡春雷的說法)

為了防止有人跟帖說U can U up.
GitHub - zhblue/crud: CRUD is Really Urgly coDed -- 資料庫快速原型系統瀉藥
首先你要搞清楚兩個概念 Servlet 和SSH 的關係 ~~ 其實 SSH 基本都是基於Servlet實現的。舉個例子 很久有人發明了單車 那時候 單車是唯一的交通工具 。可有人發現 單車長距離騎行真不是一般的累 (大規模應用開發的時候,所有輪子都要重複製造) 於是基於單車上有衍生出很多 比如電動單車、>機車、電動三輪車、等等 這些都是針對不同的應用環境而誕生的(實際項目中 很多Servlet開發是重複的 因此大家就抽出共同的規律 封裝起來 。並且在此基礎上 專門的一群人最佳化出一套代碼~ 這也就是SSH 由來 ) 有專人維護 至少可以保證你的代碼BUG少 漏洞少安全性高 ~而且有人給你寫教程 這樣 大型開發的時候 省時省力 ~~ 這時候 你還會用Servlet嗎 ?

當然 如果有一天 你自己也想造一個電動車 那你就需要研究Servlet 因為 Servlet是根本請獨立完成PPT製作你只需要用JSP/Servlet寫個5000這個層級的東東,你就能感受到架構的魅力了唉!開發效率的問題,簡單寫幾個頁面用 servlet 倒還好,正真的企業級應用用servlet會累死,管理也不方便。在原來的公司中使用SSH開發項目,該項目比較大,開發週期也很長。後來也遇到過用Servlet JSP編寫的項目,該項目比較小。
怎麼說呢,一般的小項目用Servlet JSP確實可以完成SSH架構完成的東西,但是開發量大,很多架構封裝好的公用邏輯需要自己再去實現,另外總是感覺代碼模組化不如用架構清晰。
一般大型的Java Web項目會使用架構,倒不限於SSH,還有SSM(Spring,SpringMVC,MyBatis),這些架構可以處理像請求參數類型轉換、交易管理等公用邏輯,並且以配置的形式降低代碼實現策略的耦合度。在大型項目的開發和維護上會節省不少時間。
架構是更進階的可重用的工具而已,實現的原理還是JDBC,Servlet等基礎的東西。
希望對你有所協助。現在不應該是nodejs+socket嗎?JSP Servlet的優點就是學習簡單,屬於javaweb應用程式層的的底層API,很輕鬆地就能掌握運作機制。
SSH優點就是使用簡單,幫你處理了許多東西,大多數時候你只要配配路由,寫寫controller就行了。但是因為它內部設計比較複雜,所以當你要基於它提供的擴充介面去自訂一些類時你需要弄懂它內部的設計和類和類之間的組織關係。不過大部分時候你只要寫controller,service這些就行了。
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.