最近中文字幕2018免费版2019,久久国产劲暴∨内射新川,久久久午夜精品福利内容,日韩视频 中文字幕 视频一区

首頁 > 文章中心 > spring框架

spring框架

前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇spring框架范文,相信會為您的寫作帶來幫助,發現更多的寫作思路和靈感。

spring框架

spring框架范文第1篇

關鍵詞 spring; J2EE; 控制反轉; 事務處理

引 言

在軟件開發中出現過各種各樣的框架,開源軟件的興起,使得各種各樣的框架紛紛出現,例如,Apache組織下就擁有諸多的框架類產品。框架就是一組協同工作的類,它們為特定類型的軟件構筑了一個可重用的設計。然而,傳統的框架使得應用程序組件過分依賴于框架中的類,這種耦合度的提高降低了組件的復用性。Spring框架的出現,使得組件之間更松散的耦合成為了可能。

Spring框架簡介

Spring框架是一個2003年2月才出現的開源項目,該開源項目起源自Rod Johnson在2002年末出版的《Expert One-on-One J2EE Design and Development》一書中的基礎性代碼。在該書中,Rod Johnson倡導J2EE實用主義的設計思想,而Spring框架正是這一思想的更全面和具體的實現。Spring框架由一個容器,一個配置和組織組件的框架,和一組內置的為事務、持久化和Web用戶接口提供的服務組成。作為一種輕量級的J2EE框架,Spring提供了一種有效的方式來建立和組織J2EE應用程序。

1、Spring特性

IoC(Inversion of Control;控制反轉);又稱DI(Dependency Injection;依賴注入);是面向對象領域新興的編程思想;也是Spring的精髓所在。簡單地說;IoC就是指程序之間的關系由容器來控制;而不是傳統實現中由程序代碼直接操控。這也就是所謂“控制反轉”的概念所在:控制權由應用代碼轉到外部容器,控制權的轉移,也就是所謂的反轉。IoC將控制創建的職責搬進了框架中;并把它從應用代碼脫離開來。當使用Spring的IoC容器時只需指出組件需要的對象,在運行時Spring的IoC容器會根據XML配置數據提供給它。

Spring IoC,借助于依賴注入設計模式,使得開發者不用理會對象自身的生命周期極其關系,而且能夠改善開發者對模式的使用。對于一個對象的管理不是什么困難,難就難在對整個對象群的管理。依賴注入可以讓容器管理對象,即“Don’t call me, I will call you”。這樣對象本身的生命周期以及對象之間的關系就不再讓開發者費神了。

Spring AOP,借助于Spring實現攔截器,開發者能夠實現以聲名方式使用企業級服務,比如安全、事務服務。AOP 合理的補充了OOP,借助于Spring AOP,開發者能夠高效的使用J2EE服務。

Spring服務抽象,借助于各種J2EE API抽象,使得開發者能夠一致地使用J2EE 技術,而不管具體是使用什么J2EE API,借助于Spring服務抽象,使代碼大大減少,滿足“更少代碼,更少BUG”的軟件設計原則。

Spring IoC+Spring AOP+Spring服務抽象,一起形成Spring,這樣一個有機體,使構建輕量級J2EE成為可能。

Spring提供的事務管理

Spring提供的事務管理可以分為兩類:編程式的和聲明式的。編程式的,比較靈活,但是代碼量大,存在重復的代碼比較多;聲明式的比編程式的更靈活方便。

1、傳統使用JDBC的事務管理

以往使用JDBC進行數據操作,使用DataSource,從數據源中得到Connection,我們知道數據源是線程安全的,而連接不是線程安全的,所以對每個請求都是從數據源中重新取出一個連接。一般的數據源由容器進行管理,包括連接池。例如TOMCAT,WEBSPHERE,WEBLOGIC等這些J2EE商業容器都提供了這個功能。

以往的我們使用JDBC在寫代碼時,事務管理可能會是這樣:

Connection conn = null;

try{

conn = DBConnectionFactory.getConnection;

conn.setAutoCommit(false);

//do something

conn.commit(); //commit transcation

}catch(Exception e){

conn.rollback();

}

