欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談Action+Service +Dao 功能

 更新時間:2017年07月26日 08:50:15   投稿:jingxian  
下面小編就為大家?guī)硪黄獪\談Action+Service +Dao 功能。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1. Action/Service/DAO簡介:

Action是管理業(yè)務(Service)調(diào)度和管理跳轉(zhuǎn)的。

Service是管理具體的功能的。

Action只負責管理,而Service負責實施。

DAO只完成增刪改查,雖然可以1-n,n-n,1-1關聯(lián),模糊、動態(tài)、子查詢都可以。但是無論多么復雜的查詢,dao只是封裝增刪改查。至于增刪查改如何去實現(xiàn)一個功能,dao是不管的。

總結這三者,通過例子來解釋:

Action像是服務員,顧客點什么菜,菜上給幾號桌,都是ta的職責;

Service是廚師,action送來的菜單上的菜全是ta做的;

Dao是廚房的小工,和原材料打交道的事情全是ta管。

相互關系是,小工(dao)的工作是要滿足廚師(service)的要求,廚師要滿足服務員(action)轉(zhuǎn)達的客戶(頁面用戶)的要求,服務員自然就是為客戶服務嘍。

現(xiàn)在最基本的分層方式,結合了SSH架構。Model層就是對應的數(shù)據(jù)庫表的實體類。Dao層是使用了Hibernate連接數(shù)據(jù)庫、操作數(shù)據(jù)庫(增刪改查)。Service層:引用對應的Dao數(shù)據(jù)庫操作。Action層:引用對應的Service層,在這里結合Struts的配置文件,跳轉(zhuǎn)到指定的頁面,當然也能接受頁面?zhèn)鬟f的請求數(shù)據(jù),也可以做些計算處理。

以上的Hibernate, Struts,都需要注入到Spring的配置文件中,Spring把這些聯(lián)系起來,成為一個整體。

2. 三大框架Struts/Hibernate/Spring

簡單地說:

Struts——控制用的;

Hibernate——操作數(shù)據(jù)庫的;

Spring——解耦用的。

詳細地說:

Struts在SSH框架中起控制的作用,其核心是Controller,即ActionServlet,而ActionServlet的核心就是Struts-config.xml,主要控制邏輯關系的處理。

Hibernate是數(shù)據(jù)持久化層,是一種新的對象、關系的映射工具,提供了從Java類到數(shù)據(jù)表的映射,也提供了數(shù)據(jù)查詢和恢復等機制,大大減少數(shù)據(jù)訪問的復雜度。把對數(shù)據(jù)庫的直接操作,轉(zhuǎn)換為對持久對象的操作。

Spring是一個輕量級的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架。面向接口的編程,由容器控制程序之間的依賴關系,而非傳統(tǒng)實現(xiàn)中,由程序代碼直接操控。這就是所謂“控制反轉(zhuǎn)”的概念所在:(依賴)控制權由應用代碼中轉(zhuǎn)到了外部容器,控制權的轉(zhuǎn)移,是所謂反轉(zhuǎn)。依賴注入,即組件之間的依賴關系由容器在運行期決定,形象地說,即由容器動態(tài)地將某種依賴關系注入到組件之中,起到的主要作用是解耦。

Struts、Spring、Hibernate在各層的作用:

(1)Struts負責Web層:ActionFormBean接收網(wǎng)頁中表單提交的數(shù)據(jù),然后通過Action進行處理,再Forward到對應的網(wǎng)頁。在Struts-config.xml中定義<action-mapping>,ActionServlet會加載。

(2) Spring負責業(yè)務層管理,即Service(或Manager)。

Service為action提供統(tǒng)計的調(diào)用接口,封裝持久層的DAO;

可以寫一些自己的業(yè)務方法;

統(tǒng)一的Javabean管理方法;

聲明式事務管理;

集成Hibernate。

(3)Hibernate,負責持久化層,完成對數(shù)據(jù)庫的crud操作。提供OR/Mapping。它由一組.hbm.xml文件和POJO,是跟數(shù)據(jù)庫中的表相對應的。然后定義DAO,這些是跟數(shù)據(jù)庫打交道的類,它們會使用PO。

3. 框架業(yè)務邏輯分析:

在Struts + Spring + Hibernate的系統(tǒng)中,

對象的調(diào)用流程是:JSP—Action—Service—DAO—Hibernate。

數(shù)據(jù)的流向是:ActionFormBean接受用戶的數(shù)據(jù),Action將數(shù)據(jù)從ActionFormBean中取出,封裝成VO或PO,再調(diào)用業(yè)務層的Bean類,完成各種業(yè)務處理后再Forward。而業(yè)務層Bean收到這個PO對象之后,會調(diào)用DAO接口方法,進行持久化操作。

SSH框架的優(yōu)點:

Hibernate的最大好處就是根據(jù)數(shù)據(jù)庫的表,反向生成實體類,并且還有關系在里面,還有就是它對數(shù)據(jù)的操作也很方便;

