㈠ 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就可以很容易实现)