1. 程式人生 > >JAVA SSH開發架構中Action層,Service層,modle層,Dao層的功能區分

JAVA SSH開發架構中Action層,Service層,modle層,Dao層的功能區分

Struts+Spring+Hibernate (一下簡稱為SSH),SSH架構是當前非常火的架構,很多金融、電信專案,大型入口網站均選擇該架構作為業務支撐架構,開發流程也已經非常成熟。但是該結構開發起來,依舊存在一些問題。分析這些問題,得先從SSH架構的組成說起。

    SSHStruts+Spring+Hibernate的組成方式,Struts實現MVCSpring負責架構的結合,Hibernate進行資料的持久化。通常其分層開發的結構圖(以一個業務新增為例)如下:

這樣的結構,滿足了一般的業務需要,但是對於當前日益複雜化的WEB2.0的開發,卻存在不少問題,歸納起來主要有以下幾點的不足:     A)DAO和服務層容易出現職責不明,由於按照MVC邏輯,業務程式碼應該寫在Struts Action裡,但是其事務的提供,卻是配置在Service層。為了一組在邏輯上完整的資料操作業務邏輯,需要涉及兩個層(Serveice、Action)來進行編寫,遇到判斷的情況下,為了保證完整的事務操作,則需要將業務程式碼移到Service層完成,而通常習慣了在Struts Action裡呼叫多次Service而產生多個事務而在出現Exception時導致出錯時操作之前呼叫的Service事務的業務資料沒有回滾。     B)當需要返回的資料供AJAX使用,操作JSON或XML的的大量使用時。開發起來會很費力,一段同樣的業務程式碼,為了使用AJAX和XML可能需要重新編寫一次,或者在同一個ACTION裡通過標誌來判斷,對分層結構造成了比較糟糕的破壞。如果設計得不好,為了使用JSON和XML還得額外增加大量的配置,嚴重降低了開發效率。     因此,為了克服這些缺點,本人對於SSH架構,進行了實現了重新的分層,共享了業務程式碼。簡化了開發、增強了與AJAX技術、MXL技術的結合。提供了一種更高效的開發模式。 其開發的結構圖如下:

      看到這個架構圖有人可能會問,Struts Action類的編寫去哪了呢?答案正是這個架構的優點,由於業務程式碼統一實現IbusinessService介面,使得只需要相對固定的幾個Struts Action類呼叫Service層的方法,便可以完成工作。包括JSON格式輸出,XML輸出及WebService輸出均呼叫Service層方法來完成功能。這樣便實現了業務程式碼的分離,以及與前端框架的極大解耦。

相關推薦

JAVA SSH開發架構Action,Service,modle,Dao功能區分

Struts+Spring+Hibernate (一下簡稱為SSH),SSH架構是當前非常火的架構,很多金融、電信專案,大型入口網站均選擇該架構作為業務支撐架構,開發流程也已經非常成熟。但是該結構開發起來,依舊存在一些問題。分析這些問題,得先從SSH架構的組成說起。    SSH為Struts+Spring+

javawebactionservice、model、dao如何區分

首先這是現在最基本的分層方式,結合了SSH架構。modle層就是對應的資料庫表的實體類。Dao層是使用了Hibernate連線資料庫、操作資料庫(增刪改查)。Service層:引用對應的Dao資料庫操作,在這裡可以編寫自己需要的程式碼(比如簡單的判斷)。Action層:引用

Java Web開發Tomcat三種部署專案的方法(轉)

轉自:http://www.gowhich.com/blog/539 第一種方法:在tomcat中的conf目錄中,在server.xml中的,節點中新增: <Context path="/hello" docBase="D:\eclipse3.2.2forwebtools\works

java web開發過程,中文亂碼問題

在解決中文亂碼之前,我們先來看看jsp檔案中charset與pageEncoding的區別:          1.首先,charset是指伺服器傳送給客服端時的內容編碼,charset=utf-8表

java/golang開發面試遇到的問題集錦--持續更新

   博主是2017屆的應屆生,主要掌握的語言是java,後面在實習的時候,自學了golang,期間也是做了一些小東西,實習結束後,開始投入到找工作的大流中,所以想把面試中遇到的各種問題記錄起來方便學

ssh】struts2action接收引數的方法

Struts2中Action接收引數的方法主要有以下三種: Struts2中Action接收引數的方法主要有以下三種: 1.使用Action的屬性接收引數:     a.定義:在Action類中定義屬性,建立get和set方法;     b.接收:通過屬性接收引數,如

終結解決Java Web開發過程的中文亂碼問題

網上很多關於Java Web開發過程中的中文亂碼問題,我們前端後端都設定為UTF-8的編碼,最後還是會發生亂碼問題。 1、不同瀏覽器造成的問題 2、不同版本Tomcat造成的問題 在Tomcat不同版本對編碼的預設處理於是不一樣的,Tomcat