finally{

try{

conn.close();

} catch(SQLException se){ //do sth.}

//close ResultSet,PreparedStatement,Connection

//notice:Maybe ocurr Exception when u close rs,pstmt,conn

}

按照以往的思路來寫代碼,代碼量比較長,而且容易疏忽,忘掉一些try/catch,引發一些異常無法catch,雖然有時候我們會寫DBTool類,來關閉這些資源,并且保證在關閉這些資源時,不向外拋異常,但是這樣做會導致額外的麻煩。

2、Spring提供的編程式的事務處理

Spring提供了幾個關于事務處理的類:TransactionDefinition //事務屬性定義

TranscationStatus //代表了當前的事務,可以提交,回滾。

PlatformTransactionManager這個是spring提供的用于管理事務的基礎接口,其下有一個實現的抽象類AbstractPlatformTransactionManager,我們使用的事務管理類例如DataSourceTransactionManager等都是這個類的子類。

我們使用編程式的事務管理流程可能如下:

(1) 聲明數據源。

(2) 聲明一個事務管理類,例如:DataSourceTransactionManager,HibernateTransactionManger,JTATransactionManager等

(3) 在我們的代碼中加入事務處理代碼:

TransactionDefinition td = new TransactionDefinition();

TransactionStatus ts = transactionManager.getTransaction(td);

try{

//do sth

transactionManager.commit(ts);

}catch(Exception e){transactionManager.rollback(ts);}

使用Spring提供的事務模板TransactionTemplate:

void add()

{

transactionTemplate.execute( new TransactionCallback(){

pulic Object doInTransaction(TransactionStatus ts)

{ //do sth}

}

}

TransactionTemplate也是為我們省去了部分事務提交、回滾代碼;定義事務模板時,需注入事務管理對象。

3、Spring聲明式事務處理

Spring聲明式事務處理也主要使用了IoC,AOP思想,提供了TransactionInterceptor攔截器和常用的類TransactionProxyFactoryBean,可以直接對組件進行事務。

使用TransactionInterceptor的步驟:

(1)定義數據源,事務管理類

(2)定義事務攔截器,例如:

<bean id = "transactionInterceptor"

class="org.springframework.transaction.interceptor.TransactionInterceptor">

<property name="transactionManager"><ref bean="transactionManager"/></property>

<property name="transactionAttributeSource">

<value>

com.test.UserManager.*r=PROPAGATION_REQUIRED

</value>

</property>

</bean>

(3)為組件聲明一個類:ProxyFactoryBean

<bean id="userManager" class="org.springframework.aop.framework.ProxyFactoryBean">

<property name="proxyInterfaces"><value>com.test.UserManager</value></property>

<property name="interceptorNames">

<list>

<idref local="transactionInterceptor"/>

</list>

</property>

</bean>

使用TransactionProxyFactoryBean:

<bean id="userManager"

class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

<property name="transactionManager"><ref bean="transactionManager"/></property>

<property name="target"><ref local="userManagerTarget"/></property>

<property name="transactionAttributes">

<props>

<prop key="insert*">PROPAGATION_REQUIRED</prop>

<prop key="update*">PROPAGATION_REQUIRED</prop>

<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>

</props>

</property>

</bean>

TransactionProxyFactoryBean只是為組件的事務,如果我們要給組件添加一些業務方面的驗證等,可以使用TransactionTemplate加攔截器方式,為組件添加多個攔截器,spring AOP中提供了三類Advice,即前增強,后增強,拋出異常時的增強,可以靈活使用。

spring框架范文第2篇

關鍵詞:Spring MVC框架;Web登錄系統;B/S架構;session對象

1 概述

隨著世界經濟的繁榮和科技的迅猛發展,信息化的程度越來越高,各種軟件相繼出現。大批量種類繁多的軟件雖然提高了信息處理的效率,但是安全方面的隱患也日益突出。用戶想要進入到不同的應用軟件和服務系統時都必須進行登錄認證,隨之而來的遺忘密碼、黑客攻擊、密碼泄露等問題,都將嚴重干擾到業務運作。在這種情況下,一種安全可靠的用戶登錄模塊就顯得必不可少。

基于這種情況,該文研究了如何利用Spring MVC框架開發一款安全、靈活的Web登錄模塊。系統的任何用戶操作界面都可以提供登錄入口,提示用戶進行登錄,通過認證后,合法用戶就可以使用他相應的權限功能。

2 Spring MVC框架概述

Spring是分層的Java SE/EE應用一站式的輕量級開源框架,是為了解決企業應用程序開發復雜性而創建的。Spring框架提供了構建Web應用程序的全功能 MVC 模塊。在Spring的MVC中,支持各種視圖技術,例如JSP、Velocity、Tiles等。Spring MVC分離了控制器、模型對象、分派器以及處理程序對象的角色,這種分離讓它們更容易進行定制。

Spring MVC的角色劃分非常清晰,各組件的功能單一,很好地達到了高內聚低耦合的效果。Spring MVC相當靈活,且可以擴展,其MVC框架是圍繞 DispatcherServlet這個核心展開的。核心控制器的作用就是截獲請求,并將其分發到相應的業務控制器中,由業務控制器調用業務處理方法處理業務邏輯,返回一個模型和視圖對象,核心控制器再根據此對象找到視圖顯示出處理結果。

3 登錄模塊的設計與實現

本登錄模塊采用B/S的三層結構模式,分為服務器、用戶和數據庫三個部分。客戶端與服務器之間采用HTTP協議進行通信,Web服務器采用Tomcat6.0,數據庫服務器采用Oracle10.0.2。在用戶登錄模塊的開發過程中,提供對身份認證、權限分配等有效的安全策略,來實現用戶的驗證與登錄,在沒有得到系統授權的前提下是無權對文檔進行瀏覽和管理的。

3.1 總體設計

用戶登錄模塊按照不同的人員職責,提供不同的登錄界面,具體包括系統管理員、管理員、游客等登錄界面。有游客,管理員,身份證,電話號碼+密碼等多種登錄方式。

登錄模塊采用基于角色的身份認證技術,根據不同的用戶角色,提供不同的登錄選項,分配不同的使用權限。根據實際情況定義了三種角色:超級管理員、管理員、注冊用戶,通過登錄界面確認用戶的身份,再根據不同的用戶類型確定其相應的操作權限。

其中,超級管理員具有對角色、權限、菜單等進行增刪改查操作以及角色的賦權。管理員具有對用戶賬號管理,信息的修改、統計等處理權限。注冊用戶具有修改個人資料,信息瀏覽等權限。

3.2 數據庫配置

public UserInfo getUserByUserName(String userName){

UserInfo userInfo=null;

try{

userInfo=(UserInfo)

getSqlMapClientTemplate().queryForObject("USERINFO.getUserByUserName", userName);

}catch(Exception e){

logger.error(e);}

return userInfo;}

3.3登錄模塊的實現

本模塊登錄時沒有區分用戶角色,當進入系統后根據角色權限加載菜單項。用戶通過輸入用戶名和密碼,然后單擊登陸按鈕實現以上信息的提交并驗證,若正確無誤進入系統。

3.3.1錯誤鎖定

登陸模塊根據用戶身份進入系統,顯示擁有權限的操作菜單。如果用戶不存在,則找不到數據;如果用戶存在,密碼錯誤,同樣找不到數據,均提示用戶名密碼錯誤;如果用戶名和密碼同時存在,則獲取用戶信息,并進入相應的界面。為系統安全考慮,若用戶連續而且超過三次輸入密碼錯誤,則需要輸入驗證碼。errorTime為輸入錯誤次數,當驗證碼輸入為空,或輸入錯誤,就返回-1,此時對該賬號鎖定, 登錄失敗,必須經過超級管理員解鎖才能重新使用。部分代碼分析如下:

if(errorTime>=3){

if(entryVlidateCode==null||(!entryVlidateCode.equals(realValidateCode))){

map.put("errorMsg","驗證碼錯誤");

map.put("userInfo",null);

map.put("errorCode",-1);

return map;

}}

3.3.2在線提示

用戶在登錄時,會創建一個session,用于保存用戶信息。如果在線用戶列表中查找到該用戶已經在線,同時又在其他機器登錄,那么首先提示用戶已經在線,然后給出選擇擠下或者取消登錄。如果擠下,那么被擠機器就無法繼續前后臺的數據交互,自動退出,登錄失敗。也就是限制用戶重復登錄,每個時刻只允許在一臺機器上登錄。

先從ServletContext中取出存放用戶登錄的session相關信息,檢查這個列表,若已經存在相同的登錄信息,則說明用戶之前已經登錄過,移除前面一條記錄。再把此次登錄的信息加入到ServletContext中。監聽實現SessionListener類,當session失效的時候,從ServletContext中移除相應記錄。過濾所有頁面,sesison失效后轉向登錄頁面。但是要實現用戶二次登錄后強制先前的登錄失效,需要在這里控制。登錄時存入的是session值和session ID,用戶二次登錄時移除了前次記錄,存入的session值是相同的,但是ID卻不同。 當第一次登錄頁面請求的時候,在這里檢查ServletContext中是否存在當前的session值與ID,如果沒有就銷毀這個session。

3.3.3非法退出

對于WEB系統來說,均遵循HTTP協議的請求/應答模型。所以網站本身是不能保存數據的,用戶正確登錄后,系統更改當前用戶的狀態為在線。如果用戶在使用系統時,不通過退出按鈕來執行退出操作,而是非法退出,包括網絡斷線、系統癱瘓、突然斷電等情況。這些都使系統沒有給用戶記錄一個退出系統的操作機會,這種情況下用戶的在線狀態會一直保留,從而影響下次登錄。因此,系統應該設置一個定時器,定時清理并且還原用戶的初始狀態。

當用戶以登陸身份請求服務器資源時,記錄用戶的最后活躍時間。接著擬定一個失效時間,假設某個用戶的最后活躍時間和當前時間的差值大于這個失效時間,也就是說該用戶這一段時間都沒有和服務器交互了,那么就認為該用戶已下線,否則認為他是在線的。

3.3.4超時管理

Session對象是由服務器自動創建的與用戶請求相關的對象。服務器為每個用戶都生成一個session對象,用于保存該用戶的信息,跟蹤用戶的操作狀態。應用session對象時要注意它的生命周期,當用戶首次訪問時將產生一個新的會話,從用戶打開網站生成,關閉瀏覽器刪除,以后服務器就會記住這個會話狀態,在這一段時間內,用戶都可以訪問到會話對象中保存的信息。當會話生命周期超時,或者服務器端強制使會話失效時,這個session就不能使用了,需要用戶重新登錄。

通過setMaxInactiveInterval()方法可以設置Session的生命周期,通過getMaxInactiveInterval()方法可獲得Session的生命周期,如果超過這個時間則失效。

4 結束語

信息的規范化、高效化管理在很大程度上體現了一個組織的工作效率,而登陸功能在其中起到了關鍵性作用,同時也為系統提供了安全性保障。該文對Web登錄模塊進行了分析,使用Spring MVC框架進行設計,提出了解決方案,實現了系統用戶的登錄、出錯處理、超時檢查等功能,使系統的重用性和擴展性更好,用戶界面簡潔統一,功能靈活,提高了系統的易用性、安全性及穩定性。

參考文獻 :

[1] 劉震宇,肖武魁.基于J2EE框架與ExtJS的Web系統登錄設計[J].中南林業科技大學學報,2010(8).

[2] 張瑞青,李鐵柱.基于SpringMVC的用戶登錄系統的設計與實現[J].科技信息,2012(10).

spring框架范文第3篇

關鍵詞:Struts;Spring;Hibernate;人力資源管理系統;依賴注入

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2010)11-2637-03

Human Resource Management System Design and Implementation Based on Struts/Spring/Hibernate Integration Framework

HU Zhi-min

(Department of Information Engineering, Hunan Urban Construction College, Xiangtan 411100, China)

Abstract: Modern enterprise competition is the competition for talent, human resource management system can improve the efficiency of corporate talent management. Based on the Java EE platform, human resources management system has been designed, using Struts/Spring/Hibernate integration framework for the development of human resources management system, using the MVC pattern to the user interface and business logic completely separate, using dependency injection to improve the system components of the between independence. The use of Struts/Spring/Hibernate integration frameworks for information systems development, than the traditional multi-layer model has a higher flexibility and scalability.

Key words: struts; spring; hibernate; human resources management system; dependency injection

人力資源管理是知識經濟時代企業管理的主要內容,“以人為本”突出了人在企業中的作用。隨著市場競爭的日益激烈,企業競爭由外部競爭逐漸轉變為全方位競爭,而人才的競爭更是企業競爭的焦點。

1998年前后,我國的很多大型企業都逐步認識到引才、用才、留才的重要性,于是,很多企業都先后設立了人力資源部。國內的一些高校也相繼開設了人力資源管理專業。發展到現在,人力資源主要從事員工招聘選拔、績效考核、薪酬福利管理、勞動關系協調等工作。而信息化人力資源的管理模式也由此脫穎而出。

同志指出:“人才問題是關系黨和國家事業發展的關鍵問題。”;“國以人興,政以才治,為政之道,要在得人”。新世紀、新階段實施人才興企戰略,使人才越來越受到重視。[1]但是傳統的人力資源管理方法已經不適應于信息時代的發展要求,在傳統模式下,人力資源管理部門機構比較龐大,工作任務繁重,各種工作由于使用人工來操作極易出錯。建立信息化的人力資源管理系統已經成為企業人力資源管理的首要任務。

根據企業人力資源管理需求,設計了基于Java EE的人力資源管理系統架構,采用Struts/Spring/Hibernate集成框架為基礎進行了系統設計,采用MVC、依賴注入、過濾器等技術簡化了系統開發,提高了系統的靈活性和可擴展性。

1 系統需求

為了提高企業信息化水平,促進企業管理的規范化、制度化、流程化,決定實施人力資源管理系統。希望通過這個系統的實施規范人事檔案的管理,規范薪酬體系和薪酬發放的管理,規范人事的調動管理、培訓管理和激勵管理。并對招聘工作的職位、簡歷、面試、招聘題庫、招聘考試、錄用等環節加以規范。系統還需提供人事檔案的導出和報表功能。

本系統將實現人力資源檔案管理、薪酬管理、調動管理、培訓管理、激勵管理和招聘管理六大功能。其中人力資源檔案管理是本系統的基礎數據和核心內容。包含人力資源檔案登記、人力資源檔案登記復核、人力資源檔案查詢、人力資源檔案變更和人力資源檔案刪除四個子模塊。薪酬管理是系統中的一個重要部分,在系統管理模塊設置薪酬標準項目后,進行薪酬發放登記。員工工作機構和職位發生變動的時候,通過調動管理執行登記員工調動檔案,并登記其新的機構,職位和薪酬標準。通過培訓管理進行教育培訓檔案的建立,修改和維護,培訓信息等工作。激勵管理主要信息包括獲獎人員,獎懲時間、獎懲內容、獎金類別等信息,可以對每個員工獎懲信息進行增加、刪除、編輯操作。招聘管理實現當某個崗位出現空缺的時候,或者隨著公司業務發展,需要招聘新員工的時候,通過這個模塊。后的職位可以進行修改。另外,需要提供職位查詢的功能,查詢已的職位,并對已的職位錄入應聘者信息。

2 開發平臺選擇

2.1 Struts/Spring/Hibernate集成框架

Struts/Spring/Hibernate集成框架是Struts、Spring和Hibernate三種技術的有機融合,是目前應用最廣泛的Java EE架構。在Struts/Spring/Hibernate集成框架中,Struts的作用是提供MVC模型,將界面、業務邏輯和數據分離,并提供一個高可擴展的架構。Spring作為依賴注入的容器,將項目中的構建進行粘結。而Hibernate提供了一個抽象的數據服務視圖,將用戶對數據庫的訪問進行高度抽象。[2]

Struts 是目前創建Web 應用最常用的表現層MVC 框架實現,是JakartaApache 的一個開源項目[3]。基于Model2 的Struts框架利用控制器和定制標簽庫將應用中的模型和視圖分離,達到了層間松散耦合的效果,同時提高系統的靈活性、重用性和維護性。作為開源項目,Struts經受了大量實踐的檢驗,功能越來越強大,體系也日臻完善,并且對其他技術和框架顯示出良好的融合性。[4]

Spring由Rod Johnson創建,它是為了解決企業應用開發的復雜性而創建的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務器端的開發。從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益。簡單來說,Spring是一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器框架。

Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用。

2.2數據庫服務器(SQL Server 2005)

SQL Server 2005是微軟具有里程碑意義的企業級數據庫產品,它在企業級支持、商業智能應用、管理開發效率等方面有了顯著的增強,是集數據管理與商業智能分析于一體的、極具前瞻性的下一代數據管理與分析平臺。

SQL Server 2005基于SQL Server 2000的強大功能之上,提供了一個完整的數據管理和分析解決方案,它將會給不同規模的組織帶來不同的幫助。采用SQL Server 2005作為人力資源管理系統的數據庫,綜合考慮了系統規模、吞吐量、支出成本以及技術適應性等方面。

2.3應用服務器(Tomcat)

Tomcat 是一個小型的輕量級應用服務器,在中小型系統和并發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。在人力資源管理系統中,采用Tomcat 5.5做為應用服務器。

3 系統設計

3.1 Action設計

Struts采用struts-config.xml來進行Action的配置,主頁的Action配置如圖1所示。

對應的xml編碼如下:

3.2依賴注入設計

依賴注入由Spring進行管理,所有需要被注入的Bean,都在applicationContext.xml文件中進行配置,其中datasource Bean的配置如下:

net.sourceforge.jtds.jdbc.Driver

jdbc:jtds:sqlserver://localhost:1433/HR_DB

sa

123456

3

3

2

50

600

900

100

10

3.3 過濾器的應用

在系統開發過程中,需要解決Struts的中文支持問題,開始使用在Action中使用程序進行編碼轉換,但是隨著Action數量的增多,這種方法不僅容易出錯,而且浪費人力。為了提高開發速度,采用了過濾器的技術對中文編碼進行支持,過濾器類由Spring直接提供,也可以由用戶自己編寫。過濾器在Web.xml文件中進行配置,配置如下:

CharacterEncodingFilter

org.springframework.web.filter.CharacterEncodingFilter

encoding

GBK

forceEncoding

true

CharacterEncodingFilter

*.jsp

CharacterEncodingFilter

*.do

4 總結

在企業信息化建設的過程中,可以采用各種技術來構建系統,每種技術都有自己的適應范圍。企業人力資源管理系統必須要適應企業的管理要求,而采用Struts/Spring/Hibernate集成框架可以提供一個高可配置和可擴展的系統,系統可以經過部分修改直接適應其他企業的需求,達到了軟件重用的目的。

參考文獻:

[1] 蔡琳.以科學發展觀指導企業人力資源管理[J].經營管理者,2009(22):322.

[2] 楊海斌.基于SSH框架的高校網站群內容管理系統設計[J].軟件導刊,2009,8(9):118-119.

spring框架范文第4篇

關鍵詞:Struts、Spring、整合

一、引言

Struts框架是Apache基金會Jakarta項目組的一個Open Source(開放源代碼)項目,該框架由一組相互協作的類(組件)、Servlet以及標簽庫組成,是對傳統MVC設計模式的一種實現和標準化,充分體現了MVC模式“分離顯示邏輯和業務邏輯”的設計思想,是目前Java Web開放中廣泛采用的技術。

Spring是由Rod Johnson創建的一個開源框架,目的是為了解決Java Web企業應用開發的復雜性。Spring提供了IoC(控制反轉)、AOP(面向切面編程)、聲明式事務等功能,提高了Java Web應用開發的效率和質量。更重要的是,Spring不排斥各種優秀的開源框架,相反,Spring可以降低各種框架的使用難度,Spring提供了對各種優秀框架(如Struts,Hibernate等)的直接支持。

雖然Spring本身可以作為一個MVC實現,但由于Struts在MVC方面的影響力,使得開發人員者更愿意將Struts整合到Spring中,而不是使用Spring MVC代替Struts。本文總結歸納了整合Struts和Spring的三種方法,并討論了各自的優缺點。

二、整合struts和spring

1,使用ActionSupport類

(1)原理

當客戶端發送http請求到控制器時,使用請求參數填充FormBean,并根據struts-config.xml的配置將請求轉發給對應的Action,Action通過調用父類的getWebApplicationContext()方法獲取ApplicationContext對象,在通過ApplicationContext對象從Spring容器中獲取相關的JavaBean,通過Action處理后將處理結果會發給控制器,控制其根據struts-config,xml的配置將處理結果傳回到客戶端。

(2)用法

①在struts-config xml中配置插件,代碼如下:

②創建A ction類,繼承自ActionSupport或DispatchActionSupport;

③在Action中通過調用getWebApplicationcontext()方法獲取ApplicationContext對象,然后調用ApplicationContext對象的getBean()方法從Spring容器中取出相應的對象。

(3)評價

這種技術很簡單并且易于理解。但是,它將Struts動作與Sp ring框架耦合在一起。如果想替換掉Spring,那么就必須重寫代碼。同時,由于Struts動作不在Spring的控制之下,所以它不能獲得SpringAOP的優勢。當使用多重獨立的Sp ring環境時,這種技術可能有用,但是在大多數情況下,這種方法不如另外兩種方法合適。

2,使用DelegatingRequestProcessor類

(1)原理

客戶端發送http請求到控制器ActionServlet,控制器將使用請求參數填充FormBean并根據Struts-config,xml的配置將請求轉發給DelegatingResquestProcessor,DelegatingResquestProcessor根據Spring配置文件從web容器中提取ActionBean并調用相關的JavaBean,由ActionBean對請求進行處理,處理完畢后在轉發給控制器,控制器再根據struts-config.xml的配置把將處理結果發揮給客戶端。

(2)用法

①在struts-config.xml中配置插件,代碼如下:

vaIue=”classpath applIcationContext.xmI”/>

②在struts-config.xml中增加如下節點:

DelegatingRequestProcessor”/>

③創建Action,并在spring配置文件ApplicationContext xml中對其進行注冊。

(3)評價

這種方法使Struts動作并不知道它正被Spring管理,并且使我們能夠利用Spring的動作管理框架的所有優點。由于Struts動作注意不到Spring的存在,所以我們不需要重寫我們的Struts代碼就可以使用其他控制反轉容器來替換掉Spring。看來這種方法的確比第一種方法好,但還是存在著一些問題。如果我們使用一個不同的RequestProcessor,則需要手動整合Spring的DelegatingRequestProcessor。添加的代碼會造成維護的麻煩并且將來會降低的應用程序的靈活性。

3,將StrutsAction管理委托給Spring框架

(1)原理

客戶端發送http請求到控制器ActionServlet,控制器將使用請求參數填充FormBean,并根據struts-config.xmI的配置將請求轉發給DelegatingActionProxy,DelegatingActionProxy根據請求信息從Spring容器中獲取相應的Action并由Spring為其注入相關的JavaBean,請求經Action處理完畢后在轉發給DelegatingActionProxy,DelegatingActionProxy在轉發處理結果給控制器,控制器根據struts-config.xml的配置把將處理結果發揮給客戶端。

(2)用法

①在Struts-config.xml中配置插件,代碼如下:

value=classpath:applicationContext.xmI/>

②創建Action并將st ruts-config,xml中的Action節點的type更改為org.springframework.web.struts,DeIegatingActionProxy

③在Spring配置文件中注冊ActionBean。

(3)評價

動作委托方法是這3種方法中最好的。Struts動作不了解Spring,不對代碼作任何改變就可用于非Spring應用程序中。RequestProcessor的改變不會影響它,并且它可以利用SpringAOP特性的優點。

spring框架范文第5篇

關鍵詞:開源框架;客戶關系;整合;SSH

中圖分類號:TP315文獻標識碼:A文章編號:1009-3044(2012)03-0617-03

CRM Design and Implementation Based on Open Source Frameworks

ZHAO Yong-hui, DENG Wen-xin

(Zhejiang Guangsha College of Applied Construction Technology, Dongyang 22100, China)

Abstract: In this paper, three main open-source frameworks Struts, Spring and Hibernate based, integrated design of a common SSH open source framework and its application to customer relationship management system. Practical results show that the framework of the integrat? ed framework of their three full advantage of reducing the coupling between the layers, increase the system flexibility and scalability, with a high reference and promotion of practical value.

Key words: open-source framework; customer relationship; integration; SSH

隨著全球一體化經濟的到來和市場競爭越來越激烈,客戶對企業要求越來越高,需求呈現多樣化、個性化、差異化。在當前激烈的市場競爭環境下,市場的競爭已經從產品的競爭轉向了客戶資源的競爭[1]。因此,企業為了爭取最多的客戶,獲得最大利潤,就必須實施針對性的策略,進行“一對一營銷”,CRM正是達到這一目的的一個好的工具[2]。

通過實施CRM,一方面有助于規范企業管理,實現企業管理與業務運作的信息化和自動化。另一方面有助于整合企業的客戶資源,掌握客戶資源,制定合理的發展戰略和市場策略,提高企業競爭力。由此可見,通過實施CRM,既可以提高企業的工作效率和收益,同時能保持老客戶和發展新客戶,從而把握未來競爭的主動權[3]。

1系統框架設計

1.1 SSH的集成框架

SSH的集成框架通過整合Struts、Spring和Hiber? nate這三種框架,形成一種新的輕量型的J2EE架構,實現了MVC三層架構的軟件開發模式,用這架構可以實現高內聚、低耦合、易維護的分布式應用程序。

系統從職責上分為3層:表示層、業務邏輯層和數據持久層[3]。其中表示層主要負責提供界面實現與用戶的交互,采用Struts框架,實現了MVC的分離。業務邏輯層它管理著具體的業務對象和業務操作,采用Spring框架,Spring有成熟的事務管理和依賴注入機制,能很好整合Struts和Hibernate。數據持久層利用Hibernate框架完成數據持久化操作。其具體的架構圖如圖1所示。

圖1 SSH架構圖

1.2 SSH集成框架工作流程

首先JSP頁面提交請求給Struts2的ActionServlet核心控制器,核心控制器根據配置文件Struts-config.xml找到相應的Action,然后調用業務處理需要使用的Spring的bean,Spring的bean中提供相應的Java EE服務,在bean中調用數據持久層的DAO對象進行數據庫的操作,接著把操作結果數據返回給Action,最后由Action決定數據發回給相應的JSP頁面。

2系統實現

2.1系統功能介紹

根據公司對客戶管理的需要,該系統能把客戶基本信息、聯系人相關信息、交往記錄和客戶服務記錄等信息,實現規范化管理并共享;能通過分析銷售機會和客戶開發過程的記錄,為開發新客戶提供幫助;系統能根據客戶的信息和交往記錄,在客戶將要流失前及時告知銷售人員,采取措施挽回客戶。系統能提供相關報表給公司領導分析了解公司客戶情況。

系統功能劃分成了營銷管理、客戶管理、服務管理、統計報表、基礎數據和權限管理等六個模塊,系統功能設計如圖2所示。

圖2系統功能設計

2.2系統功能實現

客戶關系管理系統以MyEclipse 7.0為開發工具,以Microsoft SQL Server 2005作為數據庫,Web服務器服務器為Tomcat6.0,采用SSH集成框架開發。由于系統的模塊較多,下面以一個以用戶登錄功能為例詳細說明系統的開發實現過程,并將按照持久層、邏輯層、表示層和框架整合的順序說明系統構建過程。

2.2.1持久層的實現

1)實現Hibernate建模

在Eclipse中運用HibernateTools從數據庫中生成java持久化對象模型和hbm映射文件hibernate.cfg.xml,并且將它的路徑添加到應用的類路徑中完成Hibernate的配置,該配置文件由Hibernate用來連接到數據庫、生成模式和獲得其它特定數據庫信息的屬性組成[4]。

2)生成java持久化對象模型和hbm映射文件

