鍏充簬swfupload鐨勪嬌鐢ㄨ繖閲岃嚜涓嶅繀澶氾紝榪欓噷涓昏浠嬬粛鐨勬槸瑙e喅鍦╦ava web寮鍙戣繃紼嬩腑緇忓父紕板埌鐨勯獙璇佸け璐ョ殑闂銆傝繖鏄洜涓篺lash鍦ㄤ笂浼犵殑鏃跺欎嬌鐢ㄧ殑鏄拰嫻忚鍣ㄤ笉鍚岀殑浼氳瘽錛宖lash鐨凷WFUpload涓婁紶鍒╃敤socket濂楁帴瀛楄繘琛岄氫俊錛屾墍浠ュ鑷磗ession鍜屽師鏉ヤ笂涓嬈$殑浼氳瘽涓嶅悓錛屽鑷磗ession涓㈠け銆傝繖鏍峰氨瀵艱嚧鏈嶅姟鍣ㄥ湪楠岃瘉鏃惰嚜鐒惰璁や負鏄柊浼氳瘽錛屼粠鑰岄獙璇佷笉鑳介氳繃錛屽鑷翠笂浼犱笉鑳芥垚鍔熶簡銆?br> 瑙e喅闂鐨勬柟娉曪紝灝辨槸璁ゝlash鍦ㄤ笂浼犳枃浠剁殑鏃跺欏甫涓婂悓鍦ㄤ竴涓晫闈㈢殑session鏍囪瘑錛岃繖閫氬父鏄慨鏀瑰叾涓殑upload_url鏉ヨ揪鍒版垜浠殑鐩殑錛屼慨鏀瑰涓嬫墍紺猴細
upload_url: "/admin/infobuild/image/upload.action;jsessionid=${pageContext.session.id }"
<!-- 榪欏彞瑕佹埧瀛恓sp欏甸潰涓殑script鑴氭湰涓紝鎴栨槸鏀懼湪servlet鐨剅esponse.getWriter()嫻佷腑鐨剆cript鑴氭湰涓紱鎬諱箣瑕佸湪swfupload 鐨刯s寮曞叆涔嬪墠鎵ц -->
window["sessionId"]="${pageContext.session.id}";
<!-- 榪欏彞璇濆氨鍙互鍦ㄥ紩鍏ョ殑js涓嬌鐢?-->
upload_url: Gtip.util.addContextPath("/admin/infobuild/image/upload.action;jsessionId" + "=" + window["sessionId"]),
浠ヤ笂鏂規鏄В鍐沖湪jsp欏甸潰涓В鍐崇殑鍙栧糺ava鐨勫彉閲忓鹼紱
濡備笂浠g爜鐨勭涓鍙ユ斁鍒癹sp鏂囦歡涓紝濡俲sp鐨勫叕鍏眎nclude鏂囦歡涓備笅闈竴鍙ュ氨鏀懼埌js鏂囦歡涓紝濡傚紩鍏ョ殑upload.js鏂囦歡褰撲腑銆?br> 浣嗕互涓婁唬鐮佽繕瀛樺湪涓涓棶棰橈紝灝辨槸榛樿鐨剆essionName闂銆傚湪tomcat鎴栬呭叾瀹僯2ee瀹瑰櫒錛岄粯璁ょ殑sessionName涔熸槸 jsessionId銆傚鏋滄垜浠慨鏀逛簡sessionName濡傞氳繃tomcat鐨剆erver.xml淇敼session_cookie_name錛岃繖鏍烽粯璁ょ殑sessionName灝辨槸鎴戜滑淇敼涔嬪悗鐨勪簡銆傝В鍐蟲闂錛岄渶瑕佸啀鍔犱竴涓弬鏁拌緗墠鍙紝濡備笅鎵紺猴細
<!-- 榪欎笁琛屾斁鍦╥nclude 瀵煎叆鐨勯偅涓猨sp鐨勯〉闈腑 -->
window["contextPath"] = "${pageContext.request.contextPath}";
window["sessionId"] = "${pageContext.session.id}";
window["sessionName"] = "jsessionId";
// js涓嬌鐢╦sp涓緗殑window鐨勫彉閲忓?/span>
upload_url: addContextPath("/admin/infobuild/image/upload.action;" + window["sessionName"] + "=" + window["sessionId"])
浠ヤ笂浠g爜鐨勫墠涓夎鏀懼埌鍏叡鐨刬nclude.jsp涓紝鏈鍚庝竴琛屾斁鍒板叕鍏辯殑upload.js涓傝繖鏍峰嵆鍙弧瓚蟲渶緇堣姹備簡銆?br>涓嶈繃鏈変竴鐐逛笉濂界殑鍗蟲槸錛屽湪閮ㄧ講鐜涓椂錛屽鏋滈儴緗茬幆澧冧慨鏀逛簡sessionName錛屽垯蹇呴』鍦ㄦinclude.jsp涓慨鏀逛竴涓叿浣撶殑sessionName鎵嶅彲銆?
杞澆璇鋒爣鏄庡嚭澶?i flym
鏈枃鍦板潃:http://www.iflym.com/index.php/code/201108190001.html
Servlet 鏄竴縐嶆瘮JSP 鏇存棭鐨勫姩鎬佺綉欏電紪紼嬫妧鏈傚湪娌℃湁JSP 涔嬪墠錛?Servlet 涔熸槸鍚屾椂鍏呭綋瑙嗗浘灞傘佷笟鍔¢昏緫灞傚強鎸佷箙灞傝鑹層?
Servlet 鐨勫紑鍙戞晥鐜囬潪甯鎬綆錛岀壒鍒槸褰撲嬌鐢⊿ervlet 鐢熸垚琛ㄧ幇灞傞〉闈㈡椂錛岄〉闈腑鎵鏈夌殑HTML 鏍囩錛岄兘闇閲囩敤Servlet 鐨勮緭鍑烘祦鏉ヨ緭鍑猴紝鍥犳鏋佸叾鐑︾悙銆傜敱浜嶴ervlet 鏄釜鏍囧噯鐨凧ava 綾伙紝鍥犳蹇呴』鐢辯▼搴忓憳寮鍙戯紝鍏朵慨鏀歸毦搴﹀ぇ錛岀編宸ヤ漢鍛樻牴鏈棤娉曞弬涓嶴ervlet 欏甸潰鐨勫紑鍙戙傝繖涓緋誨垪鐨勯棶棰橈紝閮介樆紕嶄簡Servlet 浣滀負琛ㄧ幇灞傜殑浣跨敤銆?
鑷狹VC 瑙勮寖鍑虹幇鍚庯紝 Servlet 鐨勮矗浠誨紑濮嬫槑紜笅鏉ワ紝浠呬粎浣滀負鎺у埗鍣ㄤ嬌鐢紝涓嶅啀闇瑕佺敓鎴愰〉闈㈡爣絳撅紝涔熶笉鍐嶄綔涓鴻鍥懼眰瑙掕壊浣跨敤銆?
Servlet 錛岄氬父縐頒負鏈嶅姟鍣ㄧ灝忕▼搴忥紝鏄繍琛屽湪鏈嶅姟鍣ㄧ鐨勭▼搴忥紝鐢ㄤ簬澶勭悊鍙婂搷搴斿鎴風璇鋒眰銆?
Servlet 鏄釜鐗規畩鐨凧ava 綾伙紝榪欎釜Java 綾誨繀欏葷戶鎵縃ttpServlet 銆傛瘡涓猄ervlet 鍙互鍝嶅簲鎴風鐨勮姹傘係ervlet 鎻愪緵涓嶅悓鐨勬柟娉曠敤浜庡搷搴斿鎴風璇鋒眰銆?
doGet: 鐢ㄤ簬鍝嶅簲瀹㈡埛绔殑get 璇鋒眰銆?
doPost: 鐢ㄤ簬鍝嶅簲瀹㈡埛绔殑post 璇鋒眰銆?
doPut: 鐢ㄤ簬鍝嶅簲瀹㈡埛绔殑put 璇鋒眰銆?
doDelete: 鐢ㄤ簬鍝嶅簲瀹㈡埛绔殑delete 璇鋒眰銆?
浜嬪疄涓婏紝瀹㈡埛绔殑璇鋒眰閫氬父鍙湁get 鍜宲ost 涓ょ; Servlet 涓轟簡鍝嶅簲榪欎袱縐嶈姹傦紝蹇呴』閲嶅啓doGet 鍜宒oPost 涓や釜鏂規硶銆傚鏋淪ervlet 涓轟簡鍝嶅簲鍥涗釜鏂規硶錛屽垯闇瑕佸悓鏃墮噸鍐欎笂闈㈢殑鍥涗釜鏂規硶銆?
澶ч儴鍒嗘椂鍊欙紝 Servlet 瀵逛簬鎵鏈夎姹傜殑鍝嶅簲閮芥槸瀹屽叏涓鏍風殑銆傛鏃訛紝鍙互閲囩敤閲嶅啓涓涓柟娉曟潵浠f浛涓婇潰鐨勫嚑涓柟娉曪紝 Servlet 鍙渶閲嶅啓service 鏂規硶鍗沖彲鍝嶅簲瀹㈡埛绔殑鎵鏈夎姹傘傚彟澶栵紝 HttpServlet 榪樺寘鍚袱涓柟娉曘?
init(ServletConfig config): 鍒涘緩Servlet 瀹炰緥鏃訛紝璋冪敤鐨勫垵濮嬪寲鏂規硶銆?
destroy: 閿姣丼ervlet 瀹炰緥鏃訛紝鑷姩璋冪敤鐨勮祫婧愬洖鏀舵柟娉曘?
閫氬父鏃犻』閲嶅啓init鍜宒estroy涓や釜鏂規硶錛岄櫎闈為渶瑕佸湪鍒濆鍖朣ervlet 鏃訛紝瀹屾垚鏌愪簺璧勬簮鍒濆鍖栫殑鏂規硶錛屾墠鑰冭檻閲嶅啓init 鏂規硶銆傚鏋滈渶瑕佸湪閿姣丼ervlet 涔嬪墠錛屽厛瀹屾垚鏌愪簺璧勬簮鐨勫洖鏀訛紝姣斿鍏抽棴鏁版嵁搴撹繛鎺ョ瓑錛屾墠闇瑕侀噸鍐檇estroy 鏂規硶銆?
娉ㄦ剰:濡傛灉閲嶅啓浜唅nit(ServletConfig config)鏂規硶錛屽垯搴斿湪閲嶅啓璇ユ柟娉曠殑絎竴琛岃皟鐢╯uper.init(config) 銆傝鏂規硶灝嗚皟鐢℉ttpServlet 鐨刬nit 鏂規硶銆?
Servlet 鍜孞SP 鐨勫尯鍒湪浜?
Servlet 涓病鏈夊唴緗璞★紝鍘熸潵JSP 涓殑鍐呯疆瀵硅薄閮藉繀欏婚氳繃HttpServletRequest瀵硅薄錛屾垨鐢盚ttpServletResponse 瀵硅薄鐢熸垚:
瀵逛簬闈欐佺殑HTML 鏍囩錛?Servlet 閮藉繀欏諱嬌鐢ㄩ〉闈㈣緭鍑烘祦閫愯杈撳嚭銆?
榪欎篃姝f槸絎旇呭湪鍓嶉潰浠嬬粛鐨? JSP 鏄疭ervlet 鐨勪竴縐嶇畝鍖栵紝浣跨敤JSP 鍙渶瑕佸畬鎴愮▼搴忓憳闇瑕佽緭鍑哄埌瀹㈡埛绔殑鍐呭錛岃嚦浜嶫SP 涓殑Java 鑴氭湰濡備綍闀跺祵鍒頒竴涓被涓紝鐢盝SP 瀹瑰櫒瀹屾垚銆傝孲ervlet 鍒欐槸涓畬鏁寸殑Java 綾伙紝榪欎釜綾葷殑service 鏂規硶鐢ㄤ簬鐢熸垚瀵瑰鎴風鐨勫搷搴斻?
Servlet 鐨勯厤緗?/strong> 緙栬緫濂界殑Servlet 婧愭枃浠跺茍涓嶈兘鍝嶅簲鐢ㄦ埛璇鋒眰錛岃繕蹇呴』灝嗗叾緙栬瘧鎴恈lass 鏂囦歡銆傚皢緙栬瘧鍚庣殑HelloServlet. class 鏂囦歡鏀懼湪WEB-INF/classes 璺緞涓嬶紝濡傛灉Servlet 鏈夊寘錛屽垯榪樺簲璇ュ皢class 鏂囦歡鏀懼湪瀵瑰簲鐨勫寘璺緞涓嬨? 涓轟簡璁㏒ervlet 鑳藉搷搴旂敤鎴瘋姹傦紝榪樺繀欏誨皢Servlet 閰嶇疆鍦╓eb 搴旂敤涓傞厤緗甋ervlet鏃訛紝闇瑕佷慨鏀箇eb.xrnl 鏂囦歡銆? 閰嶇疆Servlet 闇瑕侀厤緗袱涓儴鍒嗐?lt;servlet>/<servlet-mapping> Servlet鐨勭敓鍛藉懆鏈?/strong> Servlet 鍦ㄥ鍣ㄤ腑榪愯錛屽叾瀹炰緥鐨勫垱寤哄強閿姣佺瓑閮戒笉鏄敱紼嬪簭鍛樺喅瀹氱殑錛岃屾槸鐢卞鍣ㄨ繘琛屾帶鍒躲? Servlet 鐨勫垱寤烘湁涓や釜閫夋嫨銆? 瀹㈡埛绔姹傚搴旂殑Servlet 鏃訛紝鍒涘緩Servlet 瀹炰緥:澶ч儴鍒嗙殑Servlet 閮芥槸榪欑Servlet銆?Web 搴旂敤鍚姩鏃訛紝绔嬪嵆鍒涘緩Servlet 瀹炰緥:鍗砽oad-on-startup Servlet銆? 姣忎釜Servlet 鐨勮繍琛岄兘閬靛驚濡備笅鐢熷懡鍛ㄦ湡銆? (1)鍒涘緩Servlet 瀹炰緥銆? (2) Web 瀹瑰櫒璋冪敤Servlet 鐨刬nit 鏂規硶錛屽Servlet 榪涜鍒濆鍖栥? (3) Servlet 鍒濆鍖栧悗錛屽皢涓鐩村瓨鍦ㄤ簬瀹瑰櫒涓紝鐢ㄤ簬鍝嶅簲瀹㈡埛绔姹傘傚鏋滃鎴風鏈塯et 璇鋒眰錛屽鍣ㄨ皟鐢⊿ervlet 鐨刣oGet 鏂規硶澶勭悊騫跺搷搴旇姹傘傚浜庝笉鍚岀殑璇鋒眰錛屾湁涓嶅悓鐨勫鐞嗘柟娉曪紝鎴栬呯粺涓浣跨敤service 鏂規硶澶勭悊鏉ュ搷搴旂敤鎴瘋姹傘? (4) Web 瀹瑰櫒瑙掕壊閿姣丼ervlet 鏃訛紝璋冪敤Servlet 鐨刣estroy 鏂規硶錛岄氬父鍦ㄥ叧闂璚eb瀹瑰櫒涔嬫椂閿姣丼ervlet銆? 浣跨敤Servlet鍒涗綔涓烘帶鍒跺櫒 姝e鍓嶉潰瑙佸埌錛屼嬌鐢⊿ervlet 浣滀負琛ㄧ幇灞傜殑宸ヤ綔閲忓お澶э紝鎵鏈夌殑HTML 鏍囩閮介渶瑕佷嬌鐢ㄩ〉闈㈣緭鍑烘祦鐢熸垚銆傚洜姝わ紝浣跨敤Servlet 浣滀負琛ㄧ幇灞傛湁濡備笅涓変釜鍔e娍銆? 寮鍙戞晥鐜囦綆錛屾墍鏈夌殑HTML 鏍囩閮介渶浣跨敤欏甸潰杈撳嚭嫻佸畬鎴愩? 涓嶅埄浜庡洟闃熷崗浣滃紑鍙戯紝緹庡伐浜哄憳鏃犳硶鍙備笌Servlet 鐣岄潰鐨勫紑鍙戙? 紼嬪簭鍙淮鎶ゆу樊錛屽嵆浣夸慨鏀逛竴涓寜閽殑鏍囬錛岄兘蹇呴』閲嶆柊緙栬緫Java 浠g爜錛屽茍閲嶆柊緙栬瘧銆? 鏁翠釜緇撴瀯闈炲父娓呮櫚錛屼笅闈㈡槸MVC 涓悇涓鑹茬殑瀵瑰簲緇勪歡銆? M: Model錛屽嵆妯″瀷錛屽搴擩avaBean 銆? V: View 錛屽嵆瑙嗗浘錛屽搴擩SP 欏甸潰銆? C: Controller錛屽嵆鎺у埗鍣紝瀵瑰簲Servlet銆?/p> load-on-startup Servlet Servlet 鐨勫疄渚嬪寲鏈変袱涓椂鏈?鐢ㄦ埛璇鋒眰涔嬫椂錛屾垨搴旂敤鍚姩涔嬫椂銆傚簲鐢ㄥ惎鍔ㄦ椂灝卞惎鍔ㄧ殑Servlet 閫氬父鏄敤浜庢煇浜涘悗鍙版湇鍔$殑Servlet 錛屾垨鑰呮嫤鎴緢澶氳姹傜殑Servlet; 榪欑Servlet 閫氬父浣滀負搴旂敤鐨勫熀紜Servlet 浣跨敤錛屾彁渚涢噸瑕佺殑鍚庡彴鏈嶅姟銆傚鏋滈渶瑕乄eb 搴旂敤鍚姩鏃訛紝鍙嬌鐢╨oad-on-startup 鍏冪礌瀹屾垚Servlet 鐨勫垵濮嬪寲銆俵oad-on-startup 鍏冪礌鍙帴鏀朵竴涓暣鍨嬪鹼紝榪欎釜鏁村瀷鍊艱秺灝忥紝 Servlet 灝辮秺浼樺厛鍒濆鍖栥?/p> 璁塊棶Servlet 鐨勯厤緗弬鏁? 閰嶇疆Servlet 鏃訛紝榪樺彲浠ュ鍔犻檮鍔犵殑閰嶇疆鍙傛暟銆傞氳繃浣跨敤閰嶇疆鍙傛暟錛屽彲浠ュ疄鐜版洿濂藉湴瑙h︼紝閬垮厤灝嗘墍鏈夌殑鍙傛暟浠ョ‖緙栫爜鏂瑰紡鍐欏湪紼嬪簭涓? 璁塊棶Servlet 閰嶇疆鍙傛暟瑕侀氳繃ServletConfig 綾葷殑瀹炰緥瀹屾垚錛?ServletConfig鎻愪緵濡備笅鏂規硶銆? java.lang.String getInitParameter(java.lang.String name): 鐢ㄤ簬鑾峰彇鍒濆鍖栧弬鏁般? 娉ㄦ剰: JSP 鐨勫唴鐩村璞onfig 灝辨槸姝ゅ鐨凷ervletConfig 鑷畾涔夋爣絳劇被 浣跨敤鏍囩綾伙紝鍙互浣跨敤綆鍗曠殑鏍囩鏉ュ皝瑁呭鏉傜殑鍔熻兘錛屼粠鑰屼嬌鍥㈤槦鏇村ソ鍦板崗浣滃紑鍙?鑳借緹庡伐浜哄憳鏇村ソ鍦板弬涓嶫SP 欏甸潰鐨勫紑鍙?銆? 鑷畾涔夋爣絳劇被閮藉繀欏葷戶鎵夸竴涓埗綾? java.Servlet.jsp.tagext.TagSupport 銆傞櫎姝や箣澶栵紝鑷畾涔夋爣絳劇被榪樻湁濡備笅瑕佹眰銆? 路濡傛灉鏍囩綾誨寘鍚睘鎬э紝姣忎釜灞炴ч兘鏈夊搴旂殑getter 鍜宻etter 鏂規硶銆? 路閲嶅啓doStartTag鎴杁oEndTag鏂規硶錛岃繖涓や釜鏂規硶鐢熸垚欏甸潰鍐呭銆? 路濡傛灉闇瑕佸湪閿姣佹爣絳句箣鍓嶅畬鎴愯祫婧愬洖鏀訛紝鍒欓噸鍐檙e1ease鏂規硶銆?/p> TLD 鏂囦歡 TLD 鏄疶ag Library Definition 鐨勭緝鍐欙紝鍗蟲爣絳懼簱瀹氫箟錛屾枃浠剁殑鍚庣紑鏄痶ld 錛屾瘡涓猅LD鏂囦歡瀵瑰簲涓涓爣絳懼簱錛屼竴涓爣絳懼簱涓彲鍖呭惈澶氫釜鏍囩銆俆LD 鏂囦歡涔熺О涓烘爣絳懼簱瀹氫箟鏂囦歡銆傛爣絳懼簱瀹氫箟鏂囦歡鐨勬牴鍏冪礌鏄痶aglib錛屽畠鍙互鏈夊涓猼ag 瀛愬厓绱狅紝姣忎釜tag 瀛愬厓绱犻兘瀵瑰簲涓涓爣絳俱? 緙栬緫浜嗘爣絳懼簱瀹氫箟鏂囦歡榪樹笉澶燂紝 Web 瀹瑰櫒榪樻棤娉曞姞杞芥爣絳懼簱瀹氫箟鏂囦歡銆傝繕蹇呴』鍦╳eb.xml 鏂囦歡涓鍔犳爣絳懼簱鐨勫畾涔夈傚湪web.xml 鏂囦歡涓畾涔夋爣絳懼簱鏃朵嬌鐢╰aglib 鍏冪礌錛岃鍏冪礌鍖呭惈涓や釜瀛愬厓绱? taglib-uri鍜宼aglib-location錛屽墠鑰呯‘瀹氭爣絳懼簱鐨刄RI; 鍚庤呯‘瀹氭爣絳懼簱瀹氫箟鏂囦歡鐨勪綅緗?/p> 浣跨敤鏍囩搴? 浣跨敤鏍囩搴撳垎鎴愪互涓嬩袱姝ャ? (1) 瀵煎叆鏍囩搴?浣跨敤taglib 緙栬瘧鎸囦護瀵煎叆鏍囩銆? (2) 浣跨敤鏍囩:鍦↗SP 欏甸潰涓嬌鐢ㄨ嚜瀹氫箟鏍囩銆? taglib 鐨勮娉曟牸寮忓涓? 銆?@ taglib uri="tagliburi" prefix="tagPrefix" %銆? 鍏朵腑uri 灞炴х‘瀹氭爣絳懼簱瀹氫箟鏂囦歡鐨刄RI錛岃繖涓猆RI 灝辨槸鍦╳eb.xml 鏂囦歡涓負鏍囩 搴撳畾涔夌殑URI銆傝宲refix 灞炴х‘瀹氱殑鏄爣絳懼墠緙錛屽嵆鍦↗SP 欏甸潰涓嬌鐢ㄦ爣絳炬椂錛岃鏍囩 搴撹礋璐e鐞嗙殑鏍囩鍓嶇紑銆? 浣跨敤鏍囩鐨勮娉曟牸寮忓涓? <tagPrefix : tagName tagAttribute=ntagValue n ...> <tagBody/> </tagPrefix> 濡傛灉璇ユ爣絳炬病鏈夋爣絳句綋錛屽垯鍙互浣跨敤濡備笅璇硶鏍煎紡: <tagPrefix : tagName tagAttribute=ntagValue n 鈥?> 甯︽爣絳句綋鐨勬爣絳? 甯︽爣絳句綋鐨勬爣絳撅紝灝辨槸鍏佽鍦ㄦ爣絳懼唴宓屽鏍囩錛岄氬父鍙敤浜庡畬鎴愪竴浜涢昏緫榪愮畻渚嬪鍒ゆ柇鍜屽驚鐜瓑銆? 甯︽爣絳句綋鐨勬爣絳鵑渶瑕佺戶鎵緽odyTagSupport錛岃綾誨寘鍚竴涓猙odyContent 灞炴э紝璇ュ睘鎬т唬琛ㄦ爣絳句綋銆? BodyTagSupport 榪樺寘鍚袱涓柟娉曘? doAfterBody: 姣忔澶勭悊瀹屾爣絳句綋鍚庤皟鐢ㄨ鏂規硶銆? void doInitBody: 寮濮嬭皟鐢ㄦ爣絳句綋鏃惰皟鐢ㄨ鏂規硶銆? 濡傛灉鏈夊繀瑕侊紝鍙互閲嶅啓榪欎袱涓柟娉曘? 鍦ㄥ鐞嗘爣絳劇被鐨勫悇涓柟娉曚腑錛屼笉鍚岀殑榪斿洖鍊煎搴斾笉鍚岀殑鍚箟錛屽父鐢ㄧ殑榪斿洖鍊兼湁濡備笅鍑犱釜銆? SKIP_BODY: 涓嶅鐞嗘爣絳句綋錛岀洿鎺ヨ皟鐢╠oEndTag鏂規硶銆? SKIP_PAGE: 蹇界暐鏍囩鍚庨潰鐨凧SP 欏甸潰銆? EVAL_PAGE: 澶勭悊鏍囩緇撴潫錛岀洿鎺ュ鐞嗛〉闈㈠唴瀹廣? EVAL_BODY_BUFFERED: 澶勭悊鏍囩浣撱? EVAL_BODY_INCLUDE: 澶勭悊鏍囩浣擄紝浣嗗拷鐣etBodyContent鍜宒oInitBody鏂規硶銆? EVAL_BODY_AGAIN: 瀵規爣絳句綋寰幆澶勭悊銆? Filter Filter 騫朵笉鏄竴涓爣鍑嗙殑Servlet 錛屽畠涓嶈兘澶勭悊鐢ㄦ埛璇鋒眰錛屼篃涓嶈兘瀵瑰鎴風鐢熸垚鍝嶅簲銆備富瑕佺敤浜庡HttpServletRequest 榪涜棰勫鐞嗭紝涔熷彲浠ュHttpServletResponse 榪涜鍚庡鐞嗭紝鏄釜鍏稿瀷鐨勫鐞嗛摼銆? Filter 鏈夊涓嬪嚑涓敤澶勩?/u> 路鍦℉ttpServletRequest 鍒拌揪Servlet 涔嬪墠錛屾嫤鎴鎴風殑HttpServletRequest 銆? 路鏍規嵁闇瑕佹鏌ttpServletRequest 錛屼篃鍙互淇敼HttpServletRequest 澶村拰鏁版嵁銆? 路鍦℉ttpServletResponse 鍒拌揪瀹㈡埛绔箣鍓嶏紝鎷︽埅HttpServletResponse 銆? 路鏍規嵁闇瑕佹鏌ttpServletResponse 錛屼篃鍙互淇敼HttpServletResponse 澶村拰鏁版嵁銆? Filter 鏈夊涓嬪嚑涓綾匯?/em> 路鐢ㄦ埛鎺堟潈鐨凢ilter: Filter 璐熻矗媯鏌ョ敤鎴瘋姹傦紝鏍規嵁璇鋒眰榪囨護鐢ㄦ埛闈炴硶璇鋒眰銆? 路鏃ュ織Filter: 璇︾粏璁板綍鏌愪簺鐗規畩鐨勭敤鎴瘋姹傘? 路璐熻矗瑙g爜鐨凢ilter: 鍖呮嫭瀵歸潪鏍囧噯緙栫爜鐨勮姹傝В鐮併? .鑳芥敼鍙榅ML 鍐呭鐨刋SLTFilter 絳夈? 涓涓狥ilter 鍙礋璐f嫤鎴涓姹傛垨鍝嶅簲:涓涓姹傛垨鍝嶅簲涔熷彲琚涓姹傛嫤鎴? 鍒涘緩涓涓狥ilter 鍙渶涓や釜姝ラ: (1)鍒涘緩Filter 澶勭悊綾? (2) 鍦╳eb.xml 鏂囦歡涓厤緗瓼ilter銆? 鍒涘緩Filter 綾?/u> 鍒涘緩Filter 蹇呴』瀹炵幇javax.servle t. Filter 鎺ュ彛錛屽湪璇ユ帴鍙d腑瀹氫箟浜嗕笁涓柟娉曘? void init(FilterConfig config): 鐢ㄤ簬瀹屾垚Filter 鐨勫垵濮嬪寲銆? void destroy: 鐢ㄤ簬Filter 閿姣佸墠錛屽畬鎴愭煇浜涜祫婧愮殑鍥炴敹銆? void doFilter(ServletRequest request, ServletResponse response,FilterChain chain): 瀹炵幇榪囨護鍔熻兘錛岃鏂規硶灝辨槸瀵規瘡涓姹傚強鍝嶅簲澧炲姞鐨勯澶栧鐞嗐? 鎵цchain.doFilter(request錛宺eponse)鏂規硶錛屽綋Filter 瀵硅姹傝繃婊ゅ悗錛屼緷鐒跺皢璇鋒眰鍙戦佸埌鐩殑鍦板潃銆傚鏋滄鏌ユ潈闄愶紝鍙互鍦‵ilter 涓牴鎹敤鎴瘋姹傜殑HttpSession錛屽垽鏂敤鎴鋒潈闄愭槸鍚﹁凍澶熴? 濡傛灉鏉冮檺涓嶅錛屽垯璋冪敤閲嶅畾鍚戝嵆鍙紝鏃犻』璋冪敤chain.doFilter(request錛宺eponse)鏂規硶銆? 閰嶇疆Filter Filter 鐨勯厤緗拰Servlet 鐨勯厤緗潪甯哥浉浼鹼紝閮介渶瑕侀厤緗袱涓儴鍒? 路閰嶇疆Filter 鍚嶃? 路閰嶇疆Filter 鎷︽埅URL 妯″紡銆? 鍖哄埆鍦ㄤ簬錛?Servlet 閫氬父鍙厤緗竴涓猆RL 錛岃孎ilter 鍙互鍚屾椂鎷︽埅澶氫釜璇鋒眰鐨刄RL銆? 鍥犳錛屽彲浠ラ厤緗涓狥ilter 鎷︽埅妯″紡銆? Listener Listener 鐨勪綔鐢ㄩ潪甯哥被浼間簬load-on-startup Servlet銆傜敤浜庡湪Web 搴旂敤鍚姩鏃訛紝鍚姩鏌愪簺鍚庡彴紼嬪簭錛岃繖浜涘悗鍙扮▼搴忚礋璐d負緋葷粺榪愯鎻愪緵鏀寔銆? Listener 涓巐oad-on-startup Servlet 鐨勫尯鍒湪浜? Listener 鐨勫惎鍔ㄦ椂鏈烘瘮load-on-startup Servlet 鏃╋紝鍙槸Listener 鏄疭ervlet 2.3 瑙勮寖涔嬪悗鎵嶅嚭鐜扮殑銆? 浣跨敤Listener 鍙渶瑕佷袱涓楠? (1) 鍒涘緩Listener 瀹炵幇綾匯? (2) 鍦╳eb.xml 鏂囦歡涓厤緗甃istener銆? 鍒涘緩Listener 綾?/em> 鍒涘緩Li stener 綾誨繀欏誨疄鐜癝ervletContex tListener 鎺ュ彛錛岃鎺ュ彛鍖呭惈涓や釜鏂規硶銆? eontextInitialized(ServletContextEvent see): 鍚姩Web 搴旂敤鏃訛紝緋葷粺璋冪敤璇ilter鐨勬柟娉曘? eontextDestroyed(ServletContextEvent see): 鍏抽棴Web 搴旂敤鏃跺欙紝緋葷粺璋冪敤Filter 鐨勬柟娉曘? 閰嶇疆Listener 姝eload-an-startup Servlet 涓鏍鳳紝 Listener 鐢ㄤ簬鍚姩Web 搴旂敤鐨勫悗鍙版湇鍔$▼搴忥紝浣嗕笉璐熻矗澶勭悊鍙婂搷搴旂敤鎴瘋姹傦紝鍥犳鏃犻』閰嶇疆URL銆? 鑻ュ皢Listener 閰嶇疆鍦╓eb 瀹瑰櫒涓?濡傛灉Web 瀹瑰櫒鏀寔Listener)錛屽垯Listener 灝嗛殢Web 搴旂敤鐨勫惎鍔ㄨ屽惎鍔ㄣ? 閰嶇疆Listener 鏃朵嬌鐢?lt;listener/>鍏冪礌錛屼笅闈㈡槸閰嶇疆Listener 鐨勭墖孌? <!-- 閰嶇疆Listener--> <listener> <!- 鎸囧畾Listener 鐨勫疄鐜扮被鈫? <listener-class>lee.ScheduleListener</listener-class> </listener> 鍦ㄤ笂闈㈢殑閰嶇疆涓紝鏃㈡棤欏婚厤緗甃istener 鐨勫悕瀛楋紝涔熸棤欏婚厤緗甃istener 鐨刄RL 鍙渶閰嶇疆瀹冪殑瀹炵幇綾誨嵆鍙傛鏃跺鍣ㄥ皢鑷姩媯嫻嬮儴緗插湪瀹瑰櫒涓殑Listener錛屽茍鍦ㄥ簲鐢ㄥ惎鍔ㄦ椂錛岃嚜鍔ㄥ姞杞芥墍鏈夌殑Listener銆?/p>
]]>