㈠ jsP 頁面的執行過程包括哪些步驟
JSP執行過程,
1. 用戶請求JSP頁面(HTTP請求)
2. web server中的servlet容器發現URL中有JSP後綴, 就調用JSP容器來處理
3. 如果此頁面是第一次被請求, JSP容器要定位JSP頁面文件並解釋它,
解釋的過程包括: 將JSP源文件處理成servlet代碼(java), 以及編譯java文件生成servlet的call文件.
說明: JSP解釋器生成的servlet類是實現了java.servlet.jsp.HttpJspPate介面的類(由JSP容器提供)的一個子類, 這個servlet類叫做頁面實現類(JSP頁面實例);
4. JSP容器運行頁JSP頁面實例, 此時servlet(即JSP頁面實例)就會出來HTTP請求, 生成對於的HTTP響應並傳回給客戶端. 如果此頁面不是第一次被請求, 則跳過3, 直接跳到4.
5. 結束
㈡ jsp的工作原理
JSP工作原理 JSP
在一個JSP文件第一次被請求時,JSP引擎把該JSP文件轉換成為一個servlet。而這個引擎本身也是一個servlet,在JSWDK或WEBLOGIC中,它就是JspServlet。 JSP引擎先把該JSP文件轉換成一個Java源文件,在轉換時如果發現jsp文件有任何語法錯誤,轉換過程將中斷,並向服務端和客戶端輸出出錯信息;如果轉換成功, JSP引擎用javac把該Java源文件編譯成相應的class文件。然後創建一個該SERVLET的實例,該SERVLET的jspInit()方法被執行,jspInit()方法在servlet的生命周期中只被執行一次。然後jspService()方法被調用來處理客戶端的請求。對每一個請求,JSP引擎創建一個新的線程來處理該請求。如果有多個客戶端同時請求該JSP文件,則JSP引擎會創建多個線程。每個客戶端請求對應一個線程。以多線程方式執行可大大降低對系統的資源需求,提高系統的並發量及響應時間.但應該注意多線程的編程限制,由於該servlet始終駐於內存,所以響應是非常快的。如果.jsp文件被修改了,伺服器將根據設置決定是否對該文件重新編譯,如果需要重新編譯,則將編譯結果取代內存中的servlet,並繼續上述處理過程。雖然JSP效率很高,但在第一次調用時由於需要轉換和編譯而有一些輕微的延遲。此外,如果在任何時候如果由於系統資源不足的原因,JSP引擎將以某種不確定的方式將servlet從內存中移去。當這種情況發生時jspDestroy()方法首先被調用, 然後servlet實例便被標記加入"垃圾收集"處理。 jspInit()及jspDestory()格式如下:可在jspInit()中進行一些初始化工作,如建立與資料庫的連接,或建立網路連接,從配置文件中取一些參數等,在jspDestory()中釋放相應的資源。
<%!
public void jspInit()
{
System.out.println("jspinit");
}
%>
<%!
public void jspDestory()
{
System.out.println("jspDestory");
}
%>
㈢ JSP瀹炵幇欏甸潰鐨勫憟鐜幫紝JavaBean瀹炵幇鏁版嵁鐨勬搷浣滐紝Servlet瀹炵幇璇鋒眰鐨勫勭悊銆傝兘緇欐垜涓浠藉悧 璋㈣阿
1銆丣SP浣滀負寰堝ソ鐨勫姩鎬佺綉絝欏紑鍙戣璦寰楀埌浜嗗箍娉涚殑搴旂敤銆傚湪鍚勭被JSP搴旂敤涓錛孞SP緇撳悎JavaBean鎴愪負浜嗕竴縐嶄簨瀹炰笂鏈甯歌佺殑JSP紼嬪簭鏍囧噯銆
JSP-JavaBean寮鍙戞ā寮
錛1錛塉avaBean錛氬寘鍚浜哤eb搴旂敤涓紼嬪簭鍔熻兘鐨勬牳蹇冿紝璐熻矗瀛樺偍涓嶹eb搴旂敤鐩稿叧鐨勬暟鎹錛岄泦涓浣撶幇浜嗗簲鐢ㄧ▼搴忕殑鐘舵併侸avaBean鍦↗SP-JavaBean妯″紡涓錛屼富瑕佺敤鏉ュ勭悊浜嬪姟閫昏緫鍜屾暟鎹緇撴瀯錛岃兘澶熶笌鏁版嵁搴撴垨鏂囦歡緋葷粺榪涜屼氦浜掞紝鎵挎媴緇存姢搴旂敤紼嬪簭鐨勮矗浠匯
錛2錛塉SP錛欽SP鍦↗SP-JavaBean妯″紡涓鏈変袱縐嶄富瑕佷綔鐢錛氬疄鐜拌嗗浘錛岄氳繃瑙嗗浘鐢ㄦ埛鍙浠ヨ塊棶JavaBean涓鐨勬暟鎹錛涘疄鐜版帶
鍒訛紝JSP闄や簡璐熻矗Web欏甸潰瑙嗗浘錛岃繕璐熻矗鏁翠釜Web搴旂敤紼嬪簭鐨勬祦紼嬫帶鍒訛紝鏍規嵁鐢ㄦ埛鐨勮鋒眰綾誨瀷鏉ュ喅瀹氬簲鐢ㄧ▼搴忕殑鎿嶄綔錛屽傛暟鎹鐨勬洿鏂般佺淮鎶わ紝欏甸潰鐨勬樉紺轟笌杞
鍙戙
閫氳繃浣跨敤JSP-JavaBean寮鍙戞ā寮忥紝鍙浠ュ疄鐜伴〉闈㈢殑鏄劇ず鍜岄〉闈㈠唴瀹瑰垎紱匯備絾鏄澶ч噺浣跨敤榪欑嶆ā寮忓紑鍙慦eb搴旂敤鏃訛紝灝變細瀵艱嚧鍦↗SP欏甸潰涓宓屽叆澶ч噺鐨凧ava鎺у埗浠g爜錛屽綋欏甸潰涓澶勭悊鐨勪笟鍔¢昏緫澶嶆潅鏃訛紝榪欎簺浠g爜浣垮緱欏甸潰鍙樺緱寰堝ぇ錛屽洜姝よ繖縐嶅紑鍙戞ā寮忓彧閫傚悎灝忓瀷鐨勫簲鐢ㄣ
2銆<%@ page contentType="text/html; charset=gb2312"%>
3銆<jsp:forward>鍔ㄤ綔鏍囪瘑鐢ㄦ潵灝嗚鋒眰杞鍙戝埌鍙﹀栦竴涓狫SP銆丠TML鎴栫浉鍏崇殑璧勬簮鏂囦歡涓銆傚綋璇ユ爣璇嗚鎵ц屽悗錛屽綋鍓嶇殑欏甸潰灝嗕笉鍐嶈鎵ц岋紝鑰屾槸鍘繪墽琛岃ユ爣璇嗘寚瀹氱殑鐩鏍囬〉闈銆
4銆乯sp澶勭悊鏃舵湇鍔″櫒鎶妀sp鏂囦歡杞鎹㈡垚.java鏂囦歡錛岀劧鍚庡啀榪涜岀紪璇戞垚.class鏂囦歡銆傝繖涓榪囩▼涓杞鎹銆佺紪璇戝け璐ラ兘浼氭姤閿欍倀omcat 閲屼笉璁懼畾work dir 鐨勮瘽錛屼細榛樿ゆ斁鍒皌omcat_home\wor\Catalina\localhost閲 銆侸SP浼氬厛緙栬瘧鎴愪負Servlet鐨勶紝鐒跺悗鏀懼埌欏甸潰涓婃墽琛屾湇鍔″櫒鎺ユ敹鍒頒竴涓璇鋒眰鍚庯紝浼氱敓鎴愪竴涓鎶ュ憡鈥渞esponse鈥濄傝繖涓鎶ュ憡鍙浠ユ槸寰堝氭牸寮忕殑銆傛姤鍛婁互嫻佺殑鏂瑰紡閫佸洖嫻忚堝櫒銆傝繖鏍鋒姤鍛婁細鐢熸垚html婧愭枃浠訛紝嫻忚堝櫒榪涜岃В鏋愩傝繘琛屾樉紺烘垨鎵ц岄噷闈㈢殑js鑴氭湰銆俲s鑴氭湰瀵規湇鍔″櫒絝灝辨槸涓孌墊枃鏈錛屼細琚嫻忚堝櫒瑙f瀽榪愯屻
5銆佸墠鑰呮槸鎸囦護鍏冪礌銆佸悗鑰呮槸琛屼負鍏冪礌銆俲sp:include鍔ㄤ綔鍜宨nclude鎸囦護涔嬮棿鐨勬牴鏈鎬х殑涓嶅悓鍦ㄤ簬瀹冧滑琚璋冪敤鐨勬椂闂淬俲sp:include鍔ㄤ綔鍦ㄨ鋒眰鏈熼棿琚嬋媧伙紝鑰宨nclude鎸囦護鍦ㄩ〉闈㈣漿鎹㈡湡闂磋嬋媧
6銆併1.request瀵硅薄
銆銆瀹㈡埛絝鐨勮鋒眰淇℃伅琚灝佽呭湪request瀵硅薄涓錛岄氳繃瀹冩墠鑳戒簡瑙e埌瀹㈡埛鐨勯渶奼傦紝鐒跺悗鍋氬嚭鍝嶅簲銆傚畠鏄疕ttpServletRequest綾葷殑瀹炰緥銆
銆銆搴忓彿 鏂 娉 璇 鏄
銆銆1 object getAttribute(String name) 榪斿洖鎸囧畾灞炴х殑灞炴у
銆銆2 Enumeration getAttributeNames() 榪斿洖鎵鏈夊彲鐢ㄥ睘鎬у悕鐨勬灇涓
銆銆3 String getCharacterEncoding() 榪斿洖瀛楃︾紪鐮佹柟寮
銆銆4 int getContentLength() 榪斿洖璇鋒眰浣撶殑闀垮害錛堜互瀛楄妭鏁幫級
銆銆5 String getContentType() 寰楀埌璇鋒眰浣撶殑MIME綾誨瀷
銆銆6 ServletInputStream getInputStream() 寰楀埌璇鋒眰浣撲腑涓琛岀殑浜岃繘鍒舵祦
銆銆7 String getParameter(String name) 榪斿洖name鎸囧畾鍙傛暟鐨勫弬鏁板
銆銆8 Enumeration getParameterNames() 榪斿洖鍙鐢ㄥ弬鏁板悕鐨勬灇涓
銆銆9 String[] getParameterValues(String name) 榪斿洖鍖呭惈鍙傛暟name鐨勬墍鏈夊肩殑鏁扮粍
銆銆10 String getProtocol() 榪斿洖璇鋒眰鐢ㄧ殑鍗忚綾誨瀷鍙婄増鏈鍙
銆銆11 String getScheme() 榪斿洖璇鋒眰鐢ㄧ殑璁″垝鍚,濡:http.https鍙奻tp絳
銆銆12 String getServerName() 榪斿洖鎺ュ彈璇鋒眰鐨勬湇鍔″櫒涓繪満鍚
銆銆13 int getServerPort() 榪斿洖鏈嶅姟鍣ㄦ帴鍙楁よ鋒眰鎵鐢ㄧ殑絝鍙e彿
銆銆14 BufferedReader getReader() 榪斿洖瑙g爜榪囦簡鐨勮鋒眰浣
銆銆15 String getRemoteAddr() 榪斿洖鍙戦佹よ鋒眰鐨勫㈡埛絝疘P鍦板潃
銆銆16 String getRemoteHost() 榪斿洖鍙戦佹よ鋒眰鐨勫㈡埛絝涓繪満鍚
銆銆17 void setAttribute(String key,Object obj) 璁劇疆灞炴х殑灞炴у
銆銆18 String getRealPath(String path) 榪斿洖涓鉶氭嫙璺寰勭殑鐪熷疄璺寰
銆銆2.response瀵硅薄
銆銆response瀵硅薄鍖呭惈浜嗗搷搴斿㈡埛璇鋒眰鐨勬湁鍏充俊鎮錛屼絾鍦↗SP涓寰堝皯鐩存帴鐢ㄥ埌瀹冦傚畠鏄疕ttpServletResponse綾葷殑瀹炰緥銆
銆銆搴忓彿 鏂 娉 璇 鏄
銆銆1 String getCharacterEncoding() 榪斿洖鍝嶅簲鐢ㄧ殑鏄浣曠嶅瓧絎︾紪鐮
銆銆2 ServletOutputStream getOutputStream() 榪斿洖鍝嶅簲鐨勪竴涓浜岃繘鍒惰緭鍑烘祦
銆銆3 PrintWriter getWriter() 榪斿洖鍙浠ュ悜瀹㈡埛絝杈撳嚭瀛楃︾殑涓涓瀵硅薄
銆銆4 void setContentLength(int len) 璁劇疆鍝嶅簲澶撮暱搴
銆銆5 void setContentType(String type) 璁劇疆鍝嶅簲鐨凪IME綾誨瀷
銆銆6 sendRedirect(java.lang.String location) 閲嶆柊瀹氬悜瀹㈡埛絝鐨勮鋒眰
銆銆3.session瀵硅薄
銆銆session瀵硅薄鎸囩殑鏄瀹㈡埛絝涓庢湇鍔″櫒鐨勪竴嬈′細璇濓紝浠庡㈡埛絝榪炲埌鏈嶅姟鍣ㄧ殑涓涓猈ebApplication寮濮嬶紝鐩村埌瀹㈡埛絝涓庢湇鍔″櫒鏂寮榪炴帴涓烘銆傚畠鏄疕ttpSession綾葷殑瀹炰緥.
銆銆搴忓彿 鏂 娉 璇 鏄
銆銆1 long getCreationTime() 榪斿洖SESSION鍒涘緩鏃墮棿
銆銆2 public String getId() 榪斿洖SESSION鍒涘緩鏃禞SP寮曟搸涓哄畠璁劇殑鎯熶竴ID鍙
銆銆3 long getLastAccessedTime() 榪斿洖姝SESSION閲屽㈡埛絝鏈榪戜竴嬈¤鋒眰鏃墮棿
銆銆4 int getMaxInactiveInterval() 榪斿洖涓ゆ¤鋒眰闂撮殧澶氶暱鏃墮棿姝SESSION琚鍙栨秷(ms)
銆銆5 String[] getValueNames() 榪斿洖涓涓鍖呭惈姝SESSION涓鎵鏈夊彲鐢ㄥ睘鎬х殑鏁扮粍
銆銆6 void invalidate() 鍙栨秷SESSION錛屼嬌SESSION涓嶅彲鐢
銆銆7 boolean isNew() 榪斿洖鏈嶅姟鍣ㄥ壋寤虹殑涓涓猄ESSION,瀹㈡埛絝鏄鍚﹀凡緇忓姞鍏
銆銆8 void removeValue(String name) 鍒犻櫎SESSION涓鎸囧畾鐨勫睘鎬
銆銆9 void setMaxInactiveInterval() 璁劇疆涓ゆ¤鋒眰闂撮殧澶氶暱鏃墮棿姝SESSION琚鍙栨秷(ms)
銆銆4.out瀵硅薄
銆銆out瀵硅薄鏄疛spWriter綾葷殑瀹炰緥,鏄鍚戝㈡埛絝杈撳嚭鍐呭瑰父鐢ㄧ殑瀵硅薄
銆銆搴忓彿 鏂 娉 璇 鏄
銆銆1 void clear() 娓呴櫎緙撳啿鍖虹殑鍐呭
銆銆2 void clearBuffer() 娓呴櫎緙撳啿鍖虹殑褰撳墠鍐呭
銆銆3 void flush() 娓呯┖嫻
銆銆4 int getBufferSize() 榪斿洖緙撳啿鍖轟互瀛楄妭鏁扮殑澶у皬錛屽備笉璁劇紦鍐插尯鍒欎負0
銆銆5 int getRemaining() 榪斿洖緙撳啿鍖鴻繕鍓╀綑澶氬皯鍙鐢
銆銆6 boolean isAutoFlush() 榪斿洖緙撳啿鍖烘弧鏃訛紝鏄鑷鍔ㄦ竻絀鴻繕鏄鎶涘嚭寮傚父
銆銆7 void close() 鍏抽棴杈撳嚭嫻
銆銆5.page瀵硅薄
銆銆page瀵硅薄灝辨槸鎸囧悜褰撳墠JSP欏甸潰鏈韜錛屾湁鐐硅薄綾諱腑鐨則his鎸囬拡錛屽畠鏄痡ava.lang.Object綾葷殑瀹炰緥
銆銆搴忓彿 鏂 娉 璇 鏄
銆銆1 class getClass 榪斿洖姝Object鐨勭被
銆銆2 int hashCode() 榪斿洖姝Object鐨刪ash鐮
銆銆3 boolean equals(Object obj) 鍒ゆ柇姝Object鏄鍚︿笌鎸囧畾鐨凮bject瀵硅薄鐩哥瓑
銆銆4 void (Object obj) 鎶婃Object鎷瘋礉鍒版寚瀹氱殑Object瀵硅薄涓
銆銆5 Object clone() 鍏嬮殕姝Object瀵硅薄
銆銆6 String toString() 鎶婃Object瀵硅薄杞鎹㈡垚String綾葷殑瀵硅薄
銆銆7 void notify() 鍞ら啋涓涓絳夊緟鐨勭嚎紼
銆銆8 void notifyAll() 鍞ら啋鎵鏈夌瓑寰呯殑綰跨▼
銆銆9 void wait(int timeout) 浣誇竴涓綰跨▼澶勪簬絳夊緟鐩村埌timeout緇撴潫鎴栬鍞ら啋
銆銆10 void wait() 浣誇竴涓綰跨▼澶勪簬絳夊緟鐩村埌琚鍞ら啋
銆銆11 void enterMonitor() 瀵筄bject鍔犻攣
銆銆12 void exitMonitor() 瀵筄bject寮閿
銆銆6.application瀵硅薄
銆銆
銆銆application瀵硅薄瀹炵幇浜嗙敤鎴烽棿鏁版嵁鐨勫叡浜錛屽彲瀛樻斁鍏ㄥ矓鍙橀噺銆傚畠寮濮嬩簬鏈嶅姟鍣ㄧ殑鍚鍔錛岀洿鍒版湇鍔″櫒鐨勫叧闂錛屽湪姝ゆ湡闂達紝姝ゅ硅薄灝嗕竴鐩村瓨鍦錛涜繖鏍峰湪鐢ㄦ埛鐨勫墠鍚庤繛鎺ユ垨涓嶅悓鐢ㄦ埛涔嬮棿鐨勮繛鎺ヤ腑錛屽彲浠ュ規ゅ硅薄鐨勫悓涓灞炴ц繘琛屾搷浣滐紱鍦ㄤ換浣曞湴鏂瑰規ゅ硅薄灞炴х殑鎿嶄綔錛岄兘灝嗗獎鍝嶅埌鍏朵粬鐢ㄦ埛瀵規ょ殑璁塊棶銆傛湇鍔″櫒鐨勫惎鍔ㄥ拰鍏抽棴鍐沖畾浜哸pplication瀵硅薄鐨勭敓鍛姐傚畠鏄瘲ervletContext綾葷殑瀹炰緥銆
銆銆搴忓彿 鏂 娉 璇 鏄
銆銆1 Object getAttribute(String name) 榪斿洖緇欏畾鍚嶇殑灞炴у
銆銆2 Enumeration getAttributeNames() 榪斿洖鎵鏈夊彲鐢ㄥ睘鎬у悕鐨勬灇涓
銆銆3 void setAttribute(String name,Object obj) 璁懼畾灞炴х殑灞炴у
銆銆4 void removeAttribute(String name) 鍒犻櫎涓灞炴у強鍏跺睘鎬у
銆銆5 String getServerInfo() 榪斿洖JSP(SERVLET)寮曟搸鍚嶅強鐗堟湰鍙
銆銆6 String getRealPath(String path) 榪斿洖涓鉶氭嫙璺寰勭殑鐪熷疄璺寰
銆銆7 ServletContext getContext(String uripath) 榪斿洖鎸囧畾WebApplication鐨刟pplication瀵硅薄
銆銆8 int getMajorVersion() 榪斿洖鏈嶅姟鍣ㄦ敮鎸佺殑Servlet API鐨勬渶澶х増鏈鍙
銆銆9 int getMinorVersion() 榪斿洖鏈嶅姟鍣ㄦ敮鎸佺殑Servlet API鐨勬渶澶х増鏈鍙
銆銆10 String getMimeType(String file) 榪斿洖鎸囧畾鏂囦歡鐨凪IME綾誨瀷
銆銆11 URL getResource(String path) 榪斿洖鎸囧畾璧勬簮(鏂囦歡鍙婄洰褰)鐨刄RL璺寰
銆銆12 InputStream getResourceAsStream(String path) 榪斿洖鎸囧畾璧勬簮鐨勮緭鍏ユ祦
銆銆13 RequestDispatcher getRequestDispatcher(String uripath) 榪斿洖鎸囧畾璧勬簮鐨凴equestDispatcher瀵硅薄
銆銆14 Servlet getServlet(String name) 榪斿洖鎸囧畾鍚嶇殑Servlet
銆銆15 Enumeration getServlets() 榪斿洖鎵鏈塖ervlet鐨勬灇涓
銆銆16 Enumeration getServletNames() 榪斿洖鎵鏈塖ervlet鍚嶇殑鏋氫婦
銆銆17 void log(String msg) 鎶婃寚瀹氭秷鎮鍐欏叆Servlet鐨勬棩蹇楁枃浠
銆銆18 void log(Exception exception,String msg) 鎶婃寚瀹氬紓甯哥殑鏍堣建榪瑰強閿欒娑堟伅鍐欏叆Servlet鐨勬棩蹇楁枃浠
銆銆19 void log(String msg,Throwable throwable) 鎶婃爤杞ㄨ抗鍙婄粰鍑虹殑Throwable寮傚父鐨勮存槑淇℃伅 鍐欏叆Servlet鐨勬棩蹇楁枃浠
銆銆7.exception瀵硅薄
銆銆exception瀵硅薄鏄涓涓渚嬪栧硅薄錛屽綋涓涓欏甸潰鍦ㄨ繍琛岃繃紼嬩腑鍙戠敓浜嗕緥澶栵紝灝變駭鐢熻繖涓瀵硅薄銆傚傛灉涓涓狫SP欏甸潰瑕佸簲鐢ㄦゅ硅薄錛屽氨蹇呴』鎶奿sErrorPage璁句負true錛屽惁鍒欐棤娉曠紪璇戙備粬瀹為檯涓婃槸java.lang.Throwable鐨勫硅薄
銆銆搴忓彿 鏂 娉 璇 鏄
銆銆1 String getMessage() 榪斿洖鎻忚堪寮傚父鐨勬秷鎮
銆銆2 String toString() 榪斿洖鍏充簬寮傚父鐨勭畝鐭鎻忚堪娑堟伅
銆銆3 void printStackTrace() 鏄劇ず寮傚父鍙婂叾鏍堣建榪
銆銆4 Throwable FillInStackTrace() 閲嶅啓寮傚父鐨勬墽琛屾爤杞ㄨ抗
銆銆8.pageContext瀵硅薄
銆銆pageContext瀵硅薄鎻愪緵浜嗗笿SP欏甸潰鍐呮墍鏈夌殑瀵硅薄鍙婂悕瀛楃┖闂寸殑璁塊棶錛屼篃灝辨槸璇翠粬鍙浠ヨ塊棶鍒版湰欏墊墍鍦ㄧ殑SESSION錛屼篃鍙浠ュ彇鏈欏甸潰鎵鍦ㄧ殑application鐨勬煇涓灞炴у礆紝浠栫浉褰撲簬欏甸潰涓鎵鏈夊姛鑳界殑闆嗗ぇ鎴愯咃紝瀹冪殑鏈綾誨悕涔熷彨pageContext銆
銆銆搴忓彿 鏂 娉 璇 鏄
銆銆1 JspWriter getOut() 榪斿洖褰撳墠瀹㈡埛絝鍝嶅簲琚浣跨敤鐨凧spWriter嫻(out)
銆銆2 HttpSession getSession() 榪斿洖褰撳墠欏典腑鐨凥ttpSession瀵硅薄(session)
銆銆3 Object getPage() 榪斿洖褰撳墠欏電殑Object瀵硅薄(page)
銆銆4 ServletRequest getRequest() 榪斿洖褰撳墠欏電殑ServletRequest瀵硅薄(request)
銆銆5 ServletResponse getResponse() 榪斿洖褰撳墠欏電殑ServletResponse瀵硅薄(response)
銆銆6 Exception getException() 榪斿洖褰撳墠欏電殑Exception瀵硅薄(exception)
銆銆7 ServletConfig getServletConfig() 榪斿洖褰撳墠欏電殑ServletConfig瀵硅薄(config)
銆銆8 ServletContext getServletContext() 榪斿洖褰撳墠欏電殑ServletContext瀵硅薄(application)
銆銆9 void setAttribute(String name,Object attribute) 璁劇疆灞炴у強灞炴у
銆銆10 void setAttribute(String name,Object obj,int scope) 鍦ㄦ寚瀹氳寖鍥村唴璁劇疆灞炴у強灞炴у
銆銆11 public Object getAttribute(String name) 鍙栧睘鎬х殑鍊
銆銆12 Object getAttribute(String name,int scope) 鍦ㄦ寚瀹氳寖鍥村唴鍙栧睘鎬х殑鍊
銆銆13 public Object findAttribute(String name) 瀵繪壘涓灞炴,榪斿洖璧峰睘鎬у兼垨NULL
銆銆14 void removeAttribute(String name) 鍒犻櫎鏌愬睘鎬
銆銆15 void removeAttribute(String name,int scope) 鍦ㄦ寚瀹氳寖鍥村垹闄ゆ煇灞炴
銆銆16 int getAttributeScope(String name) 榪斿洖鏌愬睘鎬х殑浣滅敤鑼冨洿
銆銆17 Enumeration getAttributeNamesInScope(int scope) 榪斿洖鎸囧畾鑼冨洿鍐呭彲鐢ㄧ殑灞炴у悕鏋氫婦
銆銆18 void release() 閲婃斁pageContext鎵鍗犵敤鐨勮祫婧
銆銆19 void forward(String relativeUrlPath) 浣垮綋鍓嶉〉闈㈤噸瀵煎埌鍙︿竴欏甸潰
銆銆20 void include(String relativeUrlPath) 鍦ㄥ綋鍓嶄綅緗鍖呭惈鍙︿竴鏂囦歡
銆銆9.config瀵硅薄
銆銆config瀵硅薄鏄鍦ㄤ竴涓猄ervlet鍒濆嬪寲鏃訛紝JSP寮曟搸鍚戝畠浼犻掍俊鎮鐢ㄧ殑錛屾や俊鎮鍖呮嫭Servlet鍒濆嬪寲鏃舵墍瑕佺敤鍒扮殑鍙傛暟錛堥氳繃灞炴у悕鍜屽睘鎬у兼瀯鎴愶級浠ュ強鏈嶅姟鍣ㄧ殑鏈夊叧淇℃伅錛堥氳繃浼犻掍竴涓猄ervletContext瀵硅薄錛
銆銆搴忓彿 鏂 娉 璇 鏄
銆銆1 ServletContext getServletContext() 榪斿洖鍚鏈夋湇鍔″櫒鐩稿叧淇℃伅鐨凷ervletContext瀵硅薄
銆銆2 String getInitParameter(String name) 榪斿洖鍒濆嬪寲鍙傛暟鐨勫
銆銆3 Enumeration getInitParameterNames() 榪斿洖Servlet鍒濆嬪寲鎵闇鎵鏈夊弬鏁扮殑鏋氫婦
㈣ JSP非同步調用webservice,寫好了客戶端,在jsp頁面裡面調用客戶端,客戶端將請求發給service。
建議樓主首先先檢查是否導入了所有需要的jar包,然後這個問題解決了就好辦了。
在後台代碼中(Actioin文件,或者Servlet文件),寫好客戶端的調用代碼到一個函數中。然後顯示頁面可以使用兩種方式調用這個後台代碼:
1、直接向後台提交,獲取數據後再返回到顯示頁面。實現簡單,但是有刷屏現象
2、使用ajax調用後台代碼,在ajax中綁定一個調用成功後的響應函數(javascript函數)。在該函數中更新你的頁面元素就可以了,這樣不用刷屏。(使用JQuery就可以很容易實現)