使用Hibernate代碼生成工具把數據庫中的表映射為java類,列映射為java類的屬性。同時,生成hibernate.hbm.xml文件,該文件實現對象和數據庫之間的映射。

3)編寫數據訪問類通用DAO類接口:

public interface CommonDAO {

public List list(String sql);//查詢方法

}

通用實現類CommonDAOHibImpl繼承了HibernateDaoSupport類,實現了通用DAO類接口CommonDAO中的查詢方法,代碼如下:

public List list(String hql){ //查詢方法

List ret = super.getHibernateTemplate().find(hql);

return ret;

}

2.2.2邏輯層的實現

邏輯層主要負責具體的業務邏輯處理、執行應用邏輯、執行向持久層的調用、獲得從用戶接口層的請求、處理事務和處理異常 等功能。這些功能由Spring的IOC、AOP應用、面向接口編程來實現,業務的管理采用spring配置的方式。

1)配置Spring上下文applicationContext.xml

該文件是整個框架的核心,Spring通過它實現程序中的依賴的關系并管理各組件,同時業務方法實現事務管理。在該文件中指出UserAction依賴于UserBiz,UserBiz依賴于CommonDAOHibImpl,CommonDAOHibImpl依賴于SessionFactory,SessionFactory依賴于DataSource,如圖3所示。