Java開發架構---淺談

大家可以瞭解下這裡面涉及到的MVC設計模式,持久化,以及每一層所用到的技術等等,這樣在學習框架的過程中會更容易理解框架的思想和使用了!還有就是動態代理,工廠模式等,這些都是和SSH(Struts2+Spring+Hibernate)框架的底層實現息息相關的.

java Web 開發 IE IFRAME 跨域 session 失效 p3p 解決

網站頁面中 用 Iframe 巢狀站點 被巢狀的網站 session 會失效 後臺獲取不到 sessionID 解決方案: 在JSP頁面中 頭部新增 紅色部分的程式碼 就OK了 <%@ page language="java" contentType="text/

SSH】strut2Action標籤method={1}的理解

一、前言       在最近使用ssh框架做的系統中,在struts2中的配置檔案中,總會寫類似下面的程式碼,其中中,結構有點亂,當初只是照著模板敲,沒有深度的思考。後面慢慢的開發發現了其中的玄機。

Java web開發專案各檔案的作用

JSP:所有的網頁程式碼 js:所有的javaScript程式碼 bo:一般是java的類檔案 dao:一般是處理資料庫方法的介面 impl:是上述介面的實現 service: 是 處理資料庫邏輯的服務 action :是處理業務邏輯的 xml:是配置檔案 jsp得到請求到

JAVA ERP進銷存管理系統 java+SSH+Ext架構

企業進銷存系統,商品管理系統,系統功能完整,無BUG,介面潔簡美觀. 開發技術:java + SSH+Ext 版本:Struct2.0 、Spring 2.5 、Hibernate3 、Ext js 3.3 資料庫: mySql 賣家推薦:商品進銷存業務功能完整,

事務為什麼加在service而不加在dao

事務註解 @Transactional一般的話都加在service層,問了一些剛入行的朋友為什麼,他們給的答案很模糊,所以自己去搜了下,下面是我的理解。 什麼是事務? 在資料庫中,所謂事務是指一組邏輯操作單元即一組sql語句。當這個單元中的一部分操作

事務註解 @Transactional一般的話為什麼都加在service而不加在dao

什麼是事務? 在資料庫中,所謂事務是指一組邏輯操作單元即一組sql語句。當這個單元中的一部分操作失敗,整個事務回滾,只有全部正確才完成提交。判斷事務是否配置成功的關鍵點在於出現異常時事務是否會回滾 事務四大特性 1. 原子性(Atomicity) 原子性是指事務是一

java web 開發 如何實現 輸入密碼三次錯誤 後 鎖定賬戶功能

要求 : 1、 不能使用cookie 和 session ,因為 時間和條件受限2、不可以存、讀取資料庫 不給系統壓力 鎖定是很簡單的,只要在使用者表中加上失敗次數,鎖定標誌,鎖定時間(可選)。每次登入時,已經鎖定直接禁止登入。沒有鎖定就判定,如果失敗就把失敗次數+1,

javaActionServiceDao功能區分

封裝 滿足 ont 事務管理 簡單 聲明式 所在 框架搭建 調用接口 Action/Service/DAO簡介:Action是管理業務(Service)調度和管理跳轉的。Service是管理具體的功能的。Action只負責管理,而Service負責實施。DAO只完成增刪改查

JAVAAction, ServicemodleDao功能區分

首先這是現在最基本的分層方式,結合了SSH架構。modle層就是對應的資料庫表的實體類。Dao層是使用了hibernate連線資料庫、操作資料庫(增刪改查)。Service層:引用對應的Dao資料庫操作,在這裡可以編寫自己需要的程式碼(比如簡單的判斷)。Action層:引用

JavaWeb三架構ServiceDao物件單例化可行性

宣告:以下個人觀點,僅作參考;    閱讀正文的前提知識:   一. 單例模式:   單例概念(百度): 單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含一個被稱為單例的特殊類。通過單例模式可以保證系統中,應用該模式的類一個類

Java——Web開發之開源框架DBUtils的使用,JSP開發模式,三架構與MVC設計模式的認識

DBUtils的使用: 在使用開源框架DBUtils時,它只是幫我們簡化了CRUD的程式碼,但是它不負責連線的建立以及獲取工作。 1.和使用開源框架都一樣的一個步驟,先匯入jar檔案 2.在這裡採用的是開源資料庫連線池C3P0進行連線 3.編寫CRUD程式碼 使用其功

Java高級架構師(一)第13節:Spring MVC實現Web開發

long true variable creat stp gis delete list java package com.sishuok.architecture1.customermgr.web; import org.springframework.beans.f