log4j.properties鏂囦歡鍐呭錛?/p>
鎸夊涓嬭鍙ユ墽琛岋細
java DumpMethods java.util.Stack
瀹冪殑緇撴灉杈撳嚭涓猴細
public java.lang.Object java.util.Stack.push(java.lang.Object)
public synchronized java.lang.Object java.util.Stack.pop()
public synchronized java.lang.Object java.util.Stack.peek()
public boolean java.util.Stack.empty()
public synchronized int java.util.Stack.search(java.lang.Object)
榪欐牱灝卞垪鍑轟簡java.util.Stack 綾葷殑鍚勬柟娉曞悕浠ュ強瀹冧滑鐨勯檺鍒剁鍜岃繑鍥炵被鍨嬨?/p>
榪欎釜紼嬪簭浣跨敤 Class.forName 杞藉叆鎸囧畾鐨勭被錛岀劧鍚庤皟鐢?getDeclaredMethods 鏉ヨ幏鍙栬繖涓被涓畾涔変簡鐨勬柟娉曞垪琛ㄣ俲ava.lang.reflect.Methods 鏄敤鏉ユ弿榪版煇涓被涓崟涓柟娉曠殑涓涓被銆?/p>
2.寮濮嬩嬌鐢?Reflection
鐢ㄤ簬 reflection 鐨勭被錛屽 Method錛屽彲浠ュ湪 java.lang.relfect 鍖呬腑鎵懼埌銆備嬌鐢ㄨ繖浜涚被鐨勬椂鍊欏繀欏昏閬靛驚涓変釜姝ラ錛氱涓姝ユ槸鑾峰緱浣犳兂鎿嶄綔鐨勭被鐨?java.lang.Class 瀵硅薄銆傚湪榪愯涓殑 Java 紼嬪簭涓紝鐢?java.lang.Class 綾繪潵鎻忚堪綾誨拰鎺ュ彛絳夈?/p>
涓嬮潰灝辨槸鑾峰緱涓涓?Class 瀵硅薄鐨勬柟娉曚箣涓錛?br />
Class c = Class.forName("java.lang.String");
榪欐潯璇彞寰楀埌涓涓?String 綾葷殑綾誨璞°傝繕鏈夊彟涓縐嶆柟娉曪紝濡備笅闈㈢殑璇彞錛?br />
Class c = int.class; 鎴栬?nbsp; Class c = Integer.TYPE;
瀹冧滑鍙幏寰楀熀鏈被鍨嬬殑綾諱俊鎭傚叾涓悗涓縐嶆柟娉曚腑璁塊棶鐨勬槸鍩烘湰綾誨瀷鐨勫皝瑁呯被 (濡?Integer) 涓鍏堝畾涔夊ソ鐨?TYPE 瀛楁銆?br />
絎簩姝ユ槸璋冪敤璇稿 getDeclaredMethods 鐨勬柟娉曪紝浠ュ彇寰楄綾諱腑瀹氫箟鐨勬墍鏈夋柟娉曠殑鍒楄〃銆?br />
涓鏃﹀彇寰楄繖涓俊鎭紝灝卞彲浠ヨ繘琛岀涓夋浜嗏斺斾嬌鐢?reflection API 鏉ユ搷浣滆繖浜涗俊鎭紝濡備笅闈㈣繖孌典唬鐮侊細
Class c = Class.forName("java.lang.String");
Method m[] = c.getDeclaredMethods();
System.out.println(m[0].toString());
瀹冨皢浠ユ枃鏈柟寮忔墦鍗板嚭 String 涓畾涔夌殑絎竴涓柟娉曠殑鍘熷瀷銆?br />
鍦ㄤ笅闈㈢殑渚嬪瓙涓紝榪欎笁涓楠ゅ皢涓轟嬌鐢?reflection 澶勭悊鐗規畩搴旂敤紼嬪簭鎻愪緵渚嬭瘉銆?/p>
妯℃嫙 instanceof 鎿嶄綔絎?br />
寰楀埌綾諱俊鎭箣鍚庯紝閫氬父涓嬩竴涓楠ゅ氨鏄В鍐沖叧浜?Class 瀵硅薄鐨勪竴浜涘熀鏈殑闂銆備緥濡傦紝Class.isInstance 鏂規硶鍙互鐢ㄤ簬妯℃嫙 instanceof 鎿嶄綔絎︼細
class A {
}
public class instance1 {
public static void main(String args[]) {
try {
Class cls = Class.forName("A");
boolean b1 = cls.isInstance(new Integer(37));
System.out.println(b1);
boolean b2 = cls.isInstance(new A());
System.out.println(b2);
} catch (Throwable e) {
System.err.println(e);
}
}
}
鍦ㄨ繖涓緥瀛愪腑鍒涘緩浜嗕竴涓?A 綾葷殑 Class 瀵硅薄錛岀劧鍚庢鏌ヤ竴浜涘璞℃槸鍚︽槸 A 鐨勫疄渚嬨侷nteger(37) 涓嶆槸錛屼絾 new A() 鏄?/p>
3.鎵懼嚭綾葷殑鏂規硶
鎵懼嚭涓涓被涓畾涔変簡浜涗粈涔堟柟娉曪紝榪欐槸涓涓潪甯告湁浠峰間篃闈炲父鍩虹鐨?reflection 鐢ㄦ硶銆備笅闈㈢殑浠g爜灝卞疄鐜頒簡榪欎竴鐢ㄦ硶錛?br />
import java.lang.reflect.*;
public class method1 {
private int f1(Object p, int x) throws NullPointerException {
if (p == null)
throw new NullPointerException();
return x;
}
public static void main(String args[]) {
try {
Class cls = Class.forName("method1");
Method methlist[] = cls.getDeclaredMethods();
for (int i = 0; i < methlist.length; i++) {
Method m = methlist[i];
System.out.println("name = " + m.getName());
System.out.println("decl class = " + m.getDeclaringClass());
Class pvec[] = m.getParameterTypes();
for (int j = 0; j < pvec.length; j++)
System.out.println("param #" + j + " " + pvec[j]);
Class evec[] = m.getExceptionTypes();
for (int j = 0; j < evec.length; j++)
System.out.println("exc #" + j + " " + evec[j]);
System.out.println("return type = " + m.getReturnType());
System.out.println("-----");
}
} catch (Throwable e) {
System.err.println(e);
}
}
}
榪欎釜紼嬪簭棣栧厛鍙栧緱 method1 綾葷殑鎻忚堪錛岀劧鍚庤皟鐢?getDeclaredMethods 鏉ヨ幏鍙栦竴緋誨垪鐨?Method 瀵硅薄錛屽畠浠垎鍒弿榪頒簡瀹氫箟鍦ㄧ被涓殑姣忎竴涓柟娉曪紝鍖呮嫭 public 鏂規硶銆乸rotected 鏂規硶銆乸ackage 鏂規硶鍜?private 鏂規硶絳夈傚鏋滀綘鍦ㄧ▼搴忎腑浣跨敤 getMethods 鏉ヤ唬鏇?getDeclaredMethods錛屼綘榪樿兘鑾峰緱緇ф壙鏉ョ殑鍚勪釜鏂規硶鐨勪俊鎭?br />
鍙栧緱浜?Method 瀵硅薄鍒楄〃涔嬪悗錛岃鏄劇ず榪欎簺鏂規硶鐨勫弬鏁扮被鍨嬨佸紓甯哥被鍨嬪拰榪斿洖鍊肩被鍨嬬瓑灝變笉闅句簡銆傝繖浜涚被鍨嬫槸鍩烘湰綾誨瀷榪樻槸綾葷被鍨嬶紝閮藉彲浠ョ敱鎻忚堪綾葷殑瀵硅薄鎸夐『搴忕粰鍑恒?br />
杈撳嚭鐨勭粨鏋滃涓嬶細
name = f1
decl class = class method1
param #0 class java.lang.Object
param #1 int
exc #0 class java.lang.NullPointerException
return type = int
-----
name = main
decl class = class method1
param #0 class [Ljava.lang.String;
return type = void
-----
4.鑾峰彇鏋勯犲櫒淇℃伅
鑾峰彇綾繪瀯閫犲櫒鐨勭敤娉曚笌涓婅堪鑾峰彇鏂規硶鐨勭敤娉曠被浼鹼紝濡傦細
import java.lang.reflect.*;
public class constructor1 {
public constructor1() {
}
protected constructor1(int i, double d) {
}
public static void main(String args[]) {
try {
Class cls = Class.forName("constructor1");
Constructor ctorlist[] = cls.getDeclaredConstructors();
for (int i = 0; i < ctorlist.length; i++) {
Constructor ct = ctorlist[i];
System.out.println("name = " + ct.getName());
System.out.println("decl class = " + ct.getDeclaringClass());
Class pvec[] = ct.getParameterTypes();
for (int j = 0; j < pvec.length; j++)
System.out.println("param #" + j + " " + pvec[j]);
Class evec[] = ct.getExceptionTypes();
for (int j = 0; j < evec.length; j++)
System.out.println("exc #" + j + " " + evec[j]);
System.out.println("-----");
}
} catch (Throwable e) {
System.err.println(e);
}
}
}
榪欎釜渚嬪瓙涓病鑳借幏寰楄繑鍥炵被鍨嬬殑鐩稿叧淇℃伅錛岄偅鏄洜涓烘瀯閫犲櫒娌℃湁榪斿洖綾誨瀷銆?br />
榪欎釜紼嬪簭榪愯鐨勭粨鏋滄槸錛?br />
name = constructor1
decl class = class constructor1
-----
name = constructor1
decl class = class constructor1
param #0 int
param #1 double
-----
5.鑾峰彇綾葷殑瀛楁(鍩?
鎵懼嚭涓涓被涓畾涔変簡鍝簺鏁版嵁瀛楁涔熸槸鍙兘鐨勶紝涓嬮潰鐨勪唬鐮佸氨鍦ㄥ共榪欎釜浜嬫儏錛?br />
import java.lang.reflect.*;
public class field1 {
private double d;
public static final int i = 37;
String s = "testing";
public static void main(String args[]) {
try {
Class cls = Class.forName("field1");
Field fieldlist[] = cls.getDeclaredFields();
for (int i = 0; i < fieldlist.length; i++) {
Field fld = fieldlist[i];
System.out.println("name = " + fld.getName());
System.out.println("decl class = " + fld.getDeclaringClass());
System.out.println("type = " + fld.getType());
int mod = fld.getModifiers();
System.out.println("modifiers = " + Modifier.toString(mod));
System.out.println("-----");
}
} catch (Throwable e) {
System.err.println(e);
}
}
}
榪欎釜渚嬪瓙鍜屽墠闈㈤偅涓緥瀛愰潪甯哥浉浼箋備緥涓嬌鐢ㄤ簡涓涓柊涓滆タ Modifier錛屽畠涔熸槸涓涓?reflection 綾伙紝鐢ㄦ潵鎻忚堪瀛楁鎴愬憳鐨勪慨楗拌錛屽“private int”銆傝繖浜涗慨楗拌鑷韓鐢辨暣鏁版弿榪幫紝鑰屼笖浣跨敤 Modifier.toString 鏉ヨ繑鍥炰互“瀹樻柟”欏哄簭鎺掑垪鐨勫瓧絎︿覆鎻忚堪 (濡?#8220;static”鍦?#8220;final”涔嬪墠)銆傝繖涓▼搴忕殑杈撳嚭鏄細
name = d
decl class = class field1
type = double
modifiers = private
-----
name = i
decl class = class field1
type = int
modifiers = public static final
-----
name = s
decl class = class field1
type = class java.lang.String
modifiers =
-----
鍜岃幏鍙栨柟娉曠殑鎯呭喌涓涓嬶紝鑾峰彇瀛楁鐨勬椂鍊欎篃鍙互鍙彇寰楀湪褰撳墠綾諱腑鐢蟲槑浜嗙殑瀛楁淇℃伅 (getDeclaredFields)錛屾垨鑰呬篃鍙互鍙栧緱鐖剁被涓畾涔夌殑瀛楁 (getFields) 銆?/p>
6.鏍規嵁鏂規硶鐨勫悕縐版潵鎵ц鏂規硶
鏂囨湰鍒拌繖閲岋紝鎵涓劇殑渚嬪瓙鏃犱竴渚嬪閮戒笌濡備綍鑾峰彇綾葷殑淇℃伅鏈夊叧銆傛垜浠篃鍙互鐢?reflection 鏉ュ仛涓浜涘叾瀹冪殑浜嬫儏錛屾瘮濡傛墽琛屼竴涓寚瀹氫簡鍚嶇О鐨勬柟娉曘備笅闈㈢殑紺轟緥婕旂ず浜嗚繖涓鎿嶄綔錛?br />
import java.lang.reflect.*;
public class method2 {
public int add(int a, int b) {
return a + b;
}
public static void main(String args[]) {
try {
Class cls = Class.forName("method2");
Class partypes[] = new Class[2];
partypes[0] = Integer.TYPE;
partypes[1] = Integer.TYPE;
Method meth = cls.getMethod("add", partypes);
method2 methobj = new method2();
Object arglist[] = new Object[2];
arglist[0] = new Integer(37);
arglist[1] = new Integer(47);
Object retobj = meth.invoke(methobj, arglist);
Integer retval = (Integer) retobj;
System.out.println(retval.intValue());
} catch (Throwable e) {
System.err.println(e);
}
}
}
鍋囧涓涓▼搴忓湪鎵ц鐨勬煇澶勭殑鏃跺欐墠鐭ラ亾闇瑕佹墽琛屾煇涓柟娉曪紝榪欎釜鏂規硶鐨勫悕縐版槸鍦ㄧ▼搴忕殑榪愯榪囩▼涓寚瀹氱殑 (渚嬪錛孞avaBean 寮鍙戠幆澧冧腑灝變細鍋氳繖鏍風殑浜?錛岄偅涔堜笂闈㈢殑紼嬪簭婕旂ず浜嗗浣曞仛鍒般?/p>
涓婁緥涓紝getMethod 鐢ㄤ簬鏌ユ壘涓涓叿鏈変袱涓暣鍨嬪弬鏁頒笖鍚嶄負 add 鐨勬柟娉曘傛壘鍒拌鏂規硶騫跺垱寤轟簡鐩稿簲鐨?Method 瀵硅薄涔嬪悗錛屽湪姝g‘鐨勫璞″疄渚嬩腑鎵ц瀹冦傛墽琛岃鏂規硶鐨勬椂鍊欙紝闇瑕佹彁渚涗竴涓弬鏁板垪琛紝榪欏湪涓婁緥涓槸鍒嗗埆鍖呰浜嗘暣鏁?37 鍜?47 鐨勪袱涓?Integer 瀵硅薄銆傛墽琛屾柟娉曠殑榪斿洖鐨勫悓鏍鋒槸涓涓?Integer 瀵硅薄錛屽畠灝佽浜嗚繑鍥炲?84銆?/p>
7.鍒涘緩鏂扮殑瀵硅薄
瀵逛簬鏋勯犲櫒錛屽垯涓嶈兘鍍忔墽琛屾柟娉曢偅鏍瘋繘琛岋紝鍥犱負鎵ц涓涓瀯閫犲櫒灝辨剰鍛崇潃鍒涘緩浜嗕竴涓柊鐨勫璞?(鍑嗙‘鐨勮錛屽垱寤轟竴涓璞$殑榪囩▼鍖呮嫭鍒嗛厤鍐呭瓨鍜屾瀯閫犲璞?銆傛墍浠ワ紝涓庝笂渚嬫渶鐩鎬技鐨勪緥瀛愬涓嬶細
import java.lang.reflect.*;
public class constructor2 {
public constructor2() {
}
public constructor2(int a, int b) {
System.out.println("a = " + a + " b = " + b);
}
public static void main(String args[]) {
try {
Class cls = Class.forName("constructor2");
Class partypes[] = new Class[2];
partypes[0] = Integer.TYPE;
partypes[1] = Integer.TYPE;
Constructor ct = cls.getConstructor(partypes);
Object arglist[] = new Object[2];
arglist[0] = new Integer(37);
arglist[1] = new Integer(47);
Object retobj = ct.newInstance(arglist);
} catch (Throwable e) {
System.err.println(e);
}
}
}
鏍規嵁鎸囧畾鐨勫弬鏁扮被鍨嬫壘鍒扮浉搴旂殑鏋勯犲嚱鏁板茍鎵ц瀹冿紝浠ュ垱寤轟竴涓柊鐨勫璞″疄渚嬨備嬌鐢ㄨ繖縐嶆柟娉曞彲浠ュ湪紼嬪簭榪愯鏃跺姩鎬佸湴鍒涘緩瀵硅薄錛岃屼笉鏄湪緙栬瘧鐨勬椂鍊欏垱寤哄璞★紝榪欎竴鐐歸潪甯告湁浠峰箋?/p>
8.鏀瑰彉瀛楁(鍩?鐨勫?br />
reflection 鐨勮繕鏈変竴涓敤澶勫氨鏄敼鍙樺璞℃暟鎹瓧孌電殑鍊箋俽eflection 鍙互浠庢鍦ㄨ繍琛岀殑紼嬪簭涓牴鎹悕縐版壘鍒板璞$殑瀛楁騫舵敼鍙樺畠錛屼笅闈㈢殑渚嬪瓙鍙互璇存槑榪欎竴鐐癸細
import java.lang.reflect.*;
public class field2 {
public double d;
public static void main(String args[]) {
try {
Class cls = Class.forName("field2");
Field fld = cls.getField("d");
field2 f2obj = new field2();
System.out.println("d = " + f2obj.d);
fld.setDouble(f2obj, 12.34);
System.out.println("d = " + f2obj.d);
} catch (Throwable e) {
System.err.println(e);
}
}
}
榪欎釜渚嬪瓙涓紝瀛楁 d 鐨勫艱鍙樹負浜?12.34銆?br />
9.浣跨敤鏁扮粍
鏈枃浠嬬粛鐨?reflection 鐨勬渶鍚庝竴縐嶇敤娉曟槸鍒涘緩鐨勬搷浣滄暟緇勩傛暟緇勫湪 Java 璇█涓槸涓縐嶇壒孌婄殑綾葷被鍨嬶紝涓涓暟緇勭殑寮曠敤鍙互璧嬬粰 Object 寮曠敤銆傝瀵熶笅闈㈢殑渚嬪瓙鐪嬬湅鏁扮粍鏄庝箞宸ヤ綔鐨勶細
import java.lang.reflect.*;
public class array1 {
public static void main(String args[]) {
try {
Class cls = Class.forName("java.lang.String");
Object arr = Array.newInstance(cls, 10);
Array.set(arr, 5, "this is a test");
String s = (String) Array.get(arr, 5);
System.out.println(s);
} catch (Throwable e) {
System.err.println(e);
}
}
}
渚嬩腑鍒涘緩浜?10 涓崟浣嶉暱搴︾殑 String 鏁扮粍錛屼負絎?5 涓綅緗殑瀛楃涓茶祴浜嗗鹼紝鏈鍚庡皢榪欎釜瀛楃涓蹭粠鏁扮粍涓彇寰楀茍鎵撳嵃浜嗗嚭鏉ャ?br />
涓嬮潰榪欐浠g爜鎻愪緵浜嗕竴涓洿澶嶆潅鐨勪緥瀛愶細
import java.lang.reflect.*;
public class array2 {
public static void main(String args[]) {
int dims[] = new int[]{5, 10, 15};
Object arr = Array.newInstance(Integer.TYPE, dims);
Object arrobj = Array.get(arr, 3);
Class cls = arrobj.getClass().getComponentType();
System.out.println(cls);
arrobj = Array.get(arrobj, 5);
Array.setInt(arrobj, 10, 37);
int arrcast[][][] = (int[][][]) arr;
System.out.println(arrcast[3][5][10]);
}
}
渚嬩腑鍒涘緩浜嗕竴涓?5 x 10 x 15 鐨勬暣鍨嬫暟緇勶紝騫朵負澶勪簬 [3][5][10] 鐨勫厓绱犺祴浜嗗間負 37銆傛敞鎰忥紝澶氱淮鏁扮粍瀹為檯涓婂氨鏄暟緇勭殑鏁扮粍錛屼緥濡傦紝絎竴涓?Array.get 涔嬪悗錛宎rrobj 鏄竴涓?10 x 15 鐨勬暟緇勩傝繘鑰屽彇寰楀叾涓殑涓涓厓绱狅紝鍗抽暱搴︿負 15 鐨勬暟緇勶紝騫朵嬌鐢?Array.setInt 涓哄畠鐨勭 10 涓厓绱犺祴鍊箋?br />
娉ㄦ剰鍒涘緩鏁扮粍鏃剁殑綾誨瀷鏄姩鎬佺殑錛屽湪緙栬瘧鏃跺茍涓嶇煡閬撳叾綾誨瀷銆?/p>
|
|
璇存槑 | 榪愮畻絎?/strong> | 璇存槑 |
+ |
鍔?/p> |
> 鎴?gt | 澶т簬 |
- |
鍑?/p> |
<= 鎴?le | 灝忎簬絳変簬 |
* |
涔?/p> |
>= 鎴?ge | 澶т簬絳変簬 |
/ 鎴?div |
闄?/p> |
&& 鎴?and | 閫昏緫涓?/td> |
% 鎴?mod |
妯★紙姹備綑錛?/p> |
|| 鎴?or | 閫昏緫鎴?/td> |
== 鎴?= |
絳変簬 |
! 鎴?not | 閫昏緫闈?/td> |
!= 鎴?!= |
涓嶇瓑浜?/p> |
empty | 媯鏌ユ槸鍚︿負絀哄?/td> |
< 鎴?lt |
灝忎簬 |
a ? b : c | 鏉′歡榪愮畻絎?/td> |
|
榪愮畻緇撴灉 | EL 鍏崇郴榪愮畻琛ㄨ揪寮?/strong> | 榪愮畻緇撴灉 |
${1} | 1 | ${1 < 2} | true |
${1 + 2} | 3 | ${1 lt 2} | true |
${1.2 + 2.3} | 3.5 | ${1 > (4/2)} | false |
${-4 - 2} | -6 | ${4.0 >= 3} | true |
${21 * 2} | 42 | ${4.0 ge 3} | true |
${10%4} | 2 | ${100.0 eq 100} | true |
${10 mod 4} | 2 | ${(10*10) != 100} | false |
${(1==2) ? 3 : 4} | 4 | ${(10*10) ne 100} | false |
(
param)絳?
|
鍐呭 |
applicationScope |
搴旂敤紼嬪簭鑼冨洿鍐呯殑scoped鍙橀噺緇勬垚鐨勯泦鍚?/p> |
cookie |
鎵鏈塩ookie緇勬垚鐨勯泦鍚?/p> |
header |
HTTP璇鋒眰澶撮儴錛屽瓧絎︿覆 |
headerValues |
HTTP璇鋒眰澶撮儴錛屽瓧絎︿覆闆嗗悎 |
initParam |
鍏ㄩ儴搴旂敤紼嬪簭鍙傛暟鍚嶇粍鎴愮殑闆嗗悎 |
pageContext |
褰撳墠欏甸潰鐨刯avax.servlet.jsp.PageContext瀵硅薄 |
pageScope |
欏甸潰鑼冨洿鍐呮墍鏈夊璞$殑闆嗗悎 |
param |
鎵鏈夎姹傚弬鏁板瓧絎︿覆緇勬垚鐨勯泦鍚?/p> |
paramValues |
鎵鏈変綔涓哄瓧絎︿覆闆嗗悎鐨勮姹傚弬鏁?/p> |
requestScope |
鎵鏈夎姹傝寖鍥寸殑瀵硅薄鐨勯泦鍚?/p> |
sessionScope |
鎵鏈変細璇濊寖鍥寸殑瀵硅薄鐨勯泦鍚?/p> |
eg: ${empty(requestScope.backpath)?'admin_TcAction.do?method=findFinish':requestScope.backpath}
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"
<hibernate-mapping package="hbm">
<class name="EmylinkUpcode" table="emylink_upcode">
<id
name="id" type="integer" column="plink_code"
>
<generator class="org.hibernate.id.IncrementGenerator"/>
</id>
<property
name="account"
column="account"
type="string"
not-null="true"
length="20"
/>
<property
name="plinkName"
column="plink_name"
type="string"
not-null="true"
length="50"
/>
<property
name="plinkExplain"
column="plink_explain"
type="string"
not-null="false"
length="100"
/>
<property
name="typeCode"
column="type_code"
type="string"
not-null="false"
length="8"
/>
<set name="emylinkUlinks" inverse="true" lazy="true" cascade="all">
<key column="plink_code"/>
<one-to-many class="EmylinkUlink"/>
</set>
</class>
</hibernate-mapping>
* 寤惰繜鍔犺澆
濡傛灉lazy=true(寤惰繜鍔犺澆), 鍔犺澆EmylinkUpcode鏃?hibernate涓嶄細绔嬪嵆鍔犺澆EmylinkUlink,鍙湁褰?Iterator<EmylinkUlink> it = ul.iterator();)鎵ц鏃?hibernate鎵嶅姞杞紼mylinkUlink瀹炰緥; 濡傛灉鍦ㄥ姞杞藉墠灝卞叧闂璼ession,鍒欐姤寮傚父LazyInitializationException ; 鍙互浣跨敤Hibernate.initialize(Object o)寮哄埗鍙婅仈鍔犺澆
*J2SE5.0鐨勬硾鍨?
emylinkUlinks闆嗗悎涓彧鑳藉瓨鏀綞mylinkUlink瀵硅薄錛屼粠闆嗗悎涓幏鍙栧璞℃棤闇鍐嶇被鍨嬭漿鎹?br />
struts+spring+hibernate鍏充簬hibernate涓璴azy="true"鐨勯棶棰樸倃eb.xml涓敤
瀹冪殑鍘熺悊灝辨槸錛氭墦寮欏甸潰鐨勬椂鍊欐墦寮session錛屼竴鐩村埌欏甸潰瑁呰澆瀹屾瘯鎵嶅叧闂璼ession錛岃繖鏍峰氨瑙e喅浜唋azy="true"鏃秙ession is closed鐨勯棶棰樸?br />
鍏充簬OpenSessionInViewFilter 寤惰繜鍔犺澆澶辨晥闂 http://www.javaeye.com/topic/15057
OpenSessionInView鐨勬晥鐜囬棶棰?nbsp; http://www.javaeye.com/topic/17501
涓 CVS鏈嶅姟鍣?/a>鐨勫畨瑁咃細
1銆傛煡鐪嬩綘鐨勬搷浣滅郴緇熶笂鏄惁瀹夎浜咰VS錛?br />
#> rpm -qa|grep cvs
濡傛灉娌℃湁瀹夎浣犲彲浠ュ湪Redhat 絎?寮犲厜鐩樹笂鎵懼埌
2銆傚緩绔媍vs鐢ㄦ埛緇勶細
#> groupadd cvs
3銆傚緩绔媍vs緇勭殑cvsroot鐢ㄦ埛鍜屾墍灞炵殑鐩綍錛?
#> useradd -g cvs -G cvs –d /cvsroot cvsroot
4銆備負cvsroot鐢ㄦ埛娣誨姞瀵嗙爜錛?
#> passwd cvsroot
5銆傛敼鍙?/cvsroot/ 鐨勭洰褰曞睘鎬э細
#> chmod –R 770 /cvsroot
6銆傛敼鍙樼敤鎴風櫥闄嗚韓浠斤細
#> su cvsroot
7銆傚紑濮嬪垱寤哄崟涓」鐩細
#> cd /cvsroot
#> mkdir project1
#>mkdir project2
8銆傚紑濮嬪緩绔嬩粨搴擄細
#> cvs –d /cvsroot/project1 init
#> cvs –d /cvsroot/project2 init
#> chmod –R 770 ./project1/ ./project2/
9銆傚緩绔婥VS鏈嶅姟鍚姩鏂囦歡錛屾垜浠嬌鐢▁inetd鏂瑰紡錛?
#> [Crtl]+[d] 鍒囨崲鍒皉oot鐢ㄦ埛韜喚
#> cd /etc/xinetd.d
#> vi cvspserver
娉細鐢變簬xinetd鐨剆erver_args闀垮害闄愬埗,褰撲綘鎯寵繍琛屽緢澶氱殑鍗曚釜浠撳簱鐨勬椂鍊?鍙互榪欎箞鍋氾細
#> vi cvspserver
緙栧啓cvs.run鑴氭湰
#> vi /cvsroot/cvs.run
#>chmod +x /cvsroot/cvs.run
10銆傚姞鍏vs鏈嶅姟錛?
#>vi /etc/services
cvspserver 2401/tcp #pserver cvs service
cvspserver 2401/udp #pserver cvs service
11銆傚惎鍔╟vs鏈嶅姟錛?
#> /etc/init.d/xinetd restart
12銆傛鏌vspserver鏈嶅姟鏄惁宸茬粡鍚姩錛?
#> netstat -l |grep cvspserver
搴旇鏈夊涓嬬粨鏋滐細
tcp 0 0 *:cvspserver *:* LISTEN
浜屻侰VS鏈嶅姟鐨勭敤鎴風鐞嗭細
涓婇潰鎴戜滑宸茬粡寤虹珛浜唒roject1鍜宲roject2涓や釜CVS浠撳簱錛屼笅闈㈡垜浠垎鍒粰涓や釜浠撳簱寤虹珛cvs鐢ㄦ埛銆?
13銆傚垱寤哄彲浠ョ櫥闄哻vs鏈嶅姟鍣?/a>鐨勭敤鎴峰悕鍜屽瘑鐮侊細
#> su cvsroot
#> vi /cvsroot/project1/CVSROOT/passwd
trotter:*****:cvsroot
mimi:*****:cvsroot
#>vi /cvsroot/project2/CVSROOT/passwd
trotter:*****:cvsroot
gary:*****:cvsroot
榪欎袱涓枃浠剁殑鎰忔濇槸鏈塼rotter錛宮imi錛実ary涓変釜cvs鐢ㄦ埛錛宮imi鎷ユ湁project1鐨勪嬌鐢ㄦ潈闄愶紝gary鎷ユ湁project2鐨勪嬌鐢ㄦ潈闄愶紝trotter鎷ユ湁project1鍜宲roject2鐨勪嬌鐢ㄦ潈闄愩傜櫥闄嗗悗鐨勬潈闄愭槸cvsroot鏉冮檺銆?br /> 娉ㄦ剰錛氳繖閲岀殑cvs鐢ㄦ埛鍜岀郴緇熺敤鎴鋒槸涓嶅悓鐨勩?
14銆?****涓哄瘑鐮侊紝鐢變互涓嬫枃浠剁敓鎴愶細
#> vi /cvsroot/passwd.pl
#>chmod a+x /cvsroot/passwd.pl
15銆傚鏋滀綘鎯崇敓鎴愪竴涓瘑鐮佹槸“123456”錛屽垯錛?
#> /cvsroot/passwd.pl “123456”
鍥炶濺鍗沖彲寰楀埌鍔犲瘑瀵嗙爜,鐢ㄥ叾鏇挎崲passwd鏂囦歡涓殑*****
16銆侽k錛宑vs鐜板湪宸茬粡鍏ㄩ儴瀹夎瀹屾垚浜嗭紝濡傛灉浣犳兂璁╀竴涓敤鎴鋒嫢鏈塸roject1鐨勬潈闄愶紝浣犲氨鍦?cvsroot/project1/CVSROOT/passwd涓粰浠栧姞鍏ヤ竴涓敤鎴鳳紱濡傛灉浣犳兂璁╀竴涓敤鎴峰悓鏃跺叿鏈塸roject1鍜宲roject2鐨勬潈闄愶紝浣犲氨緇?cvsroot/project1/CVSROOT/passwd鍜?cvsroot/project2/CVSROOT/passwd閲岀粰浠栧姞涓涓敤鎴峰悕鍜屽瘑鐮佺浉鍚岀殑鐢ㄦ埛鍗沖彲銆傛渶鍚庯紝鎴戜滑璇曠敤涓涓嬶細
#> cvs -d :pserver:trotter@192.168.1.200:/cvsroot/project1 login
鏁插叆鍛戒護鍥炶濺鍚庢彁紺鴻緭鍏rotter鐨勫瘑鐮?浣犳寜鐓ц嚜宸辮緗殑瀵嗙爜杈撳叆,濡傛灉娌℃湁浠涔堥敊璇俊鎭嚭鐜板氨鏄垚鍔熶簡
涓涓猚ron琛ㄨ揪寮忔湁鑷沖皯6涓紙涔熷彲鑳?涓級鏈夌┖鏍煎垎闅旂殑鏃墮棿鍏冪礌銆?br />
鎸夐『搴忎緷嬈′負
1.縐掞紙0~59錛?
2.鍒嗛挓錛?~59錛?
3.灝忔椂錛?~23錛?
4.澶╋紙鏈堬級錛?~31錛屼絾鏄綘闇瑕佽冭檻浣犳湀鐨勫ぉ鏁幫級
5.鏈堬紙0~11錛?
6.澶╋紙鏄熸湡錛夛紙1~7 1=SUN 鎴?SUN錛孧ON錛孴UE錛學ED錛孴HU錛孎RI錛孲AT錛?
7.騫翠喚錛?970錛?099錛?/span>
鍏朵腑姣忎釜鍏冪礌鍙互鏄竴涓?濡?),涓涓繛緇尯闂?9-12),涓涓棿闅旀椂闂?8-18/4)(/琛ㄧず姣忛殧4灝忔椂),涓涓垪琛?1,3,5),閫氶厤絎︺?br /> 鐢變簬"鏈堜喚涓殑鏃ユ湡"鍜?鏄熸湡涓殑鏃ユ湡"榪欎袱涓厓绱犱簰鏂ョ殑,蹇呴』瑕佸鍏朵腑涓涓緗?.
0 0 10,14,16 * * ? 姣忓ぉ涓婂崍10鐐癸紝涓嬪崍2鐐癸紝4鐐?br /> 0 0/30 9-17 * * ??? 鏈濅節鏅氫簲宸ヤ綔鏃墮棿鍐呮瘡鍗婂皬鏃?br /> 0 0 12 ? * WED 琛ㄧず姣忎釜鏄熸湡涓変腑鍗?2鐐?
鏈変簺瀛愯〃杈懼紡鑳藉寘鍚竴浜涜寖鍥存垨鍒楄〃
渚嬪錛氬瓙琛ㄨ揪寮忥紙澶╋紙鏄熸湡錛夛級鍙互涓?“MON-FRI”錛?#8220;MON錛學ED錛孎RI”錛?#8220;MON-WED,SAT”
“*”瀛楃浠h〃鎵鏈夊彲鑳界殑鍊?
鍥犳錛?#8220;*”鍦ㄥ瓙琛ㄨ揪寮忥紙鏈堬級閲岃〃紺烘瘡涓湀鐨勫惈涔夛紝“*”鍦ㄥ瓙琛ㄨ揪寮忥紙澶╋紙鏄熸湡錛夛級琛ㄧず鏄熸湡鐨勬瘡涓澶?
“/”瀛楃鐢ㄦ潵鎸囧畾鏁板肩殑澧為噺
渚嬪錛氬湪瀛愯〃杈懼紡錛堝垎閽燂級閲岀殑“0/15”琛ㄧず浠庣0鍒嗛挓寮濮嬶紝姣?5鍒嗛挓 ;
鍦ㄥ瓙琛ㄨ揪寮忥紙鍒嗛挓錛夐噷鐨?#8220;3/20”琛ㄧず浠庣3鍒嗛挓寮濮嬶紝姣?0鍒嗛挓錛堝畠鍜?#8220;3錛?3錛?3”錛夌殑鍚箟涓鏍?
“錛?#8221;瀛楃浠呰鐢ㄤ簬澶╋紙鏈堬級鍜屽ぉ錛堟槦鏈燂級涓や釜瀛愯〃杈懼紡錛岃〃紺轟笉鎸囧畾鍊?
褰?涓瓙琛ㄨ揪寮忓叾涓箣涓琚寚瀹氫簡鍊間互鍚庯紝涓轟簡閬垮厤鍐茬獊錛岄渶瑕佸皢鍙︿竴涓瓙琛ㄨ揪寮忕殑鍊艱涓?#8220;錛?#8221;
“L” 瀛楃浠呰鐢ㄤ簬澶╋紙鏈堬級鍜屽ぉ錛堟槦鏈燂級涓や釜瀛愯〃杈懼紡錛屽畠鏄崟璇?#8220;last”鐨勭緝鍐?
浣嗘槸瀹冨湪涓や釜瀛愯〃杈懼紡閲岀殑鍚箟鏄笉鍚岀殑銆?
鍦ㄥぉ錛堟湀錛夊瓙琛ㄨ揪寮忎腑錛?#8220;L”琛ㄧず涓涓湀鐨勬渶鍚庝竴澶?,
鍦ㄥぉ錛堟槦鏈燂級鑷〃杈懼紡涓紝“L”琛ㄧず涓涓槦鏈熺殑鏈鍚庝竴澶╋紝涔熷氨鏄疭AT
濡傛灉鍦?#8220;L”鍓嶆湁鍏蜂綋鐨勫唴瀹癸紝瀹冨氨鍏鋒湁鍏朵粬鐨勫惈涔変簡
渚嬪錛?#8220;6L”琛ㄧず榪欎釜鏈堢殑鍊掓暟絎紪澶╋紝“錛︼疾錛╋棘”琛ㄧず榪欎釜鏈堢殑鏈鍚庝竴涓槦鏈熶簲
娉ㄦ剰錛氬湪浣跨敤“L”鍙傛暟鏃訛紝涓嶈鎸囧畾鍒楄〃鎴栬寖鍥達紝鍥犱負榪欎細瀵艱嚧闂