锘??xml version="1.0" encoding="utf-8" standalone="yes"?> <beans>
聽聽寤虹珛涓涓暟鎹簮
聽 寤虹珛浼氳瘽宸ュ巶綾伙紝榪欎釜綾諱嬌鐢╯pring涓撻棬涓篽ibernate3鎻愪緵LocalSessionFactoryBean
聽聽聽 瀹氫箟浜嬪姟綆$悊鍣紝榪欎釜涔熸槸 spring涓撻棬涓篽ibernate3鎻愪緵鐨凥ibernateTransactionManager 浜嬪姟綆$悊鍣?br />聽<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
聽瀹氫箟瀹炰綋DAO
聽涓轟笂闈㈢殑瀹炰綋DAO瀹氫箟涓涓唬鐞?proxy)綾伙紝榪欐槸spring涓鴻В鍐充簨鍔¢棶棰樿屾彁渚汿ransactionProxyFactoryBean鍔ㄦ佷簨鍔′唬鐞嗙被
聽聽涓?path="/login"聽鐨剆truts action 瀹氫箟瀹為檯鐨刟ction綾?璇ction聽宸茬粡榪涜聽type="org.springframework.web.struts.DelegatingActionProxy"璁劇疆
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "
聽<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
聽 <property name="driverClassName">
聽聽 <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
聽 </property>
聽 <property name="url">
聽聽 <value>jdbc:microsoft:sqlserver://192.168.0.6:1433</value>
聽 </property>
聽 <property name="username">
聽聽 <value>sa</value>
聽 </property>
聽 <property name="password">
聽聽 <value></value>
聽 </property>
聽</bean>
聽
聽<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
聽 <property name="dataSource">
聽聽 <ref local="dataSource" />聽 --寮曠敤涓婇潰鐨勬暟鎹簮
聽 </property>
聽 <property name="mappingResources">聽 --璋冨叆鏄犲皠鏂囨。
聽聽 <list>
聽聽聽 <value>com/yourcompany/User.hbm.xml</value>聽
聽聽 </list>
聽 </property>
聽 <property name="hibernateProperties">聽 --鐩稿叧璁劇疆
聽聽 <props>
聽聽聽 <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
聽聽聽 <prop key="hibernate.show_sql">true</prop>
聽聽 </props>
聽 </property>
聽</bean>
聽聽
聽 <property name="sessionFactory">
聽聽 <ref local="sessionFactory" />聽聽 --寮曠敤浼氳瘽宸ュ巶綾?br />聽 </property>
聽</bean>
聽<bean id="userDAO" class="com.yourcompany.UserDAOImp">
聽 <property name="sessionFactory">
聽聽 <ref local="sessionFactory" />--寮曠敤浼氳瘽宸ュ巶綾?/font>
聽 </property>
聽</bean>
聽
聽<bean id="userDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
聽 <property name="transactionManager">
聽聽 <ref bean="transactionManager" />聽 --鎸囧畾浜嬪姟綆$悊鍣?闇瑕佹槸spring涓撶敤鐨?
聽 </property>
聽 <property name="target"> --鐩爣瀹炰綋DAO綾?/font>
聽聽 <ref local="userDAO" />
聽 </property>
聽 <property name="transactionAttributes"> --瀹氫箟瑕佷嬌鐢ㄤ簨鍔$殑鏂規硶
聽聽 <props>
聽聽聽 <prop key="insert*">PROPAGATION_REQUIRED</prop>聽 --鎵鏈塱nsert寮澶寸殑鏂規硶閮戒嬌鐢ㄤ簨鍔★紝鍑洪敊瑕佸洖婊?/font>
聽聽聽 <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop> --鎵鏈塯et寮澶寸殑鏂規硶閮戒嬌鐢ㄥ彧璇諱簨鍔?br />聽聽聽 <prop key="is*">PROPAGATION_REQUIRED,readOnly</prop>--鎵鏈塱st寮澶寸殑鏂規硶閮戒嬌鐢ㄥ彧璇諱簨鍔?/font>
聽聽 </props>
聽 </property>
聽</bean>
聽 <bean name="/login" class="com.yourcompany.struts.action.LoginAction" singleton="false">
聽聽聽 <property name="userDAO">
聽聽聽 <ref bean="userDAOProxy" />聽 --娉ㄦ剰錛岃繖閲屾寚瀹氱殑userDAO鏄笂闈㈠畾涔夌殑浠g悊綾?br />聽 </property>
聽</bean>
</beans>聽
]]>
line-height: 1.5em;
font-weight: bold;
font-style: italic;
font-variant: small-caps;
font-family: verdana,serif;
浜嬪疄涓婁綘鍙互綆鍐欒繖浜涘睘鎬э細
font: 1em/1.5em bold italic small-caps verdana,serif
鐜板湪濂藉浜嗗惂錛屼笉榪囨湁涓鐐硅娉ㄦ剰錛氫嬌鐢ㄨ繖涓綆鍐欐柟寮忎綘鑷沖皯瑕佹寚瀹歠ont-size鍜宖ont-family灞炴э紝鍏朵粬鐨勫睘鎬э紙濡俧ont-weight, font-style,font-varient錛夊鏈寚瀹氬皢鑷姩浣跨敤榛樿鍊箋?br />
2.鍚屾椂浣跨敤涓や釜class
閫氬父鎴戜滑鍙負灞炴ф寚瀹氫竴涓猚lass,浣嗚繖騫朵笉絳変簬浣犲彧鑳芥寚瀹氫竴涓紝瀹為檯涓婏紝浣犳兂鎸囧畾澶氬皯灝卞彲浠ユ寚瀹氬灝戯紝渚嬪錛?br /><p class="text side">...</p>
閫氳繃鍚屾椂浣跨敤涓や釜class錛堜嬌鐢ㄧ┖鏍艱屼笉鏄楀彿鍒嗗壊錛?榪欎釜孌佃惤灝嗗悓鏃跺簲鐢ㄤ袱涓猚lass涓埗瀹氱殑瑙勫垯銆傚鏋滀袱鑰呬腑鏈変換浣曡鍒欓噸鍙狅紝閭d箞鍚庝竴涓皢鑾峰緱瀹為檯鐨勪紭鍏堝簲鐢ㄣ?br />
3.css涓竟妗嗭紙border)鐨勯粯璁ゅ?br />褰撶紪鍐欎竴鏉¤竟妗嗙殑瑙勫垯鏃訛紝浣犻氬父浼氭寚瀹氶鑹層佸搴︿互鍙婃牱寮忥紙浠諱綍欏哄簭鍧囧彲錛夈備緥濡傦細border: 3px solid #000錛?鍍忕礌瀹界殑榛戣壊瀹炵嚎杈規錛夛紝鍏跺疄榪欎釜渚嬪瓙涓敮涓闇瑕佹寚瀹氱殑鍊煎彧鏄牱寮忋傚亣濡備綘鎸囧畾鏍峰紡涓哄疄綰匡紙solid),閭d箞鍏朵綑鐨勫煎皢浣跨敤榛樿鍊鹼細榛樿鐨勫搴︿負涓瓑錛堢浉褰撲簬3鍒?鍍忕礌錛夛紱榛樿鐨勯鑹蹭負杈規閲岀殑鏂囧瓧棰滆壊銆傚鏋滆繖姝f槸浣犳兂瑕佺殑鏁堟灉錛屼綘瀹屽叏鍙互涓嶅湪css閲屾寚瀹氥?br />
4.!important浼氳IE蹇界暐
鍦╟ss涓紝閫氬父鏈鍚庢寚瀹氱殑瑙勫垯浼氳幏寰椾紭鍏堟潈銆傜劧鑰屽闄や簡IE浠ュ鐨勬祻瑙堝櫒鏉ヨ錛屼換浣曞悗闈㈡爣鏈?important鐨勮鍙ュ皢鑾峰緱緇濆鐨勪紭鍏堟潈錛屼緥濡傦細
margin-top: 3.5em !important; margin-top: 2em
闄E浠ュ鎵鏈夋祻瑙堝櫒涓殑欏墮儴杈圭晫閮芥槸3.5em錛岃孖E涓?em錛屾湁鏃跺欒繖涓鐐瑰緢鏈夌敤錛屽挨鍏跺湪浣跨敤鐩稿杈圭晫鍊兼椂錛堝氨鍍忚繖涓緥瀛愶級錛屽彲浠ユ樉紺哄嚭IE涓庡叾浠栨祻瑙堝櫒鐨勭粏寰樊鍒?br />錛堝緢澶氫漢鍙兘榪樻敞鎰忓埌浜哻ss鐨勫瓙閫夋嫨鍣ㄤ篃鏄細琚獻E蹇界暐鐨勶級
5.鍥劇墖鏇挎崲鐨勬妧宸?br />浣跨敤鏍囧噯鐨刪tml鑰屼笉鏄浘鐗囨潵鏄劇ず鏂囧瓧閫氬父鏇翠負鏄庢櫤錛岄櫎浜嗗姞蹇笅杞借繕鍙互鑾峰緱鏇村ソ鐨勫彲鐢ㄦс備絾鏄鏋滀綘鍐沖績浣跨敤璁塊棶鑰呯殑鏈哄櫒涓彲鑳芥病鏈夌殑瀛椾綋鏃訛紝浣犲彧鑳介夋嫨鍥劇墖銆?br />涓句緥鏉ヨ錛屼綘鎯沖湪姣忎竴欏電殑欏墮儴浣跨敤鈥淏uy widgets鈥濈殑鏍囬錛屼絾浣犲悓鏃跺張甯屾湜榪欐槸鑳借鎼滅儲寮曟搸鍙戠幇鐨勶紝涓轟簡緹庤浣犱嬌鐢ㄤ簡灝戣鐨勫瓧浣撻偅涔堜綘灝卞緱鐢ㄥ浘鐗囨潵鏄劇ず浜嗭細
<h1><img src="widget-image.gif" alt="Buy widgets" /></h1>
榪欐牱褰撶劧娌¢敊錛屼絾鏄湁璇佹嵁鏄劇ず鎼滅儲寮曟搸瀵圭湡瀹炴枃鏈殑閲嶈榪滆秴榪嘺lt鏂囨湰錛堝洜涓哄凡緇忔湁澶緗戠珯浣跨敤alt鏂囨湰鍏呭綋鍏抽敭瀛楋級錛屽洜姝わ紝鎴戜滑寰楃敤鍙︿竴縐嶆柟娉曪細 <h1><span>Buy widgets</span></h1> 錛岄偅浣犵殑婕備寒瀛椾綋鎬庝箞鍔炲憿錛熶笅闈㈢殑css鍙互甯笂蹇欙細
h1
{
background: url(widget-image.gif) no-repeat;
}
h1 span
{
position: absolute;
left:-2000px;
}
鐜板湪浣犳棦鐢ㄤ笂浜嗘紓浜殑鍥劇墖鍙堝緢濂界殑闅愯棌浜嗙湡瀹炴枃鏈斺斿熷姪css錛屾枃鏈瀹氫綅浜庡睆騫曞乏渚?2000鍍忕礌澶勩?br />
6.css鐩掓ā鍨媓ack鐨勫彟涓閫夋嫨
css鐩掓ā鍨媓ack琚敤鏉ヨВ鍐矷E6涔嬪墠鐨勬祻瑙堝櫒鏄劇ず闂錛孖E6.0涔嬪墠鐨勭増鏈細鎶婃煇鍏冪礌鐨勮竟妗嗗煎拰濉厖鍊煎寘鍚湪瀹藉害涔嬪唴錛堣屼笉鏄姞鍦ㄥ搴﹀間笂錛夈備緥濡傦紝浣犲彲鑳戒細浣跨敤浠ヤ笅css鏉ユ寚瀹氭煇涓鍣ㄧ殑灝哄錛?br />#box
{
width: 100px;
border: 5px;
padding: 20px;
}
鐒跺悗鍦╤tml涓簲鐢細<div id="box">...</div>
鐩掔殑鎬誨搴﹀湪鍑犱箮鎵鏈夋祻瑙堝櫒涓負150鍍忕礌錛?00鍍忕礌瀹藉害+涓ゆ潯5鍍忕礌鐨勮竟妗?涓や釜20鍍忕礌鐨勫~鍏咃級錛屽敮鐙湪IE6涔嬪墠鐗堟湰鐨勬祻瑙堝櫒涓粛鐒朵負100鍍忕礌錛堣竟妗嗗煎拰濉厖鍊煎寘鍚湪瀹藉害鍊間腑錛夛紝鐩掓ā鍨嬬殑hack姝f槸涓轟簡瑙e喅榪欎竴闂錛屼絾鏄篃浼氬甫鏉ラ夯鐑︺傛洿綆鍗曠殑鍔炴硶濡備笅錛?br />css:
#box
{
width: 150px;
}
#box div {
border: 5px;
padding: 20px;
}
html:
<div id="box"><div>...</div></div>
榪欐牱涓鏉ュ湪浠諱綍嫻忚鍣ㄤ腑鐩掔殑鎬誨搴﹂兘灝嗘槸150鍍忕礌銆?br />
7.灝嗗潡鍏冪礌灞呬腑
鍋囪浣犵殑緗戠珯浣跨敤浜嗗浐瀹氬搴︾殑甯冨眬錛屾墍鏈夌殑鍐呭緗簬灞忓箷涓ぎ錛屽彲浠ヤ嬌鐢ㄤ互涓嬬殑css錛?br />#content
{
width: 700px;
margin: 0 auto;
}
浣犲彲浠ユ妸html鐨刡ody涔嬪唴浠諱綍欏圭洰緗簬<div id="content"></div>涓紝璇ラ」鐩皢鑷姩鑾峰緱鐩哥瓑鐨勫乏鍙寵竟鐣屽間粠鑰屼繚璇佷簡灞呬腑鏄劇ず銆備笉榪囷紝榪欏湪IE6涔嬪墠鐗堟湰鐨勬祻瑙堝櫒涓粛鐒舵湁闂錛屽皢涓嶄細灞呬腑錛屽洜姝ゅ繀欏諱慨鏀瑰涓嬶細
body
{
text-align: center;
}
#content
{
text-align: left;
width: 700px;
margin: 0 auto;
}
瀵筨ody鐨勮瀹氬皢瀵艱嚧涓諱綋鍐呭灞呬腑錛屼絾鏄繛鎵鏈夌殑鏂囧瓧涔熷眳涓簡錛岃繖鎭愭曚笉鏄綘鎯寵鐨勬晥鏋滐紝涓烘#content 鐨刣iv榪樿鎸囧畾涓涓鹼細text-align: left
8.浣跨敤css瀹炵幇鍨傜洿灞呬腑
鍨傜洿灞呬腑瀵硅〃鏍兼潵璇存槸灝忚彍涓紕燂紝鍙渶鎸囧畾鍗曞厓鏍間負vertical-align: middle鍗沖彲錛屼絾榪欏湪css甯冨眬涓笉綆$敤銆傚亣璁句綘灝嗕竴涓鑸彍鍗曠殑楂樺害璁句負2em錛岀劧鍚庡湪css涓寚瀹氬瀭鐩村榻愮殑瑙勫垯錛屾枃瀛楄繕鏄細琚帓鍒扮洅鐨勯《閮紝鏍規湰娌℃湁浠涔堝尯鍒?br />瑕佽В鍐寵繖涓闂錛屽彧闇灝嗙洅鐨勮楂樿涓轟笌鐩掔殑楂樺害鐩稿悓鍗沖彲錛屼互榪欎釜渚嬪瓙鏉ヨ錛岀洅楂?em,閭d箞鍙渶鍦╟ss涓啀鍔犲叆涓鏉★細line-height: 2em 灝卞彲瀹炵幇鍨傜洿灞呬腑浜嗭紒
9. 瀹瑰櫒鍐呯殑css瀹氫綅
css鐨勬渶澶т紭鐐逛箣涓灝辨槸鍙互灝嗗璞″畾浣嶅湪鏂囨。鐨勪換浣曚綅緗紝鍚屾牱鐨勪篃鍙互灝嗗璞″湪鏌愬鍣ㄥ唴榪涜瀹氫綅銆傚彧闇瑕佷負璇ュ鍣ㄦ坊鍔犱竴鏉ss瑙勫垯錛?br />#container
{
position: relative;
}
鍒欏鍣ㄥ唴鐨勪換浣曞厓绱犵殑瀹氫綅閮芥槸鐩稿浜庤瀹瑰櫒鐨勩傚亣瀹氫綘浣跨敤浠ヤ笅html緇撴瀯錛?br /><div id="container"><div id="navigation">...</div></div>
濡傛灉鎯沖皢navigation瀹氫綅鍦ㄥ鍣ㄥ唴紱誨乏杈圭晫30鍍忕礌錛岀欏墮儴5鍍忕礌錛屽彲浠ヤ嬌鐢ㄤ互涓媍ss璇彞錛?br />#navigation
{
position: absolute;
left: 30px;
top: 5px;
}
10.寤朵幾鑷沖睆騫曞簳閮ㄧ殑鑳屾櫙鑹?br />css鐨勭己鐐逛箣涓鏄己涔忓瀭鐩存柟鍚戠殑鎺у埗錛屼粠鑰屽鑷翠簡涓涓〃鏍煎竷灞涓嶄細閬囧埌鐨勯棶棰樸傚亣璁句綘鍦ㄩ〉闈㈢殑宸︿晶璁懼畾浜嗕竴鍒楃敤浜庢斁緗綉绔欑殑瀵艱埅銆傞〉闈負鐧借壊鑳屾櫙錛屼絾浣犲笇鏈涘鑸墍鍦ㄧ殑鍒椾負钃濊壊鑳屾櫙錛屼嬌鐢ㄤ互涓媍ss鍗沖彲錛?br />#navigation
{
background: blue;
width: 150px;
}
闂鍦ㄤ簬瀵艱埅欏逛笉浼氫竴鐩村歡浼稿埌欏甸潰鐨勫簳閮紝鑷劧瀹冪殑鑳屾櫙鑹蹭篃涓嶄細寤朵幾鍒板簳閮ㄣ備簬鏄乏鍒楃殑钃濊壊鑳屾櫙鍦ㄩ〉闈笂琚崐璺埅鏂紝嫻垂浜嗕綘鐨勪竴鐣璁°傛庝箞鍔炲憿錛熷緢涓嶅垢鎴戜滑鐜板湪鍙兘鐢ㄦ楠楃殑鍔炴硶錛屽嵆灝哹ody鐨勮儗鏅寚瀹氫負涓庡乏鍒楀悓棰滆壊鍚屽搴︾殑鍥劇墖錛宑ss濡備笅錛?br />body
{
background: url(blue-image.gif) 0 0 repeat-y;
}
鑳屾櫙鍥懼簲涓哄150鍍忕礌鐨勮摑鑹插浘鐗囥傝繖涓鍔炴硶鐨勭己鐐規槸娌℃硶浣跨敤em鏉ユ寚瀹氬乏鍒楃殑瀹藉害錛屽綋鐢ㄦ埛鏀瑰彉鏂囧瓧鐨勫ぇ灝忓鑷村唴瀹圭殑瀹藉害鎵╁紶鏃訛紝鑳屾櫙鑹茬殑瀹藉害涓嶄細闅忎箣鏀瑰彉銆?br />鍒板啓榪欑瘒鏂囩珷涓烘榪欐槸瀵硅繖綾婚棶棰樼殑鍞竴瑙e喅鍔炴硶錛屽洜姝や綘鍙兘涓哄乏鍒椾嬌鐢ㄥ儚绱犲兼潵鑾峰緱鑳藉鑷姩寤朵幾鐨勪笉鍚岀殑鑳屾櫙鑹層?img src ="http://m.tkk7.com/zhangrenquan/aggbug/62163.html" width = "1" height = "1" />
]]>
Hibernate涓殑ThreadLocal 杞澆鍦板潃錛?A >http://blog.blogchina.com/refer.393753.html
Hibernate鐨勬枃妗f椂鐪嬪埌浜嗗叧浜庝嬌ThreadLocal綆$悊澶氱嚎紼嬭闂殑閮ㄥ垎銆傚叿浣撲唬鐮佸涓?
1. public static final ThreadLocal session = new ThreadLocal();
2. public static Session currentSession() {
3. Session s = (Session)session.get();
4. //open a new session,if this session has none
5. if(s == null){
6. s = sessionFactory.openSession();
7. session.set(s);
8. }
return s;
9. }
鎴戜滑閫愯鍒嗘瀽
1銆?鍒濆鍖栦竴涓猅hreadLocal瀵硅薄錛孴hreadLocal鏈変笁涓垚鍛樻柟娉?get()銆乻et()銆乮nitialvalue()銆?
濡傛灉涓嶅垵濮嬪寲initialvalue錛屽垯initialvalue榪斿洖null銆?
3銆俿ession鐨刧et鏍規嵁褰撳墠綰跨▼榪斿洖鍏跺搴旂殑綰跨▼鍐呴儴鍙橀噺錛屼篃灝辨槸鎴戜滑闇瑕佺殑net.sf.hibernate.Session錛堢浉褰撲簬瀵瑰簲姣忎釜鏁版嵁搴撹繛鎺ワ級.澶氱嚎紼嬫儏鍐典笅鍏變韓鏁版嵁搴撻摼鎺ユ槸涓嶅畨鍏ㄧ殑銆俆hreadLocal淇濊瘉浜嗘瘡涓嚎紼嬮兘鏈夎嚜宸辯殑s錛堟暟鎹簱榪炴帴錛夈?
5銆傚鏋滄槸璇ョ嚎紼嬪垵嬈¤闂紝鑷劧錛宻錛堟暟鎹簱榪炴帴錛変細鏄痭ull錛屾帴鐫鍒涘緩涓涓猄ession錛屽叿浣撳氨鏄6銆?
6銆傚垱寤轟竴涓暟鎹簱榪炴帴瀹炰緥 s
7銆備繚瀛樿鏁版嵁搴撹繛鎺鍒癟hreadLocal涓?
8銆傚鏋滃綋鍓嶇嚎紼嬪凡緇忚闂繃鏁版嵁搴撲簡錛屽垯浠巗ession涓璯et()灝卞彲浠ヨ幏鍙栬綰跨▼涓婃鑾峰彇榪囩殑榪炴帴瀹炰緥銆?
閫氳繃ThreadLocal錛屾垜浠棦瀹炵幇浜嗗綰跨▼騫跺彂錛屽悓鏃訛紝涔熷疄鐜頒簡SingleTon妯″紡銆備竴涓句袱寰椼?/P>