圖3各組件的依賴關系

2)業務邏輯代碼

編寫UserAction類和UserBiz類,2個類的實例都由Spring在運行期間“設值注入”方式動態注入。

2.2.3表現層的實現

利用Struts標簽和Html語言建立用戶登錄的JSP文件,實現與用戶的交互。用戶通過登錄頁面輸入登錄信息,根據Struts的相關配置把登錄請求轉到Action處理。

2.2.4三個框架的整合實現

1) Spring與Hibernate整合實現

①在web.xml中配置spring監聽器來啟動Spring,配置contextConfigLocation參數為applicationContext.xml文件的路徑和listen? er-class類為ContextLoaderListener。監聽器通過初始化參數contextConfigLocation找到配置文件applicationContext.xml并加載Con? textLoaderListener。

②在applicationContext.xml文件中配置數據源和SessionFactory,使用Spring提供的LocalSessionFactoryBean,傳入一個Hibernaet配置文件的配置。

2) Spring與Struts的整合實現

利用Struts框架開發的WEB應用程序,由控制器組件Action調用業務邏輯組件,業務邏輯組件由Spring IoC來管理,是通過Spring的DelegatingRequestProcessor截獲頁面層的請求來完成的[5]。

①在struts-config.xml配置插件

在struts-config.xml中配置Spring中的ContextLoaderPlugin類,把Spring配置文件的位置告知插件。

