ssh框架的一種實現方式

2021-05-09 04:48:03 字數 4005 閱讀 4420

公司使用的是

ssh框架,用**生成工具生成從

dao到

service

的所有**和配置檔案,使用

spring

框架對hibernate

進行事務管理,

struts

自己管理自己的元件,

spring

管理從service到vo

物件的元件,在

struts

的action

通過來獲取

spring

管理的bean

物件,事務管理在

service

層進行,通過定義乙個抽象的事務模板讓

service

物件繼承來實現,同時,將

hibernate

的session

繫結到web

的每個request

執行緒中,整個

request

的生命週期中都可見,需要注意的是此處

hibernate

的session

預設使用的是

flushnever

模式,即該

session

永遠不會執行

flush

,具體的事務控制都在

service

層進行,在

service

層呼叫的時候該

session

會被臨時設定成自動

flush

模式,呼叫完後又會被設定成

neverflush

模式。

具體內容如下:

一,

struts配置

struts

配置和一般的配置沒有多少區別,不同的是為了實現按模組配置

struts

將配置檔案拆分成幾個配置檔案,因此,在配置

actionservlet

時為他配置了乙個初始化引數

configlocation

,如下

action

config

/web-inf/config/struts/struts-config.xml

configlocation

/web-inf/config/struts

2 /web-inf/config/struts

目錄下面放置的是被按模組拆分後的多個

struts

配置檔案,為了能保證這些配置檔案能被

struts

的actionservlet

讀到,需要將他們追加到

actionservlet

的config

,**如下

protectedvoidinitother()throwsservletexception }

上面這段**的作用就是將在

configlocation

項中配置的目錄下的

struts

配置檔案的路徑追加到

config

,讓actionservlet

能夠根據這些配置檔案進行初始化。

由於該框架並沒有將

struts

的action

物件納入到

spring

的管理中,因此需要在

web。

xml中配置

spring

的webcontextlisteners

上下文***,並且需要在

webcontext

中配置spring

配置檔案路徑。具體配置如下:

配置上下文***

在struts

的action

中取得spring

的context

物件的**

配置spring

配置檔案路徑

contextconfiglocation

具體可參考

spring

手冊整合其他框架

-通用配置

15.2

spring

中hibernate

的配置

此處都是通用配置,看

spring

文件即可

spring

中抽象事務模板的配置

<

beanid=

"txproxytemplate"

abstract

="true"

class

="org.springframework.transaction.interceptor.transactionproxyfactorybean"

>

<

property

name

="transactionmanager"

ref="transactionmanager"

/>

<

property

name

="transactionattributes"

>

<

props

>

<

prop

key=

"query*"

>

propagation_supports,readonly

prop

>

<

prop

key=

"*" >

propagation_required

prop

>

props

>

property

>

bean

>

使用模板

<

beanid=

"sysloglogininfoservice"

parent

="txproxytemplate"

>

<

property

name

="target"

>

<

bean

class

="com.thunisoft.core.service.log.impl.sysloglogininfoserviceimpl"

autowire

="byname"

/>

property

>

bean

>

<

filter

>

<

filter-name

>

hibernatefilter

filter-name

>

<

filter-class

>

org .springframework .orm .hibernate3.support.opensessioninviewfilter

filter-class

>

filter

>

這裡需要補充一下,

jdk本身有自己的記憶體整理機制,使得一些不再被使用的記憶體物件整理能自動有效的進行,但是在

web環境下,有些物件會被註冊為上下文中的物件,這就導致即使這些物件不被使用了也不能被有效的清理,使用

introspectorcleanuplistener

的話能有效保證這樣物件也能被清理掉,從而提高能存的使用效率,具體配置如下:

<

listener

>

<

listener-class

>

org .springframework .web.util .introspectorcleanuplistener

listener-class

>

listener

>

attention的一種實現方式記錄

思想是當前資訊ht與前文多個資訊hs進行比對計算,得到對各個前文資訊hs應該有多少關注度,即at 利用at加權相應的hs,並累加所有加權後的前文資訊,得到綜合前文資訊ct,將其與當前資訊ht進行拼接組合進行 上述流程計算方式如下 這裡的注意力其實可以認為指的是at,因此需要關注at如何計算 上述公式...

OC Singleton的一種簡便實現方式

static dispatch queue t xml request operation processing queue return af xml request operation processing queue 通過dispatch once執行一次來保證af xml request o...

只有一種實現多執行緒的方式 ?

執行緒是實現多執行緒的基礎,本篇主要講解關於執行緒的兩個問題。1 為什麼說本質上只有一種實現多執行緒的方式?2 實現runnable的方式和繼承thread的方式哪種好?好在 為什麼說本質上只有一種實現多執行緒的方式?1 實現runnable介面的方式class runnableimpl runna...