锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
JNDI鏄敤浜庤闂笉鍚屽懡鍚嶅拰鐩綍鏈嶅姟鐨勭粺涓API鎺ュ彛錛?/span>
2. JNDI鐨勬灦鏋勫拰鍘熺悊
1. 鏋舵瀯錛?/span>
絎竴灞傦細java浠g爜錛屾槸璁塊棶JNDI鐨勪唬鐮侊紱
絎簩灞傦細JNDI API錛氱粺涓鐨勫懡鍚嶅拰鐩綍鏈嶅姟鎺ュ彛
絎笁灞傦細JNDI Naming Manager錛?/span>JNDI綆$悊鍣?/span>
絎洓灞傦細JNDI SPI錛氱敤浜庢瀯寤?/span>JNDI瀹炵幇鐨勬鏋訛紝鑳藉鍔ㄦ佺殑鎻掑叆鍛藉悕鍜岀洰褰曟湇鍔℃彁渚涘晢鐨勪駭鍝侊紱
絎簲灞傦細鍛藉悕鍜岀洰褰曟湇鍔℃彁渚涘晢鐨勪駭鍝侊紱
鍛藉悕鍜岀洰褰曟湇鍔℃彁渚涘晢鐨勪駭鍝?/span>,渚嬪錛?/span>DNS,LDAP,NIS,NDS……..;鍥犱負榪欎簺浜у搧閮芥槸涓嶅悓鐨勬彁渚涘晢鎻愪緵鐨勪駭鍝侊紝鎵浠ヤ粬浠殑鍛藉悕鍜岀洰褰曟湇鍔$殑鏍囧噯涓嶄竴鑷達紝鍚勪釜鐩綍鏈嶅姟閲囩敤鐨勮闂崗璁篃鏄笉涓鏍風殑錛屾墍浠ワ紝瑕佹槸鐩存帴璁塊棶浠栦滑鐨勮瘽錛屽氨瑕佺紪鍐欎笉鍚岀殑java浠g爜鏉ヨ闂粬浠紱鍥犳錛?/span>JNDI SPI灝辮В鍐充簡榪欎釜闂錛屽畠鑳藉姩鎬佺殑鎻掑叆榪欎簺鍛藉悕鍜岀洰褰曟湇鍔★紝鑳藉灝嗗叾鍗忚涓撳睘鐨勭洰褰曚駭鍝侀泦鎴愬埌緋葷粺涓紝浣垮緱鎴戜滑鑳藉彧闇瑕佽皟鐢ㄤ竴涓粺涓鐨?/span>javaAPI灝辮兘澶熻闂彃鍏ョ殑浜у搧浜嗭紱
2錛庡師鐞嗭細
JNDI鍏跺疄寰堝ソ鐞嗚В錛屼粬灝辨槸涓涓爲鐘剁殑緇撴瀯錛屽畠鐨勬渶欏舵槸涓涓?/span>initialContext鑺傜偣錛岀劧鍚庡畠鐨勪笅闈㈠氨鏄粦瀹氱殑涓浜涘璞℃垨鏄竴浜?/span>subContext錛岀敤JNDI鏍戝氨鑳藉鏌ユ壘鍒版爲涓瘡涓涓粦瀹氫笂鐨勮妭鐐逛笂鐨勫璞$殑寮曠敤錛?/span>
3.鎬庢牱榪炴帴鍒?/span>JNDI涓婏紵
Environment environment = new Environment() ;//鍒涘緩涓涓幆澧冨璞?/span>
environment.setProviderurl(“t3://www.tkk7.com”) ;
environment.setSecurityPrincipal(“todd”) ;//璁よ瘉鐨勭敤鎴峰悕
environment.setSecurityCredentials(“841026”) ;//瀵嗙爜
Context context = environment.getInitialContext() ;
//鍒涘緩涓涓?/span>subContext騫剁粦瀹氫竴涓璞★細
Context subContext = context.createSubcontext(“subContext”) ;
subContext.rebind(“newObject”,object) ;//緇戝畾鐨勫璞″繀欏繪槸鍙簭鍒楀寲鐨?/span>
subContext.close() ;
context.close() ;
4.濡備綍閫氳繃JNDI鏌ユ壘bind鐨勫璞★紵
Object object = context.lookup(“User”) ;
//鎶?/span>user紿勫寲鍒板師鍨?/span>
User user = (User)javax.rmi.PortableRemoteObject.narrow(object, User.class) ;
context.close() ;
1. 浠涔堟槸servlet錛?/span>
Servlet鏄竴涓?/span>java綾伙紝鏄竴涓彁渚涘熀浜庡崗璁姹傚拰鍝嶅簲鐨?/span>java綾伙紱
2. 瀹冪殑鐢熷懡鍛ㄦ湡
1. 鍚姩鏈嶅姟鍣ㄦ椂灝變細瀹炰緥鍖栧茍鍔犺澆servlet瀹炰緥錛?/span>
2. 榪涜鍒濆鍖栵細鑷姩璋冪敤init錛?/span>ServletConfig servletConfig錛夋柟娉曪紱
3. Servlet灝辯華錛氳皟鐢?/span>service錛?/span>HttpServletRequest request錛?/span>HttpServletResponse response錛夋柟娉曪紙鍏?nbsp; 涓?/span> service 灝辨槸dopost錛堬級鎴?/span>doget錛堬級鏂規硶錛夛紝榪欐槸瀹㈡埛鎻愪氦鏃訛紝鑷姩璋冪敤鐨勶紱
4. Servlet閿姣侊細鑷姩璋冪敤璋冪敤distory錛堬級 錛?/span>
娉ㄦ剰錛氬湪瀹炰緥鍖栧茍鍔犺澆servlet鍚庯紝姝ラ浜屽拰鍥涘彧璋冪敤涓嬈★紝鑰屾楠や笁錛屾槸鍦ㄦ瘡嬈″鎴風鍙戝嚭璇鋒眰鏃墮兘璋冪敤錛?/span>
3. 鎬庢牱閮ㄧ講涓涓?/span>servlet錛?/span>
Servlet綾繪槸蹇呴』鍦?/span>web.xml涓敞鍐屾墠鑳戒嬌鐢ㄧ殑錛屼緥濡傦紝鎴戞湁涓涓?/span>MyServlet綾伙細
蹇呴』鍦?/span>web.xml涓敞鍐岋細
<web-app>
//-----------------------Servlet澹版槑----------------------
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>servletPakage.MyServlet</servlet-class>
</servlet>
//------------------------Servlet娉ㄥ唽(闀滃儚)---------------
<servlet-mapping>
<servlet-name>myServlet</servlet-name>
<url-pattern>myServletURL</ url-pattern >
</servlet-mapping>
</web-app>
榪欐牱浣犲湪鎻愪氦鏃剁殑Url鍦板潃灝辨槸/myServletURL浜嗭紱
4. 浠涔堟槸service錛?/span>HttpServletRequest request錛?/span>HttpServletResponse response錛夋柟娉曪紵
鍏朵腑service錛?/span>HttpServletRequest request錛?/span>HttpServletResponse response錛夋柟娉曞寘鎷袱縐嶏細
1. doget錛?/span>HttpServletRequest request錛?/span>HttpServletResponse response錛夋柟娉曪細
榪欑鏂規硶琚О涓烘樉寮忔彁浜ゆ柟娉曪紝涓昏鍘熷洜鏄畠鐨勫緱鍒扮殑鍙傛暟鏀懼湪url涓紝鍙互琚湅鍒幫紝鎵浠ョО涓烘樉紺烘彁 浜わ紱
渚嬪錛氭湁涓〃鍗曪細
<form action=”/myServletURL?name=todd” method=”get”>
</form>
榪欑鏂規硶鍏?/span>request鑾峰緱鐨勫弬鏁板氨鏄綘鐪嬪埌鐨?/span>name=todd錛?/span>
渚嬪錛?/span>String s=request.getParameter(“name”);
鍏剁粨鏋?/span>s=”todd”;
2. dopost錛?/span>HttpServletRequest request錛?/span>HttpServletResponse response錛夋柟娉曪細
榪欑鏂規硶琚О涓洪殣寮忔彁浜ゆ柟娉曪紝瀹冪殑鍙傛暟涓嶄細鍦?/span>url閲屽緱鍒幫紝鑰屾槸鍦ㄨ姹傛暟鎹綋寰楀埌鍙傛暟錛?/span>
渚嬪錛氭湁涓〃鍗曪細
<form action=”/myServletURL” method=”post”>
<input type=”text” name=”name” value=”todd”>
</form>
榪欑鏂規硶鍏?/span>request鑾峰緱鐨勫弬鏁板氨鏄〃鍗曚綋鐨?/span>name=todd錛?/span>
渚嬪錛?/span>String s=request.getParameter(“name”);
鍏剁粨鏋?/span>s=”todd”;
5. 浠涔堟槸ServletContext?
ServletContext鏄竴涓帴鍙o紝鏄?/span>WebApplication鐨勮鍥撅紝瀹冪殑浣滅敤鍩熸椂Application錛屽畠鑳借闂?/span>Application涓殑鍒濆鍖栧弬鏁板拰灞炴э紝瀹冧笉灞闄愬煙涓涓?/span>Servlet錛屽畠灞炰簬鏁翠釜Application錛?/span>
ServletContext鐨勫垵濮嬪寲鍙傛暟錛?/span>
鍦?/span>web.xml涓細
<web-app>
<context-param>
<param-name>myBlog</param-name>
<param-value>www.tkk7.com/todd841026</param-value>
</context-param>
</web-app>
榪欐牱鍦?/span>application涓換鎰忎竴涓?/span>Servlet涓彲浠ュ緱鍒拌繖涓弬鏁幫紝
渚嬪錛?/span>ServletContext sc = getServletContext ();
String s = sc.getInitParameter(“myBlog”);
閭d箞緇撴灉s灝辨槸”www.tkk7.com/todd841026”
6. 浠涔堟槸ServletConfig錛?/span>
鏄崟鐙殑Servlet鍒濆鍖栭厤緗紱
渚嬪錛氬湪web.xml涓?/span>
<web-app>
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>servletPakage.MyServlet</servlet-class>
</servlet>
<init-param>
<param-name>cache</param-name>
<param-value>off</param-value>
</init-param>
</web-app>
鍦ㄨ繖涓?/span>Servlet涓細ServletConfig sc = getServletConfig();
String s = sc.getInitParameter(“cache”);
閭d箞緇撴灉s灝辨槸”off”;
7. Servlet鎬庢牱澶勭悊澶氱嚎紼?/span>
鍦ㄩ粯璁ょ殑鎯呭喌涓嬶紝鍗曚釜Servlet瀹炰緥鏄彲浠ュ鐞嗗涓茍鍙戣姹傜殑錛屾墍浠ヨ鑰冭檻鍒板綰跨▼鐨勫叡浜悓涓瀵硅薄鐨勯棶棰橈紝渚嬪錛?/span>
//鍋氫釜Servlet涓駭鐢熶簡澶氬皯涓?/span>object瀵硅薄涓涓彉閲忕殑渚嬪瓙
Private int count = 0 ;
Public void dopost(HttpServletRequest request,HttpServletResponse response){
Object object = new Object() ;
count++ ;
System.out.println(“count = ” + count) ;
}
褰撴湁5涓敤鎴鋒彁浜ゆ暟鎹椂錛屽洜涓?/span>Servlet鏄鐞嗗綰跨▼鐨勶紝鎵浠ュ彲鑳藉嚭鐜幫紝絎洓涓敤鎴風殑紼嬪簭宸茬粡鎵ц浜?/span>count++錛岃岀浜斾釜鐢ㄦ埛鍒氭墽琛屽畬Object object = new Object() 錛屽氨浼氬嚭鐜版暟鎹笉涓鑷存э紝鍥犱負褰撳墠鏈?/span>5涓?/span>object瀵硅薄錛屼絾鏄?/span>count鍗存槸4錛?/span>
瑙e喅鏂規涓錛?/span>
Private boolean flag = false 錛?/span>
Private int count = 0 ;
Public void dopost(HttpServletRequest request,HttpServletResponse response){
synchronized(flag){
Object object = new Object() ;
count++ ;
}
System.out.println(“count = ” + count) ;
}
鐢ㄥ悓姝ョ▼搴忓潡瑙e喅澶氱嚎紼嬬殑闂錛岃繖鏍峰湪鍚屼竴鏃跺埢灝卞彧鑳芥湁涓涓闂紼嬪簭鍧椾簡錛?/span>
瑙e喅鏂規浜岋細
Private int count = 0 ;
Public void dopost(HttpServletRequest request,HttpServletResponse response)
Implements SingleThreadModel{
Object object = new Object() ;
count++ ;
System.out.println(“count = ” + count) ;
}
瀹炵幇SingleThreadModel鎺ュ彛錛屽彲浠ヨВ鍐沖綰跨▼闂錛?/span>
8. 浠涔堟槸servlet榪囨護鍣紵
涔熸槸涓涓?/span>java綾伙紝鍙槸瀹冨疄鐜頒簡Filter榪欎釜鎺ュ彛錛?/span>
9. servlet榪囨護鍣ㄧ殑鐢熷懡鍛ㄦ湡錛?/span>
鍒濆鍖栵細鑷姩璋冪敤init(FilterConfig config)鏂規硶
鎵ц錛氳嚜鍔ㄨ皟鐢?/span>doFilter()鏂規硶錛?/span>
閿姣侊細鑷姩璋冪敤destory()鏂規硶錛?/span>
10. servlet榪囨護鍣ㄦ湁浠涔堢敤閫旓紵
涓漢璁や負鐩墠鑷繁鐢ㄥ埌鐨凷ervlet榪囨護鍣ㄧ殑涓昏鐢ㄩ旓細鏄畨鍏ㄦф鏌?/span>
褰撶劧榪囨護鍣ㄥ湪Servlet涔嬪墠涔熷彲浠ヤ慨鏀硅姹傦紝瑕佹槸鍦?/span>Servlet涔嬪悗錛屼篃鍙互淇敼鍝嶅簲錛?/span>
11. servlet榪囨護鍣ㄦ庢牱閮ㄧ講錛?/span>
鍦?/span>web.xml涓細
<web-app>
<filter>
<filter-name>myFilter</filter-name>
<filter-class>filterPage.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>myFilter</filter-name>
<url-pattern>/Todd/*</url-pattern>
</filter-mapping>
</web-app>
榪欐牱灝辨槸璇磋璁塊棶WEB-INF涓嬬殑Todd鍖呬笅鐨?/span>jsp鎴?/span>Servlet鐨勮瘽錛屽氨蹇呴』瑕佸厛閫氳繃myFilter榪欎釜綾伙紱