锘??xml version="1.0" encoding="utf-8" standalone="yes"?> Tomcat 5.5 uses Commons Logging throughout its internal code allowing the developer to choose a logging configuration that suits their needs, e.g java.util.logging or Log4J. Commons Logging provides Tomcat the ability to log hierarchially across various log levels without needing to rely on a particular logging implementation. An important consequence for Tomcat 5.5 is that the <Logger> element found in previous versions to create a 涔犳儻鐢╨og4j鏉ラ厤緗甽og淇℃伅鐨勮緭鍑恒?/p>
鏂板緩log4j.properties錛屽唴瀹逛負 log4j.rootLogger=info,Console,R log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.R=org.apache.log4j.DailyRollingFileAppender log4j.logger.org.apache=info, R 鏈鍚庡洓琛屾槸tomcat鐨勪俊鎭紝濡傛灉鏀逛負debug鏃ュ織鏂囦歡灝嗗崄鍒嗗簽澶с?/p>
灝嗚繖涓枃浠舵斁鍏?{catalina.home}/common/classes涓嬶紝鍐嶅皢log4j.jar鍜宑ommons-logging.jar鏀懼叆${catalina.home}/common/lib涓嬶紝灝卞彲浠ュ湪${catalina.home}/logs/涓嬭鍒版棩蹇椾簡銆?/p>
1.鎻愪氦琛ㄥ崟 聽 聽 2.澶勭悊鏁版嵁 聽聽聽聽聽 褰撲竴涓姹傚彂閫佸埌servlet瀹瑰櫒鐨勬椂鍊欙紝瀹瑰櫒鍏堜細灝嗚姹傜殑url鍑忓幓褰撳墠搴旂敤涓婁笅鏂囩殑璺緞浣滀負servlet鐨勬槧灝?/span>url錛屾瘮濡傛垜璁塊棶鐨勬槸http://localhost/test/aaa.html錛屾垜鐨勫簲鐢ㄤ笂涓嬫枃鏄?/span>test錛屽鍣ㄤ細灝?/span>http://localhost/test鍘繪帀錛屽墿涓嬬殑/aaa.html閮ㄥ垎鎷挎潵鍋?/span>servlet鐨勬槧灝勫尮閰嶃傝繖涓槧灝勫尮閰嶈繃紼嬫槸鏈夐『搴忕殑錛岃屼笖褰撴湁涓涓?/span>servlet鍖歸厤鎴愬姛浠ュ悗錛屽氨涓嶄細鍘葷悊浼氬墿涓嬬殑servlet浜嗭紙filter涓嶅悓錛屽悗鏂囦細鎻愬埌錛夈傚叾鍖歸厤瑙勫垯鍜岄『搴忓涓嬶細 1.聽聽聽聽 綺劇‘璺緞鍖歸厤銆備緥瀛愶細姣斿servletA 鐨?/span>url-pattern涓?/span> /test錛?/span>servletB鐨?/span>url-pattern涓?/span>/* 錛岃繖涓椂鍊欙紝濡傛灉鎴戣闂殑url涓?/span>http://localhost/test錛岃繖涓椂鍊欏鍣ㄥ氨浼氬厛榪涜綺劇‘璺緞鍖歸厤錛屽彂鐜?/span>/test姝eソ琚?/span>servletA綺劇‘鍖歸厤錛岄偅涔堝氨鍘昏皟鐢?/span>servletA錛屼篃涓嶄細鍘葷悊浼氬叾浠栫殑servlet浜嗐?/span> 2.聽聽聽聽 鏈闀胯礬寰勫尮閰嶃備緥瀛愶細servletA鐨?/span>url-pattern涓?/span>/test/*錛岃?/span>servletB鐨?/span>url-pattern涓?/span>/test/a/*錛屾鏃惰闂?/span>http://localhost/test/a鏃訛紝瀹瑰櫒浼氶夋嫨璺緞鏈闀跨殑servlet鏉ュ尮閰嶏紝涔熷氨鏄繖閲岀殑servletB銆?/span> 3.聽聽聽聽 鎵╁睍鍖歸厤錛屽鏋?/span>url鏈鍚庝竴孌靛寘鍚墿灞曪紝瀹瑰櫒灝嗕細鏍規嵁鎵╁睍閫夋嫨鍚堥傜殑servlet銆備緥瀛愶細servletA鐨?/span>url-pattern錛?/span>*.action 4.聽聽聽聽 濡傛灉鍓嶉潰涓夋潯瑙勫垯閮芥病鏈夋壘鍒頒竴涓?/span>servlet錛屽鍣ㄤ細鏍規嵁url閫夋嫨瀵瑰簲鐨勮姹傝祫婧愩傚鏋滃簲鐢ㄥ畾涔変簡涓涓?/span>default servlet錛屽垯瀹瑰櫒浼氬皢璇鋒眰涓㈢粰default servlet錛堜粈涔堟槸default servlet錛熷悗闈細璁詫級銆?/span> 聽聽聽聽 鏍規嵁榪欎釜瑙勫垯琛紝灝辮兘寰堟竻妤氱殑鐭ラ亾servlet鐨勫尮閰嶈繃紼嬶紝鎵浠ュ畾涔?/span>servlet鐨勬椂鍊欎篃瑕佽冭檻url-pattern鐨勫啓娉曪紝浠ュ厤鍑洪敊銆?/span> 聽聽聽聽聽 瀵逛簬filter錛屼笉浼氬儚servlet閭f牱鍙尮閰嶄竴涓?/span>servlet錛屽洜涓?/span>filter鐨勯泦鍚堟槸涓涓摼錛屾墍浠ュ彧浼氭湁澶勭悊鐨勯『搴忎笉鍚岋紝鑰屼笉浼氬嚭鐜板彧閫夋嫨涓涓?/span>filter銆?/span>Filter鐨勫鐞嗛『搴忓拰filter-mapping鍦?/span>web.xml涓畾涔夌殑欏哄簭鐩稿悓銆?/span> 聽聽聽聽聽聽聽聽 鍦?/span>web.xml鏂囦歡涓紝浠ヤ笅璇硶鐢ㄤ簬瀹氫箟鏄犲皠錛?/span> l聽 浠?/span>鈥?鈥?/span>寮澶村拰浠?/span>鈥?*鈥?/span>緇撳熬鐨勬槸鐢ㄦ潵鍋氳礬寰勬槧灝勭殑銆?/span> l聽 浠ュ墠緙鈥?.鈥?/span>寮澶寸殑鏄敤鏉ュ仛鎵╁睍鏄犲皠鐨勩?/span> l聽 鈥?鈥?鏄敤鏉ュ畾涔?/span>default servlet鏄犲皠鐨勩?/span> l聽 鍓╀笅鐨勯兘鏄敤鏉ュ畾涔夎緇嗘槧灝勭殑銆傛瘮濡傦細 /aa/bb/cc.action 鎵浠ワ紝涓轟粈涔堝畾涔?/span>鈥?*.action鈥?/span>榪欐牱涓涓湅璧鋒潵寰堟甯哥殑鍖歸厤浼氶敊錛熷洜涓鴻繖涓尮閰嶅嵆灞炰簬璺緞鏄犲皠錛屼篃灞炰簬鎵╁睍鏄犲皠錛屽鑷村鍣ㄦ棤娉曞垽鏂?/span>
涓銆乻aveorUpdate涓巙nsaved-value
Project project = new Project(); 1銆侀粯璁nsaved-value="null" 2銆乽nsaved-value="none"錛? 3銆乽nsaved-value="any" Hibernate鏂囨。涓啓鍒?
2錛夛紟涓婚敭鐢辮嚜宸辨潵璧嬪?/b>
Project project = new Project(); 1銆侀粯璁nsaved-value="null" 3銆乽nsaved-value="any" 錛宻ave瀵硅薄錛?
浜屻乻ave涓巙pdate鎿嶄綔
Hibernate鏂囨。涓啓鍒?
涓夈乨elete鎿嶄綔
浠ュ墠鍒犻櫎鎴戞槸榪欐牱鍐欑殑 濡傛灉鏈夌駭鑱斿叧緋伙紝闇瑕佹妸綰ц仈鐨勫瓙綾諱篃鏋勯犲嚭鏉dd榪涘幓錛屽悓鏍峰彲浠ュ垹闄ゃ?/p>
濂戒簡錛岀綏鍡︾殑澶熷浜嗐?/p>
1銆侀亶鍘唚orkbook
2銆佸緱鍒板垪鍜屽崟鍏冩牸
3銆佽緗畇heet鍚嶇О鍜屽崟鍏冩牸鍐呭涓轟腑鏂?/b>
4銆佸崟鍏冩牸鍐呭鏈叕寮忔垨鏁板鹼紝鍙互榪欐牱璇誨啓
7銆佸父鐢ㄦ柟娉?/b>
铏氱嚎HSSFCellStyle.BORDER_DOTTED
]]>
]]>
]]>
Map鎺ュ彛錛?/strong>
|
+ -- WeakHashMap: 浠ュ急閿?瀹炵幇鐨勫熀浜庡搱甯岃〃鐨?Map銆傚湪 WeakHashMap 涓紝褰撴煇涓敭涓嶅啀姝e父浣跨敤鏃訛紝灝嗚嚜鍔ㄧЩ闄ゅ叾鏉?br> | 鐩傛洿綺劇‘鍦拌錛屽浜庝竴涓粰瀹氱殑閿紝鍏舵槧灝勭殑瀛樺湪騫朵笉闃繪鍨冨溇鍥炴敹鍣ㄥ璇ラ敭鐨勪涪寮冿紝榪欏氨浣胯閿垚涓哄彲緇堟鐨勶紝琚粓
| 姝紝鐒跺悗琚洖鏀躲備涪寮冩煇涓敭鏃訛紝鍏舵潯鐩粠鏄犲皠涓湁鏁堝湴縐婚櫎錛屽洜姝わ紝璇ョ被鐨勮涓轟笌鍏朵粬鐨?Map 瀹炵幇鏈夋墍涓嶅悓銆?font color=#ff0000>姝ゅ疄鐜?/font>
| 涓嶆槸鍚屾鐨勩?/font>
|
+ -- TreeMap:璇ユ槧灝勬牴鎹叾閿殑鑷劧欏哄簭榪涜鎺掑簭錛屾垨鑰呮牴鎹垱寤烘槧灝勬椂鎻愪緵鐨?Comparator 榪涜鎺掑簭錛屽叿浣撳彇鍐充簬浣跨敤鐨?br> | 鏋勯犳柟娉曘?font color=#ff0000>姝ゅ疄鐜頒笉鏄悓姝ョ殑銆?/font>
|
+ -- HashMap:鍩轟簬鍝堝笇琛ㄧ殑 Map 鎺ュ彛鐨勫疄鐜般傛瀹炵幇鎻愪緵鎵鏈夊彲閫夌殑鏄犲皠鎿嶄綔錛屽茍鍏佽浣跨敤 null 鍊煎拰 null 閿傦紙闄や簡
| 闈炲悓姝ュ拰鍏佽浣跨敤 null 涔嬪錛孒ashMap 綾諱笌 Hashtable 澶ц嚧鐩稿悓銆傦級姝ょ被涓嶄繚璇佹槧灝勭殑欏哄簭錛岀壒鍒槸瀹冧笉淇濊瘉璇ラ『
| 搴忔亽涔呬笉鍙樸?font color=#ff0000>姝ゅ疄鐜頒笉鏄悓姝ョ殑銆?br> |
+-- SortedMap: 榪涗竴姝ユ彁渚涘叧浜庨敭鐨勬諱綋鎺掑簭 鐨?Map銆傝鏄犲皠鏄牴鎹叾閿殑鑷劧欏哄簭榪涜鎺掑簭鐨勶紝鎴栬呮牴鎹氬父鍦ㄥ垱寤烘湁
搴忔槧灝勬椂鎻愪緵鐨?Comparator 榪涜鎺掑簭銆傚鏈夊簭鏄犲皠鐨?collection 瑙嗗浘錛堢敱 entrySet銆乲eySet 鍜?values 鏂規硶榪斿洖
錛夎繘琛岃凱浠f椂錛屾欏哄簭灝變細鍙嶆槧鍑烘潵銆傝閲囩敤姝ゆ帓搴忔柟寮忥紝榪橀渶瑕佹彁渚涗竴浜涘叾浠栨搷浣滐紙姝ゆ帴鍙f槸 SortedSet 鐨勫搴旀槧
灝勶級銆?br>
Collection鎺ュ彛錛?/strong>
|
+ -- Set鎺ュ彛:涓涓笉鍖呭惈閲嶅鍏冪礌鐨?collection銆傛洿姝e紡鍦拌錛宻et 涓嶅寘鍚弧瓚?e1.equals(e2) 鐨勫厓绱犲 e1 鍜?e2錛屽茍
| | 涓旀渶澶氬寘鍚竴涓?null 鍏冪礌銆傛濡傚叾鍚嶇О鎵鏆楃ず鐨勶紝姝ゆ帴鍙fā浠夸簡鏁板涓婄殑 set 鎶借薄銆?br> | |
| + -- HashSet:姝ょ被瀹炵幇 Set 鎺ュ彛錛岀敱鍝堝笇琛紙瀹為檯涓婃槸涓涓?HashMap 瀹炰緥錛夋敮鎸併傚畠涓嶄繚璇?set 鐨勮凱浠i『搴忥紱
| | 鐗瑰埆鏄畠涓嶄繚璇佽欏哄簭鎭掍箙涓嶅彉銆傛綾誨厑璁鎬嬌鐢?null 鍏冪礌銆傛綾諱負鍩烘湰鎿嶄綔鎻愪緵浜嗙ǔ瀹氭ц兘錛?font color=#ff0000>姝ゅ疄鐜頒笉鏄悓
| | 姝ョ殑銆?/font>
| |
| + -- LinkedHashSet:鍏鋒湁鍙鐭ヨ凱浠i『搴忕殑 Set 鎺ュ彛鐨勫搱甯岃〃鍜岄摼鎺ュ垪琛ㄥ疄鐜般傛瀹炵幇涓?HashSet 鐨勪笉鍚屼箣澶栧湪
| | 浜庯紝鍚庤呯淮鎶ょ潃涓涓繍琛屼簬鎵鏈夋潯鐩殑鍙岄噸閾炬帴鍒楄〃銆傛閾炬帴鍒楄〃瀹氫箟浜嗚凱浠i『搴忥紝鍗蟲寜鐓у皢鍏冪礌鎻掑叆鍒?set
| | 涓?鐨勯『搴忥紙鎻掑叆欏哄簭錛夎繘琛岃凱浠c傛敞鎰忥紝鎻掑叆欏哄簭涓?鍙楀湪 set 涓噸鏂版彃鍏ョ殑 鍏冪礌鐨勫獎鍝嶃?font color=#ff0000>姝ゅ疄鐜頒笉鏄悓姝?/font>
| | 鐨勩?
| |
| + -- TreeSet:鍩轟簬 TreeMap 鐨?NavigableSet 瀹炵幇銆備嬌鐢ㄥ厓绱犵殑鑷劧欏哄簭瀵瑰厓绱犺繘琛屾帓搴忥紝鎴栬呮牴鎹垱寤?set 鏃?br> | 鎻愪緵鐨?Comparator 榪涜鎺掑簭錛屽叿浣撳彇鍐充簬浣跨敤鐨勬瀯閫犳柟娉曘傛瀹炵幇涓哄熀鏈搷浣滐紙add銆乺emove 鍜?contains錛?br> | 鎻愪緵鍙椾繚璇佺殑 log(n) 鏃墮棿寮閿銆?font color=#ff0000>姝ゅ疄鐜頒笉鏄悓姝ョ殑銆?/font>
|
+ -- List鎺ュ彛:鏈夊簭鐨?collection錛堜篃縐頒負搴忓垪錛夈傛鎺ュ彛鐨勭敤鎴峰彲浠ュ鍒楄〃涓瘡涓厓绱犵殑鎻掑叆浣嶇疆榪涜綺劇‘鍦版帶鍒躲傜敤鎴?br> | 鍙互鏍規嵁鍏冪礌鐨勬暣鏁扮儲寮曪紙鍦ㄥ垪琛ㄤ腑鐨勪綅緗級璁塊棶鍏冪礌錛屽茍鎼滅儲鍒楄〃涓殑鍏冪礌銆?br> |
+ -- ArrayList:List 鎺ュ彛鐨勫ぇ灝忓彲鍙樻暟緇勭殑瀹炵幇銆傚疄鐜頒簡鎵鏈夊彲閫夊垪琛ㄦ搷浣滐紝騫跺厑璁稿寘鎷?null 鍦ㄥ唴鐨勬墍鏈夊厓绱犮?br> | 闄や簡瀹炵幇 List 鎺ュ彛澶栵紝姝ょ被榪樻彁渚涗竴浜涙柟娉曟潵鎿嶄綔鍐呴儴鐢ㄦ潵瀛樺偍鍒楄〃鐨勬暟緇勭殑澶у皬銆傦紙姝ょ被澶ц嚧涓婄瓑鍚屼簬
| Vector 綾伙紝闄や簡姝ょ被鏄笉鍚屾鐨勩傦級姣忎釜 ArrayList 瀹炰緥閮芥湁涓涓閲忋傝瀹歸噺鏄寚鐢ㄦ潵瀛樺偍鍒楄〃鍏冪礌鐨勬暟
| 緇勭殑澶у皬銆傚畠鎬繪槸鑷沖皯絳変簬鍒楄〃鐨勫ぇ灝忋傞殢鐫鍚?ArrayList 涓笉鏂坊鍔犲厓绱狅紝鍏跺閲忎篃鑷姩澧為暱銆傚茍鏈寚瀹氬
| 闀跨瓥鐣ョ殑緇嗚妭錛屽洜涓鴻繖涓嶅彧鏄坊鍔犲厓绱犱細甯︽潵鍒嗘憡鍥哄畾鏃墮棿寮閿閭f牱綆鍗曘?font color=#ff0000>姝ゅ疄鐜頒笉鏄悓姝ョ殑銆?/font>
|
+ -- LinkedList:List 鎺ュ彛鐨勯摼鎺ュ垪琛ㄥ疄鐜般傚疄鐜版墍鏈夊彲閫夌殑鍒楄〃鎿嶄綔錛屽茍涓斿厑璁告墍鏈夊厓绱狅紙鍖呮嫭 null錛夈傞櫎浜嗗疄
| 鐜?List 鎺ュ彛澶栵紝LinkedList 綾昏繕涓哄湪鍒楄〃鐨勫紑澶村強緇撳熬 get銆乺emove 鍜?insert 鍏冪礌鎻愪緵浜嗙粺涓鐨勫懡鍚嶆柟
| 娉曘傝繖浜涙搷浣滃厑璁稿皢閾炬帴鍒楄〃鐢ㄤ綔鍫嗘爤銆侀槦鍒楁垨鍙岀闃熷垪銆?font color=#ff0000>鎻愪緵鍏堣繘鍏堝嚭闃熷垪鎿嶄綔(FIFO)銆傛瀹炵幇涓嶆槸鍚屾鐨勩?/font>
|
+ -- Vector:Vector 綾誨彲浠ュ疄鐜板彲澧為暱鐨勫璞℃暟緇勩備笌鏁扮粍涓鏍鳳紝瀹冨寘鍚彲浠ヤ嬌鐢ㄦ暣鏁扮儲寮曡繘琛岃闂殑緇勪歡銆備絾鏄?br> 錛孷ector 鐨勫ぇ灝忓彲浠ユ牴鎹渶瑕佸澶ф垨緙╁皬錛屼互閫傚簲鍒涘緩 Vector 鍚庤繘琛屾坊鍔犳垨縐婚櫎欏圭殑鎿嶄綔銆?font color=#ff0000>姝ゅ疄鐜版槸鍚屾鐨?br> 銆?/font>
]]>localhost_log
is no longer a valid nested element of <Context>. Instead, the default Tomcat configuration will use java.util.logging. If the developer wishes to collect detailed internal Tomcat logging (i.e what is happening within the Tomcat engine), then they should configure a logging system such as java.util.logging or log4j as detailed next
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
#log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.Console.layout.ConversionPattern=%d{yy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
log4j.appender.R.File=${catalina.home}/logs/tomcat.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy.MM.dd HH:mm:ss} %5p %c{1}(%L):聽 %m%n
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=DEBUG, R
log4j.logger.org.apache.catalina.core=info, R
log4j.logger.org.apache.catalina.session=info, R
]]>
<html>
<body>
聽<form聽name
=
"
form
"
聽method
=
"
post
"
聽action
=
"
add.jsp
"
>
聽聽聽<input聽name
=
"
button
"
聽type
=
button聽onClick
=
'additem(
"
tb
"
)'聽value
=
"
娣誨姞>>
"
>
聽<table聽id
=
"
tb
"
>
聽</table>
<script聽language
=
"
javascript
"
>
function聽additem(id)
{
聽聽var聽row
,
cell
,
str
;
聽聽row聽
=
聽eval(
"
document.all[
"
+'
"
'+id+'
"
'+
"
]
"
).insertRow()
;
聽聽if(row聽!
=
聽null聽)
聽聽聽聽聽{
聽聽聽聽聽聽聽聽cell聽
=
聽row.insertCell()
;
聽聽聽聽聽聽聽聽str
=
"
<input聽type=
"
+'
"
'+
"
text
"
+'
"
'+
"
聽name=
"
+'
"
'+
"
StuName
"
+'
"
'+
"
><input聽type=
"
+'
"
'+
"
button
"
+'
"
'+
"
聽value=
"
+'
"
'+
"
鍒犻櫎
"
+'
"
'+
"
聽onclick='deleteitem(this,
"
+'
"
'+
"
tb
"
+'
"
'+
"
);'>
"
聽聽聽cell.innerHTML
=
str
;
聽聽聽聽聽聽}
}
function聽deleteitem(obj
,
id)
{
聽聽var聽rowNum
,
curRow
;
聽聽curRow聽
=
聽obj.parentNode.parentNode
;
聽聽rowNum聽
=
聽eval(
"
document.all.
"
+id).rows.length聽-聽
1
;
聽聽eval(
"
document.all[
"
+'
"
'+id+'
"
'+
"
]
"
).deleteRow(curRow.rowIndex)
;
}
</script>
聽聽聽<p>
聽聽聽聽聽<input聽type
=
"
submit
"
聽name
=
"
submit
"
聽value
=
"
鎻愪氦
"
>
聽聽聽</p>
聽</form>
</body>
</html>
<
body
>
<
table聽
border
="1"
><
tr
><
td聽
colspan
="2"
>
eg
</
td
></
tr
>
<%
Enumeration聽params
=
request.getParameterNames();
while
(params.hasMoreElements()){
String
聽name
=
(
String
)params.nextElement();
String
[]聽values
=
request.getParameterValues(name);
if
(name.equals(
"
StuName
"
)){
%>
<
tr
>
<
td
>
<%
=
name
%>
</
td
>
<
td
>
<%
for
(
int
聽index
=
0
;index
<
values.length;index
++
){
%>
<%
=
values[index]
%>
<%
}}
%>
</
td
>
</
tr
>
</
table
>
</
body
>
]]>聽聽聽 涓錛?/font>servlet瀹瑰櫒瀵?/span>url鐨勫尮閰嶈繃紼嬶細
聽聽聽 浜岋紝url-pattern璇﹁В
]]>
鍒板簳鏄痵ava榪樻槸update
Hibernate闇瑕佸垽鏂鎿嶄綔鐨勫璞$┒绔熸槸涓涓凡緇忔寔涔呭寲榪囩殑鎸佷箙瀵硅薄榪樻槸涓存椂瀵硅薄銆?
1錛夛紟涓婚敭Hibernate鐨刬d generator浜х敓
<id name="id" type="java.lang.Long">
<column name="ID" precision="22" scale="0" />
<generator class="increment" />
</id>
project.setId(XXX);
this.projectDao.saveOrUpdate(project);
涓婚敭鏄璞$被鍨嬶紝hebernate鍒ゆ柇project鐨勪富閿槸鍚︿綅null錛屾潵鍒ゆ柇project鏄惁宸茶鎸佷箙鍖?/b>
鏄殑璇濓紝瀵筽roject瀵硅薄鍙戦乻ave(project)錛?
鑻ヨ嚜宸辮緗簡涓婚敭鍒欑洿鎺ョ敓鎴恥pdate鐨剆ql錛屽彂閫乽pdate(project)錛屽嵆渚挎暟鎹簱閲屾病鏈夐偅鏉¤褰曘?
涓婚敭鏄熀鏈被鍨嬪int/long/double/
鑷繁璁劇疆unsaved-null="0"銆?
鎵浠ヨ繖鏍風殑璇漵ave鍜寀pdate鎿嶄綔鑲畾涓嶄細鎶ラ敊銆?/p>
鐢變簬涓嶈涓婚敭灞炴т負浠諱綍鍊鹼紝閮戒笉鍙兘涓簄one錛屽洜姝ibernate鎬繪槸瀵筽roject瀵硅薄鍙戦乽pdate(project)
鐢變簬涓嶈涓婚敭灞炴т負浠諱綍鍊鹼紝閮借偗瀹氫負any錛屽洜姝ibernate鎬繪槸瀵筽roject瀵硅薄鍙戦乻ave(project)錛宧ibernate鐢熸垚涓婚敭銆?/p>
saveOrUpdate()瀹屾垚浜嗗涓嬪伐浣滐細
濡傛灉瀵硅薄宸茬粡鍦ㄨ繖涓猻ession涓寔涔呭寲榪囦簡錛屼粈涔堥兘涓嶇敤鍋?
濡傛灉瀵硅薄娌℃湁鏍囪瘑鍊鹼紝璋冪敤save()鏉ヤ繚瀛樺畠
濡傛灉瀵硅薄鐨勬爣璇嗗間笌unsaved-value涓殑鏉′歡鍖歸厤錛岃皟鐢╯ave()鏉ヤ繚瀛樺畠
濡傛灉瀵硅薄浣跨敤浜嗙増鏈?version鎴杢imestamp),閭d箞闄ら潪璁劇疆unsaved-value="undefined",鐗堟湰媯鏌ヤ細鍙戠敓鍦ㄦ爣璇嗙媯鏌ヤ箣鍓?
濡傛灉榪欎釜session涓湁鍙﹀涓涓璞″叿鏈夊悓鏍風殑鏍囪瘑絎︼紝鎶涘嚭涓涓紓甯?
<id name="id" type="java.lang.Long">
<column name="ID" precision="22" scale="0" />
<generator class="assigned" />
</id>
project.setId(XXX);
this.projectDao.saveOrUpdate(project);
榪欐椂鏈夋墍涓嶅悓錛宧ibernate浼氭牴鎹富閿駭鐢熶竴涓猻elect錛屾潵鍒ゆ柇姝ゅ璞℃槸鍚﹀凡琚寔涔呭寲
宸茶鎸佷箙鍖栧垯update錛屾湭琚寔涔呭寲鍒檚ave銆?
2銆乽nsaved-value="none"錛寀pdate瀵硅薄錛屽悓涓?/p>
濡傛灉鑷繁鑷繁璁劇疆鐨処D鍦ㄦ暟鎹簱涓凡瀛樺湪錛屽垯鎶ラ敊銆?/p>
鏄懼紡鐨勪嬌鐢╯ession.save()鎴栬卻ession.update()鎿嶄綔涓涓璞$殑鏃跺欙紝瀹為檯涓婃槸鐢ㄤ笉鍒皍nsaved-value鐨?
鍦ㄥ悓涓Session錛宻ave娌′粈涔堝彲璇村緱
update瀵硅薄鏃? 鏈鐩存帴鐨勬洿鏀逛竴涓璞$殑鏂規硶灝辨槸load()瀹冿紝淇濇寔Session鎵撳紑錛岀劧鍚庣洿鎺ヤ慨鏀瑰嵆鍙?
Session s =鈥?
Project p = (Project) sess.load(Project.class, id) );
p.setName(鈥渢est鈥?;
s.flush();
涓嶇敤璋冪敤s.update(p);hibernate鑳藉療瑙夊埌瀹冪殑鍙樺寲錛屼細鑷姩鏇存柊銆傚綋鐒舵樉紺鴻皟鐢ㄧ殑璇濅篃涓嶄細閿?/p>
update()鏂規硶鍦ㄤ笅鍒楁儏褰笅浣跨敤錛?
紼嬪簭鍦ㄥ墠闈㈢殑session涓杞戒簡瀵硅薄
瀵硅薄琚紶閫掑埌UI錛堢晫闈級灞?
瀵硅瀵硅薄榪涜浜嗕竴浜涗慨鏀?
瀵硅薄琚紶閫掑洖涓氬姟灞?
搴旂敤紼嬪簭鍦ㄧ浜屼釜session涓皟鐢╱pdate()淇濆瓨淇敼
鍒犻櫎鏃剁洿鎺ヨ嚜宸辨瀯閫犱竴涓猵roject鍗沖彲鍒犻櫎
this.projectDao.delete(preojct);
public void deleteProject(String id) {
Project project = (Project) this.projectDao.get(Project.class, id);
if (project != null) {
this.projectDao.delete(project);
}
鍗寵繖鏍蜂篃鏄彲浠ョ殑
Project project = new Project();
project.setId(id);
this.projectDao.delete(project).
5銆佽緗垪瀹姐佽楂?/b>
6銆佹坊鍔犲尯鍩燂紝鍚堝茍鍗曞厓鏍?/b>
鏍規嵁鍗曞厓鏍間笉鍚屽睘鎬ц繑鍥炲瓧絎︿覆鏁板?
8銆佸父鐢ㄥ崟鍏冩牸杈規鏍煎紡
瀹炵嚎HSSFCellStyle.BORDER_THIN
9銆佽緗瓧浣撳拰鍐呭浣嶇疆
10銆佹彃鍏ュ浘鐗?/b>
璁哄潧閲岀湅鍒扮殑
]]>
Jakarta POI 鏄痑pache鐨勫瓙欏圭洰錛岀洰鏍囨槸澶勭悊ole2瀵硅薄銆傚畠鎻愪緵浜嗕竴緇勬搷綰礧indows鏂囨。鐨凧ava API
鐩墠姣旇緝鎴愮啛鐨勬槸HSSF鎺ュ彛錛屽鐞哅S Excel錛?7-2002錛夊璞°傚畠涓嶈薄鎴戜滑浠呬粎鏄敤csv鐢熸垚鐨勬病鏈夋牸寮忕殑鍙互鐢盓xcel杞崲鐨勪笢瑗匡紝鑰屾槸鐪熸鐨凟xcel瀵硅薄錛屼綘鍙互鎺у埗涓浜涘睘鎬уsheet,cell絳夌瓑銆?/font>
浜岋紟HSSF姒傚喌
HSSF 鏄疕orrible SpreadSheet Format鐨勭緝鍐欙紝涔熷嵆鈥滆鍘岀殑鐢靛瓙琛ㄦ牸鏍煎紡鈥濄備篃璁窰SSF鐨勫悕瀛楁湁鐐規粦紼斤紝灝辨湰璐ㄨ岃█瀹冩槸涓涓潪甯鎬弗鑲冦佹瑙勭殑API銆傞氳繃HSSF錛屼綘鍙互鐢ㄧ函Java浠g爜鏉ヨ鍙栥佸啓鍏ャ佷慨鏀笶xcel鏂囦歡銆?/font>
HSSF 涓鴻鍙栨搷浣滄彁渚涗簡涓ょ被API錛歶sermodel鍜宔ventusermodel錛屽嵆鈥滅敤鎴鋒ā鍨嬧濆拰鈥滀簨浠?鐢ㄦ埛妯″瀷鈥濄傚墠鑰呭緢濂界悊瑙o紝鍚庤呮瘮杈冩娊璞★紝浣嗘搷浣滄晥鐜囪楂樺緱澶氥?/font>
涓夛紟寮濮嬬紪鐮?/font>
1 錛?鍑嗗宸ヤ綔
瑕佹眰:JDK 1.4+POI寮鍙戝寘
鍙互鍒?/font> http://www.apache.org/dyn/closer.cgi/jakarta/poi/ 鏈鏂扮殑POI宸ュ叿鍖?/font>
2 錛?EXCEL 緇撴瀯
HSSFWorkbook excell 鏂囨。瀵硅薄浠嬬粛
HSSFSheet excell鐨勮〃鍗?br />HSSFRow excell鐨勮
HSSFCell excell鐨勬牸瀛愬崟鍏?br />HSSFFont excell瀛椾綋
HSSFName 鍚嶇О
HSSFDataFormat 鏃ユ湡鏍煎紡
鍦╬oi1.7涓墠鏈変互涓?欏癸細
HSSFHeader sheet澶?br />HSSFFooter sheet灝?br />鍜岃繖涓牱寮?br />HSSFCellStyle cell鏍峰紡
杈呭姪鎿嶄綔鍖呮嫭
HSSFDateUtil 鏃ユ湡
HSSFPrintSetup 鎵撳嵃
HSSFErrorConstants 閿欒淇℃伅琛?/font>
3 錛庡叿浣撶敤娉曞疄渚?錛堥噰鐢?usermodel 錛?/font>
濡備綍璇籈xcel
璇誨彇Excel鏂囦歡鏃訛紝棣栧厛鐢熸垚涓涓狿OIFSFileSystem瀵硅薄錛岀敱POIFSFileSystem瀵硅薄鏋勯犱竴涓狧SSFWorkbook錛岃HSSFWorkbook瀵硅薄灝變唬琛ㄤ簡Excel鏂囨。銆備笅闈唬鐮佽鍙栦笂闈㈢敓鎴愮殑Excel鏂囦歡鍐欏叆鐨勬秷鎭瓧涓詫細
try{
聽聽 POIFSFileSystem fs=new POIFSFileSystem(new FileInputStream("d:/workbook.xls"));
聽聽 HSSFWorkbook wb = new HSSFWorkbook(fs);
聽聽 HSSFSheet sheet = wb.getSheetAt(0);
聽聽 HSSFRow row = sheet.getRow(0);
聽聽 HSSFCell cell = row.getCell((short) 0);
聽聽 String msg = cell.getStringCellValue();
聽聽 System.out.println(msg);
聽 }catch(Exception e){
聽聽 e.printStackTrace();
聽 }
濡備綍鍐檈xcel錛?/font>
灝唀xcel鐨勭涓涓〃鍗曠涓琛岀殑絎竴涓崟鍏冩牸鐨勫煎啓鎴愨渁 test鈥濄?/font>
POIFSFileSystem fs =new POIFSFileSystem(new FileInputStream("workbook.xls"));
聽聽聽 HSSFWorkbook wb = new HSSFWorkbook(fs);
聽聽聽 HSSFSheet sheet = wb.getSheetAt(0);
聽聽聽 HSSFRow row = sheet.getRow(0);
聽聽聽 HSSFCell cell = row.getCell((short)0);
聽聽聽 cell.setCellValue("a test");
聽聽聽 // Write the output to a file
聽聽聽 FileOutputStream fileOut = new FileOutputStream("workbook.xls");
聽聽聽 wb.write(fileOut);
fileOut.close();
4 錛?鍙弬鑰冩枃妗?/font>
POI 涓婚〉錛?/font> http://jakarta.apache.org/poi/ 錛?/font>
鍒濆鑰呭浣曞揩閫熶笂鎵嬩嬌鐢≒OI HSSF
http://jakarta.apache.org/poi/hssf/quick-guide.html 銆?/font>
閲岄潰鏈夊緢澶氫緥瀛愪唬鐮侊紝鍙互寰堟柟渚夸笂鎵嬨?/font>
鍥涳紟浣跨敤蹇冨緱
POI HSSF 鐨剈sermodel鍖呮妸Excel鏂囦歡鏄犲皠鎴愭垜浠啛鎮夌殑緇撴瀯錛岃濡俉orkbook銆丼heet銆丷ow銆丆ell絳夛紝瀹冩妸鏁翠釜緇撴瀯浠ヤ竴緇勫璞$殑褰㈠紡淇濆瓨鍦ㄥ唴瀛樹箣涓紝渚夸簬鐞嗚В錛屾搷浣滄柟渚匡紝鍩烘湰涓婅兘澶熸弧瓚蟲垜浠殑瑕佹眰錛屾墍浠ヨ榪欎釜涓涓笉閿欑殑閫夋嫨銆?/font>
錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛嶏紞錛?br />鍓嶉潰宸茬粡璁茶繃鍒╃敤POI璇誨啓Excel錛屼笅闈㈡槸涓涓敤POI鍚慐xcel涓彃鍏ュ浘鐗囩殑渚嬪瓙銆?br />
瀹樻柟鏂囨。錛?br />Images are part of the drawing support. To add an image just call createPicture() on the drawing patriarch. At the time of writing the following types are supported:
PNG
JPG
DIB
It is not currently possible to read existing images and it should be noted that any existing drawings may be erased once you add a image to a sheet.
// Create the drawing patriarch. This is the top level container for
// all shapes. This will clear out any existing shapes for that sheet.
閫氳繃HSSFPatriarch綾籧reatePicture鏂規硶鐨勫湪鎸囧畾鐨剋b涓殑sheet鍒涘緩鍥劇墖,瀹冩帴鍙椾簩涓弬鏁幫紝絎竴涓槸HSSFClientAnchor錛岃瀹氬浘鐗囩殑澶у皬銆?br />