Spring,省去了在類里面new對象的過程,把這個調(diào)用與被調(diào)用的關系直接展示到了配置文件里,做任何操作都變得簡單了。

簡單流程舉例說明:

程序框架搭建好,并且把各種jar包導入后,就開始進行業(yè)務邏輯分析——

假設一個最基本的注冊功能:頁面有兩個文本框,一個用戶名(username)和一個密碼(password)。以QQ注冊網(wǎng)頁說明,這里以昵稱和密碼為代表進行舉例。

首先是action層:它是負責在頁面和程序之間傳輸數(shù)據(jù)的,還有作用是做頁面跳轉(zhuǎn)。頁面由用戶填寫表單數(shù)據(jù),點擊提交按鈕,頁面的表單數(shù)據(jù)由Hibernate自動封裝到該頁面表單所對應的ActionFrom(ActionFrom跟實體類不是一個東西,ActionFrom是頁面有什么值,類里就寫什么屬性,是用來封裝表單數(shù)據(jù)用的;而實體類是完全按照數(shù)據(jù)庫的字段生成的,實體類可以當做ActionFrom用,但ActionFrom絕對不可以當做實體類用),這樣表單數(shù)據(jù)就以ActionFrom對象的形式在Action的點擊“提交按鈕”執(zhí)行的那個方法里存在了。這個時候需要做的就是把表單數(shù)據(jù)存入數(shù)據(jù)庫中。此時,Action的功能告一段落,接著是把數(shù)據(jù)傳入BIZ層。

BIZE層(業(yè)務邏輯層):負責的是對數(shù)據(jù)的處理。如果沒有數(shù)據(jù)處理任務的話,此層只做單純的數(shù)據(jù)傳遞作用,而后又到了DAO層。

DAO層(數(shù)據(jù)庫操作層):負責對數(shù)據(jù)向數(shù)據(jù)庫增刪改查的操作。

以上這篇淺談Action+Service +Dao 功能就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Mybatis-Plus自動生成代碼的實現(xiàn)示例

    Mybatis-Plus自動生成代碼的實現(xiàn)示例

    在工作中,程序員很多時候都是在寫類似的代碼,可以使用自動生成代碼,本文主要介紹了Mybatis-Plus自動生成代碼的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • Spring Security 單點登錄簡單示例詳解

    Spring Security 單點登錄簡單示例詳解

    這篇文章主要介紹了Spring Security 單點登錄簡單示例詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • SpringBoot 文件上傳和下載的實現(xiàn)源碼

    SpringBoot 文件上傳和下載的實現(xiàn)源碼

    這篇文章主要介紹了SpringBoot 文件上傳和下載的實現(xiàn)源碼,代碼簡單易懂非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-04-04
  • 一文詳解Java中Stream流的使用

    一文詳解Java中Stream流的使用

    JDK8新增了Stream(流操作)處理集合的數(shù)據(jù),可執(zhí)行查找、過濾和映射數(shù)據(jù)等操作.本文將通過一些實例介紹stream流的使用,需要的可以參考一下
    2022-05-05
  • Java并發(fā)編程volatile關鍵字的作用

    Java并發(fā)編程volatile關鍵字的作用

    這篇文章主要介紹了Java并發(fā)編程volatile關鍵字的作用,文中示例代碼非常詳細,幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • java 制作驗證碼并進行驗證實例詳解

    java 制作驗證碼并進行驗證實例詳解

    這篇文章主要介紹了java 制作驗證碼并進行驗證實例詳解的相關資料,需要的朋友可以參考下
    2017-04-04
  • java讀取csv文件內(nèi)容示例代碼

    java讀取csv文件內(nèi)容示例代碼

    這篇文章主要介紹了java讀取csv文件內(nèi)容的示例,大家參考使用
    2013-12-12
  • JavaWeb實現(xiàn)學生信息管理系統(tǒng)(3)

    JavaWeb實現(xiàn)學生信息管理系統(tǒng)(3)

    這篇文章主要為大家詳細介紹了JavaWeb實現(xiàn)學生信息管理系統(tǒng)第三篇,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • IDEA創(chuàng)建springboot依賴下載很慢的解決方法

    IDEA創(chuàng)建springboot依賴下載很慢的解決方法

    maven會使用遠程倉庫來加載依賴,是一個國外的網(wǎng)站,所以會很慢,本文主要介紹了IDEA創(chuàng)建springboot依賴下載很慢的解決方法,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • SpringBoot集成Quartz實現(xiàn)定時任務的方法

    SpringBoot集成Quartz實現(xiàn)定時任務的方法

    Quartz是一個定時任務框架,其他介紹網(wǎng)上也很詳盡。這里要介紹一下Quartz里的幾個非常核心的接口。通過實例代碼給大家講解SpringBoot集成Quartz實現(xiàn)定時任務的方法,感興趣的朋友一起看看吧
    2020-05-05

最新評論