②修改Action Bean配置,在Struts配置文件中Action類別都配置為“org.springframework.web.struts.DelegatingRequestProcessor”,ActionServlet通過RequestProcessor來完成實際的請求轉發。

③配置Struts中的Action,把Struts配置文件中配置Actionr的name改為id屬性,name屬性的值應與struts-config.xml中配置的Action的path屬性的值相同,這樣系統即會自動通過Spring來管理Action[5]。

3結束語

本文通過整合Struts、Spring、Hibernate三個開源框架,形成了SSH通用框構。實踐證明,該框構充分發揮了Struts、Spring和Hi? bernate框架各自的優勢,降低了各層間的耦合度,避免了許多重復性的工作,從而提高了開發的效率和系統的質量。通過應用這個通用框構開發的客戶關系管理系統,在公司使用一年后,運行良好,公司比較滿意,為該公司的客戶管理做出了一定的貢獻。

參考文獻:

[1]陶紅玉.基于WEB的客戶關系管理系統的研究與實現[D].北京:華北電力大學,2009.

[2]楊帥.基于SSH的CRM系統的研究和設計[D].重慶:重慶交通大學,2009.

[3]王淵,懷自國,羅怡桂.基于Ext+Spring+Hibernate的Web系統開發架構的研究與應用[J].計算機與現代化,2009(12):78-81.

相關期刊更多

核農學報

北大期刊 審核時間1-3個月

農業農村部

健康之路

省級期刊 審核時間1個月內

廣東省科學技術協會

臨床腫瘤學

統計源期刊 審核時間1-3個月

無錫聯勤保障中心衛勤處

主站蜘蛛池模板: 专栏| 慈溪市| 师宗县| 霍城县| 新郑市| 即墨市| 建湖县| 清原| 拉萨市| 正宁县| 商南县| 封开县| 黎川县| 白城市| 棋牌| 肇庆市| 丰台区| 彭州市| 福建省| 尼勒克县| 陆丰市| 青神县| 乾安县| 玉山县| 黄平县| 讷河市| 南江县| 牙克石市| 乐至县| 津南区| 京山县| 响水县| 淄博市| 双峰县| 葵青区| 长海县| 洛阳市| 海南省| 台湾省| 科技| 辽阳县|