JSP鎬荤粨锛堢粡鍏革級
day1
JSP 瀹氫箟锛�
聽 聽 1)Java Server Page, Java EE 缁勪欢锛屾湰璐ㄤ笂鏄� Servlet銆�
聽 聽 2)杩愯鍦� Web Container.鎺ユ敹 Http Request,鐢熸垚 Http Response(榛樿鍗忚鏄� Http 璇锋眰鍜屽搷搴�)
聽 聽 3)JSP 浣垮緱鎴戜滑鑳藉鍒嗙椤甸潰鐨勯潤鎬� HTML 鍜屽姩鎬侀儴鍒嗏�斺�旀垜浠渶瑕佺殑鎶�鏈��
聽 聽 4)浣块〉闈㈠彲浠ユ贩鍜宧tml浠g爜銆丣ava浠g爜浠ュ強JSP鏍囩锛涘厑璁歌闂粍浠�
Servlet鐨勭己闄�(JSP鍑虹幇鐨勫師鍥�)锛�
聽 聽 1)鍐欓潤鎬侀〉闈㈠繀椤婚儴缃插悗鎵嶈兘鐪嬪埌鏁堟灉锛屽緢闅炬帶鍒堕〉闈㈢殑澶栬銆�
聽 聽 2)浠庢妧鏈搴︽潵璇碨ervlet鏄疛ava浠g爜鍜孒TML闈欐�佷唬鐮佺殑娣峰悎浠g爜銆�
聽 聽 3)浠庡競鍦虹珵浜夎搴︽潵璇达紝寰蒋鎺ㄥ嚭浜咥SP浜у搧銆�
JSP鐨勬敼杩涳細
聽 聽 1)JSP鏄爣绛惧紡鐨勬枃鏈枃浠�(Servlet鏄疛ava鏂囦欢)
聽 聽 2)JSP涓嶉渶瑕佺紪璇�(鍏跺疄鏄敱鏈嶅姟鍣ㄧ洃娴婮SP鏂囦欢鐨勫彉鍖栵紝鍐嶅皢鍏剁炕璇戞垚 Servlet 浠g爜)
聽 聽 聽 鏈嶅姟鍣ㄥ鍏惰繘琛岀紪璇戝苟鍦ㄧ涓�娆¤姹傛椂鍒涘缓涓�涓猄ervlet瀹炰緥銆傛墍浠ワ紝绗竴娆¤闂甁SP椤甸潰鏃朵細鍚庡欢杩�
聽 聽 3)JSP涓嶇敤鍐欓厤缃枃浠�
聽 聽 4)JSP浠ラ潤鎬佷唬鐮佷负涓伙紝Java浠g爜涓鸿緟銆係ervlet鍙嶄箣銆�
聽 聽 5)鏄疛2EE钃濆浘鐨勪竴閮ㄥ垎(Servlet銆丣SP浠ュ強EJB鏄疛2EE鐨勪笁澶х粍浠�)
聽 聽 JSP浠庢湰璐ㄤ笂鏉ヨ鍐呮牳杩樻槸Servlet锛屼絾涓嶴ervlet涓嶆槸鏇夸唬鍏崇郴鑰屾槸涓�绉嶄簰琛ョ殑鍏崇郴銆�
聽 聽 JSP閫傚悎浜庡啓鏄剧ず灞傜殑鍔ㄦ�侀〉闈紝鑰孲ervlet鍒欓�傚悎鍐欐帶鍒跺眰鐨勪笟鍔℃帶鍒�(椤甸潰杞彂)銆�
聽 聽 JSP寰�绾爣绛炬柟鍚戝彂灞曪紝Servlet寰�绾唬鐮佹柟鍚戝彂灞曪紝浠栦滑浠ervlet鍐呮牳(璇锋眰鍝嶅簲寮忕殑宸ヤ綔鏂瑰紡)寰�涓や釜鏂瑰悜鍙戝睍銆�
鍩烘湰璇硶
涓�銆丣SP鐨勫0鏄�(statement)
聽 鐢ㄦ潵瀹氫箟鍦ㄤ骇鐢熺殑绫绘枃浠朵腑鐨勭被鐨勫睘鎬у拰鏂规硶(鎴愬憳鍙橀噺)銆傚彲澹版槑绫�(鍗虫槸鍐呴儴绫�)銆�
聽 鐢变簬servlet鏄伐浣滃湪澶氱嚎绋嬬幆澧冧笅锛屾墍浠ュ敖閲忎笉瑕佸湪service鏂规硶浣撳澹版槑鎴愬憳鍙橀噺銆�
聽 <%!.....%>聽 //澹版槑鏃惰鍔�"!"锛屽睘浜庣被鎴愬憳锛屾渶鍏堝姞杞斤紝鍙啓浜庝换浣曚綅缃紱涓嶅姞鍒欐槸鑴氭湰鐨勫眬閮ㄥ彉閲忥紝蹇呴』璋冪敤鍓嶅啓銆�
聽 濡傦細聽 <%!String hello="Hello, World!";%>聽 //鍙橀噺鐨勫0鏄�
聽 聽 聽 聽 <%=hello%>聽 //鍙橀噺鐨勮皟鐢�
聽 聽 聽 聽 <%! private int counter=0;聽 public int count(){ return ++counter;} %> //鍑芥暟鐨勫0鏄�
聽 聽 聽 聽
<%=count()%>
//鍑芥暟鐨勮皟鐢�聽 澹版槑瑙勫垯锛�
聽 聽 1) JSP涓0鏄庣殑鍙橀噺鍜屾柟娉曞搴斾簬Servlet涓殑瀹炰緥鏂规硶鍜屽疄渚嬪彉閲忋�傝繖浜涘皢琚悓鏃惰姹傝椤甸潰鐨勬墍鏈夌敤鎴锋墍鍏变韩;
聽 聽 2) 鍦ㄤ娇鐢ㄥ彉閲忔垨鏂规硶鍓嶉』鍏堝畾涔�(涓嶆槸璇村0鏄庡彉閲忕殑浣嶇疆鍦ㄩ〉闈腑瑕佸浜庝娇鐢ㄥ彉閲忕殑鍓嶉潰锛岃�屾槸鎸囧彉閲忎笉澹版槑涓嶈兘浣跨敤);
聽 聽 3) 澹版槑鐨勫彉閲忔垨鏂规硶鐨勪綔鐢ㄥ煙涓哄綋鍓嶉〉闈㈡垨鍖呭惈鐨勯〉闈�;
聽 聽 4) 璇彞闂翠互鍒嗗彿鍒嗛殧銆�
浜屻�丣SP浠g爜娈�(Scriptlet)
聽 聽 聽 <% java浠g爜 %>
聽 鏄竴娈靛彲浠ュ湪澶勭悊璇锋眰鏃堕棿鎵ц鐨凧ava浠g爜銆傚彲浠ヤ骇鐢熻緭鍑猴紝涔熷彲浠ユ槸涓�浜涙祦绋嬫帶鍒惰鍙ャ��
聽 鍦ㄤ唬鐮佹涓畾涔夌殑鍙橀噺涓簊ervice鏂规硶涓殑灞�閮ㄥ彉閲忋��
聽 1._jspService()涓殑灞�閮ㄤ唬鐮侊細
聽 聽 聽 <%聽 System.out.println("Hi,I like JSP."); %>聽 //鍦ㄦ帶鍒跺彴鎵撳嵃鍑猴紝缃戦〉涓婃病鏄剧ず
聽 聽 聽 <%聽 out.println("Hi,I like JSP."); %>聽 聽 聽 聽 聽 //鎵撳嵃鍦ㄧ綉椤典笂
聽 聽 聽 <%聽 Connection conn=DriverManager.getConnection();聽 Statement st=conn.createStatement();
聽 聽 聽 聽 String sql="select * from users";聽 聽 聽 聽 聽 聽 聽 ResultSet rs=st.executeQuery(sql);
聽 聽 聽 聽 //鈥︹��
聽 聽 聽 %>
聽 聽 闂細鑳藉惁鍦↗SP鑴氭湰閲屽畾涔夋柟娉曪紵
聽 聽 绛旓細涓嶈兘锛� //鑴氭湰鐩稿綋浜庢柟娉曪紝涓嶈兘鍦ㄦ柟娉曢噷瀹氫箟鏂规硶
聽 聽 聽 <%!public void helloworld(){}%>聽 //鍙互澹版槑鏂规硶
聽 聽 聽 <% public void helloworld(){}%>聽 //缂栬瘧鍑洪敊锛涜剼鏈笉鑳藉畾涔夋柟娉�
聽 2.姣旇緝:
聽 聽 聽 聽 <%! int i=100;%>聽 聽 //鎴愬憳鍙橀噺
聽 聽 聽 聽 <%聽 int i=101;%>聽 聽 //_jspService()鏂规硶涓殑灞�閮ㄥ彉閲�
聽 聽 聽 聽 <%=i%>聽 //鍚屼竴鏂囦欢閲岋紝灞�閮ㄥ彉閲忎紭鍏�
聽 3.鑴氭湰灏忕▼搴忚鍒欙細
聽 聽 1) 浣犱娇鐢ㄧ殑鑴氭湰璇█鍐冲畾浜嗚剼鏈皬绋嬪簭鐨勮鍒�;
聽 聽 2) 璇彞闂翠互鍒嗗彿鍒嗛殧;
聽 聽 3) 鍙互浣跨敤榛樿鐨勫璞°�乮mport杩涚殑绫汇�乨eclaration澹版槑鐨勬柟娉曞拰瀵硅薄浠ュ強useBean tag涓0鏄庣殑瀵硅薄銆�
涓夈�丣SP琛ㄨ揪寮�(expression)
聽 聽 聽 <%=鈥︹��%>聽 // "="鍙�
聽 鍦↗SP璇锋眰澶勭悊闃舵璁$畻浠栫殑鍊硷紝琛ㄨ揪寮忕敓鎴愮殑浠g爜鏄疭ervice鏂规硶涓殑涓�涓唬鐮佺墖鏂��
聽 JSP瀵逛簬澹版槑鐨勫鐞嗭細1銆佽绠楄〃杈惧紡鐨勫��
聽 聽 聽 聽 聽 聽 聽 聽 聽 2銆佸皢鍊艰浆鎹㈡垚String
聽 聽 聽 聽 聽 聽 聽 聽 聽 3銆佺敤out.println鍙戦�佹爣绛撅紱鎶婃暟鎹緭鍑鸿嚦椤甸潰鐨勫綋鍓嶄綅缃�
聽 聽 聽 <%="Hello,JSP world!"%>聽 聽 //out.println("Hello,JSP world");
聽 聽 聽 <%=name%>聽 聽 聽 聽 聽 聽 聽 聽 聽 //<%!String name="GiGi";%> out.println(name);
聽 聽 聽 <%=new java.util.Date()%>聽 //out.println(new java.util.Date());
聽 琛ㄨ揪寮忚鍒欙細
聽 聽 1) 浣犱娇鐢ㄧ殑鑴氭湰璇█鍐冲畾浜嗚剼鏈皬绋嬪簭鐨勮鍒�;
聽 聽 2) 鎵ц鐨勯『搴忎负浠庡乏鍒板彸;
聽 聽 3) 鍒嗗彿涓嶈兘鐢ㄤ簬琛ㄨ揪寮忋��
鍥涖�丣SP鎸囦护(direction)
聽 鎸囦护鐢ㄤ簬浠嶫SP鍙戦�佷俊鎭埌瀹瑰櫒涓娿�傜敤鏉ヨ缃叏灞�鍙橀噺锛屽0鏄庣被锛岃瀹炵幇鐨勬柟娉曞拰杈撳嚭鍐呭绛夈��
聽 鎸囦护鍦↗SP鏁翠釜鏂囦欢鍐呮湁鏁堛�傚畠涓虹炕璇戦樁娈垫彁渚涗簡鍏ㄥ眬淇℃伅銆�
聽 聽 聽 <%@......%>聽 // "@"绗﹀彿
聽 鎸囦护鍖呮嫭锛歱age銆乮nclude銆乼aglib
聽 1.page鎸囦护
聽 聽 聽 聽 import銆乻ession銆乪rrorPage銆乮sThreadSafe
聽 聽 椤甸潰鐨勮瑷�銆佸唴瀹圭被鍨嬨�佸瓧绗﹂泦銆侀〉闈㈢紪鐮�
聽 聽 聽 聽 <%@page language="java" contentType="text/html; charset=gbk" pageEncoding="gbk"%>
聽 聽 聽 聽 language锛歫ava鍞竴鍊硷紝琛ㄧず鑴氭湰涓娇鐢ㄧ殑缂栫▼璇█
聽 聽 聽 聽 contentType锛氳缃簡鍐呭鐨勭被鍨嬪拰闈欐�侀〉闈㈢殑缂栫爜 (鍛婅瘔娴忚鍣ㄤ互浠�涔堢紪鐮佹樉绀�)
聽 聽 聽 聽 pageEncoding锛氶〉闈㈡湰韬殑缂栫爜鏍煎紡 (鍐欓〉闈㈡椂鐢ㄧ殑缂栫爜鏍煎紡)
聽 聽 聽 聽 涓婇潰鐨勪唬鐮佺瓑浠蜂簬servlet閲岋細 response.setContentType("text/html; charset=gbk");
聽 聽 import锛氬鍏ュ叾浠栫殑鍖呭拰绫伙紱 鍏朵腑锛孞SP榛樿瀵煎叆鐨勫寘鏄痡ava.lang.*
聽 聽 聽 聽 <%@page import="java.util.Date"%> //鍏蜂綋鐨勫寘鍜岀被
聽 聽 聽 聽 <%@page import="java.sql.*"%>聽 聽 //鍖呬笅鐨勬墍鏈夌被
聽 聽 聽 聽 <%@page import="java.util.*, java.io.*, java.net.*"%> //杩炲啓锛岄�楀彿鍒嗛殧
聽 聽 Session锛氭寚绀哄綋鍓嶇殑jsp鏄惁鍙備笌浼氳瘽 (榛樿涓簍rue锛� 鍙備笌浼氳瘽)
聽 聽 聽 聽 閫氳繃鎸囦护浣垮綋鍓嶉〉闈笌session涓嶅彲浼氳瘽锛毬� 聽 <%@page session="false"%>
聽 聽 聽 聽 session="true"鏃讹紝鍙敤鍐呭缓瀵硅薄session鐩存帴璁块棶浼氳瘽锛屼緥濡傦細
聽 聽 聽 聽 <%聽 session.setAttribute("username","maxwell");
聽 聽 聽 聽 聽 聽 String name = (String)session.getAttribute("username"); %>
聽 聽 聽 聽 <%=name%>
聽 聽 errorPage锛�
聽 聽 聽 聽 isErrorPage锛欽sp椤甸潰涓嚭鐜板紓甯哥殑澶勭悊鏂瑰紡
聽 聽 聽 聽 瀵逛簬鏈夊彲鑳藉嚭鐜板紓甯哥殑椤甸潰锛�
聽 聽 聽 聽 聽 聽 <%@page errorPage="error.jsp"%> //寮傚父鏃朵細璺宠浆鍒板鐞嗗紓甯哥殑椤甸潰锛涜繖椤甸潰鑷繁鍐�
聽 聽 聽 聽 聽 聽 鍦ㄦ湁鍙兘寮傚父鐨勫湴鏂规墦鍗板師鍥狅細聽 throw new Exception("鏁版嵁搴撹繛鎺ュ嚭閿�");
聽 聽 聽 聽 瀵逛簬澶勭悊寮傚父鐨勯〉闈�(error.jsp)閲岋細
聽 聽 聽 聽 聽 聽 <%@page isErrorPage="true"%>锛屽叾涓娇鐢�<%=exception.getMessage() %>鎶婂紓甯镐俊鎭墦鍗板嚭鏉�
聽 聽 isThreadSafe鈥斺�旀灞炴�у凡缁忎笉鍐嶄娇鐢�(宸插簾寮�)
聽 聽 聽 聽 褰撳墠Jsp椤甸潰鏄惁绾跨▼瀹夊叏聽 聽 default--->true
聽 聽 聽 聽 <%@page isThreadSafe="true"%>聽 //鏅�氱殑Servlet,鍙互骞跺彂澶勭悊鐢ㄦ埛璇锋眰
聽 聽 聽 聽 <%@page isThreadSafe="false"%> //鐩稿綋浜嶴ervlet瀹炵幇浜哠ingleThreadModel
聽 2.include鎸囦护
聽 聽 聽 聽 鎶婄洰鏍囬〉闈㈢殑鍐呭鍖呭惈鍒板綋鍓嶉〉闈�,浜х敓椤甸潰鍙犲姞浠ュ悗鐨勮緭鍑烘晥鏋� //鐩稿綋浜庡皢涓や釜椤甸潰鍚堝苟锛涚紪璇戞椂灏卞寘鍚繘鏉�
聽 聽 聽 聽 <%@include file="foot.jsp"%> //鍙彃鍏ヤ换鎰忎綅缃�
聽 3.taglib鎸囦护
聽 聽 聽 聽 鐣欏湪JSTL閲岃瑙c��
浜斻�丣SP涓殑娉ㄩ噴
聽 1.java鏍煎紡娉ㄩ噴
聽 聽 聽 缂栬瘧鍣ㄤ細蹇界暐鎺夋绫绘敞閲婁腑鐨勫唴瀹�(瀹㈡埛绔殑婧愮爜鐪嬩笉瑙�)
聽 聽 聽 <%-- JSP娉ㄩ噴锛涘彲澶氳 --%>
聽 聽 聽 <%// java 鍗曡娉ㄩ噴 %>
聽 聽 聽 <%/* java multi lines comments */%>
聽 聽 聽 <%/**java 鐗规湁鐨勬敞閲�*/%>
聽 2.html椋庢牸娉ㄩ噴
聽 聽 聽 缂栬瘧鍣ㄤ細鎵ц姝ょ被娉ㄩ噴涓殑浠g爜(瀹㈡埛绔殑婧愮爜鐪嬪緱瑙�)
聽 聽 聽 聽 绛変环浜巓ut.println("")
聽 聽 聽 杩欑娉ㄩ噴鏂瑰紡涓嶅ソ鐨勫湴鏂瑰氨鏄綋椤甸潰娉ㄩ噴淇℃伅澶鐨勬椂鍊欎細澧炲ぇ鏈嶅姟鍣ㄧ殑璐熻嵎銆�
聽 聽 聽 杩樻湁娉ㄩ噴淇℃伅闇�瑕佸湪缃戠粶涓婁紶杈擄紝浠庤�岄檷浣庢晥鐜囷紱鍐呴儴绋嬪簭鍛樼殑娴嬭瘯鏁版嵁涓�鑸笉鑳藉啓鍦ㄨ繖绉嶆敞閲婁腑锛屼互鍏嶆硠闇层��
鍏�佸姩浣�(Action)
聽 聽
聽 JSP鐨勫姩浣滃寘鎷細
聽 聽 forward銆乮nclude銆乽seBean銆乻etProperty銆乬etProperty
聽 1.forward鍔ㄤ綔
聽 聽 褰㈠紡锛�
聽 聽 聽 聽 聽 绛変环浜� Servlet涓�氳繃RequestDispatcher.forward();
聽 聽 鍙互浼犲弬鏁�
聽 聽 聽 聽
聽 聽 聽 聽 聽 聽
聽 聽 聽 聽 聽 聽
聽 聽 聽 聽
聽 2.Include鍔ㄤ綔
聽 聽 褰㈠紡锛�
聽 聽 聽 聽 聽 绛変环浜� Servlet涓�氳繃RequestDispatcher.include();
聽 聽 聽 Include鍔ㄤ綔涔熷彲浠ヤ紶鍙傛暟
聽 聽 聽 聽 聽
聽 聽 聽 聽 聽 聽
聽 聽 聽 聽 聽
聽 聽 聽 涓�<%@include file=""%>姣旇緝锛�
聽 聽 聽 聽 include鍔ㄤ綔鍦ㄨ繍琛屾湡澶勭悊(include鎸囦护缂栬瘧鏈�)锛宩sp:include鍖呭惈鐨勬槸鎵�鍖呭惈URI鐨勫搷搴旓紝鑰屼笉鏄疷RI鏈韩銆�
聽 聽 聽 聽 杩欐剰鍛崇潃锛歫sp:include 瀵规墍鎸囧嚭鐨� URI 杩涜瑙i噴锛屽洜鑰屽寘鍚殑鏄敓鎴愮殑鍝嶅簲銆�
聽 聽 聽 聽 瀵逛簬椤甸潰鏄潤鎬佸唴瀹癸紝杩欐病鏈夊お澶х殑鍏崇郴銆備絾濡傛灉鏄姩鎬佸唴瀹癸紝include鍔ㄤ綔鍙紶鍙傛暟銆�
聽 聽 聽 flush 灞炴��
聽 聽 聽 聽 flush 鎸囩ず鍦ㄨ鍏ュ寘鍚唴瀹逛箣鍓嶆槸鍚︽竻绌轰换浣曠幇鏈夌殑缂撳啿鍖恒��
聽 聽 聽 聽 JSP 1.1 涓渶瑕� flush 灞炴�э紝鍥犳锛屽鏋滀唬鐮佷腑涓嶇敤瀹冿紝浼氬緱鍒颁竴涓敊璇��
聽 聽 聽 聽 浣嗘槸锛屽湪 JSP 1.2 涓紝 flush 灞炴�х己鐪佷负 false銆�
聽 聽 聽 聽 寤鸿锛氱敱浜庢竻绌哄ぇ澶氭暟鏃跺�欎笉鏄竴涓噸瑕佺殑闂锛屽洜姝わ紝瀵逛簬 JSP 1.1锛屽皢 flush 璁剧疆涓� true锛�
聽 聽 聽 聽 聽 聽 聽 鑰屽浜� JSP 1.2 鍙婃洿楂樼増鏈紝灏嗗叾璁剧疆涓� false 鎴栦笉璁剧疆(鐢ㄩ粯璁ゅ��)銆�
JSP鐨勭敓鍛藉懆鏈�
聽 聽 1) 姣忎竴涓狫SP閮戒細瀵瑰簲鏈変竴涓猻ervlet鐢熸垚
聽 聽 2) 鍦� %tomcat%/work/Catalina/localhost/宸ョ▼鍚�/org/apache/jsp 鐩綍涓嬪彲鎵惧埌瀵瑰簲鐢熸垚鐨� Servlet 鏂囦欢
聽 聽 3) 涓�鑸�岃█锛屾瘡涓�涓狫SP瀵瑰簲鐨剆ervlet閮芥湁濡備笅鐨勭敓鍛藉懆鏈熸柟娉曪細
涓�銆� _jspInit()鏂规硶
聽 聽 JSP瀹瑰櫒绗竴娆¤杞絡sp鏂囦欢鏃惰皟鐢ㄤ竴娆�
聽 聽 public void _jspInit(){鈥︹�
浜屻�� _jspService()鏂规硶
聽 聽 姣忓綋鏈嶅姟鍣ㄦ帴鏀跺埌瀵硅jsp鐨勮姹傦紝閮介渶瑕佽皟鐢ㄤ竴娆¤鏂规硶涓�娆°��
聽 聽 public void _jspService(HttpServletRequest request, HttpServletResponse response)
聽 聽 聽 throws java.io.IOException, ServletException { 鈥︹�
涓夈�� _jspDestroy()鏂规硶
聽 聽 jsp鏂囦欢琚慨鏀规椂锛孞SP瀹瑰櫒浼氶攢姣佹棫鐨刯sp鏂囦欢瀵瑰簲鐨勫璞★紝閲嶆柊瑁呰浇涓�娆℃洿鏂板悗鐨刯sp鏂囦欢鐨勫唴瀹�(鍙皟鐢ㄤ竴娆�)銆�
聽 聽 public void _jspDestroy(){鈥︹�
JSP澶勭悊杩囩▼锛欽SP婧愭枃浠跺鐞嗗垎鎴愪簩涓樁娈碉細
1) JSP椤甸潰杞崲闃舵锛�
聽 聽 椤甸潰琚紪璇戞垚涓�涓狫ava绫伙紝鎵�鏈夌殑HTML鏍囪鍜孞SP鏍囪閮借杞崲鍒涘缓涓�涓猄ervlet銆傝繖鏃讹紝鑴氭湰鍜岃〃杈惧紡杩樻病鏈夎鎵ц;
2) 璇锋眰澶勭悊闃舵锛氬彂鐢熷湪鏈嶅姟鍣紝灏嗕竴涓鎴风璇锋眰鎸囧悜JSP椤甸潰銆�
聽 聽 涓�涓姹傚璞″垱寤恒�佽В鏋愪互鍙婃彁浜ょ粰缂栬瘧濂界殑JSP瀵瑰簲鐨剆ervlet銆�
聽 聽 褰撹繖涓猻ervlet澶勭悊璇锋眰鐨勬椂鍊欏畠鎵ц鍏堝墠鍦↗SP涓畾涔夌殑澶勭悊鑴氭湰灏忕▼搴忓拰琛ㄨ揪寮忋��
浣跨敤鑴氭湰浠g爜鐨勭己鐐瑰拰鎸囧鏂归拡
1) 缂虹偣锛�
聽 聽 a. 杩囧害浣跨敤鑴氭湰浠g爜浣跨敤JSP椤甸潰娣蜂贡鍜岄毦浠ョ淮鎶�;
聽 聽 b. 鑴氭湰浠g爜闄嶄綆JSP浜屼釜涓昏鐨勪紭鐐癸細杞欢閲嶇敤鍜屼唬鐮佸垎寮�
2) 鎸囧鏂归拡锛氬彧鍦ㄧ粍浠跺姛鑳芥棤鑳戒负鍔涙垨闇�瑕佹湁闄愮殑鑴氭湰鏃朵娇鐢ㄣ��
聽
day2
聽 POJO锛� Plain Old Java Object聽 --> 绠�鍗曚紶缁熺殑Java瀵硅薄
聽 Java Bean锛� 缁勪欢銆佹瀯浠剁殑瑙勮寖(灞炴�э紝鎻愪緵get/set鏂规硶锛涜繕鍙寘鍚叾浠栨柟娉�)
JSP璋冪敤JavaBean
聽 閫氳繃寮曞叆JavaBean锛孞SP鎵嶈兘杈冨ソ鐨勬妸椤甸潰灞曠ず涓庝笟鍔¢�昏緫鍒嗙銆�
聽 鍏朵腑锛屼笟鍔¢�昏緫鏀惧埌鍚庡彴鐨凧ava Bean涓紝鍑忓皯JSP涓殑鑴氭湰浠g爜锛屾湁鍒╀簬绋嬪簭鐨勫彲缁存姢鎬т笌鍙噸鐢ㄦ�с��
涓�銆丣ava Bean
聽 聽 a.鏃犲弬鏋勯�犲櫒(涔熸槸榛樿鐨勬瀯閫犳柟娉�)
聽 聽 b.鏍囧噯鐨刧etter銆乻etter鏂规硶
聽 聽 c.濡傝杩涜缃戠粶浼犺緭(鏀寔RMI)锛岄渶瀹炵幇Serializable鎺ュ彛
浜屻�佸浣曞湪JSP涓娇鐢↗avaBean锛�
聽 1.瀹氫箟Java Bean
聽 聽 褰㈠紡锛�
聽 聽 聽 聽 id聽 鈥斺�斿0鏄巄ean瀵硅薄鐨勬爣璇嗙锛屾柟渚垮叾浠栧湴鏂逛娇鐢�
聽 聽 聽 聽 class鈥斺�攂ean瀵硅薄鐨勭被鍨嬶紝娉ㄦ剰瑕佷娇鐢ㄥ畬鍏ㄩ檺瀹氬悕
聽 聽 聽 聽 scope鈥斺�攋ava bean瀵硅薄鐨勫叡浜寖鍥�(page銆乺equest銆乻ession銆乤pplication)
聽 聽 聽 聽 聽 page:褰撳墠椤甸潰鑼冨洿(鑼冨洿鏈�灏忥紝鐢熷懡鍛ㄦ湡鏈�鐭�)
聽 聽 聽 聽 聽 request:鍚屼竴涓姹傝寖鍥� (forward,include)
聽 聽 聽 聽 聽 session:鍚屼竴涓細璇�(30鍒嗛挓涓嶄娇鐢紝浼氳嚜鍔ㄧ粨鏉�)
聽 聽 聽 聽 聽 application:鍚屼竴涓簲鐢�(鑼冨洿鏈�澶э紝鐢熷懡鍛ㄦ湡鏈�闀�)聽 ServletContext
聽 聽 渚嬪锛毬� SuperGirl
聽 聽 绛変环浜庯細<% SuperGirl girl=(SuperGirl)session.getAttribute("girl");
聽 聽 聽 聽 聽 if(girl==null){
聽 聽 聽 聽 聽 聽 聽 girl = new SuperGirl(); //瀵瑰簲 id 鍜� class
聽 聽 聽 聽 聽 聽 聽 session.setAttribute("girl",girl);聽 //瀵瑰簲 scope 鐨勫��
聽 聽 聽 聽 聽 } %>
聽 聽 鍙互鐢ㄨ〃杈惧紡鑾峰緱bean鐨勫�硷細聽 <%=girl.getName();%>
聽 2.瀵笿avaBean鐨勫睘鎬ц祴鍊�
聽 聽 褰㈠紡锛�
聽 聽 聽 聽 渚嬪瓙锛毬�
聽 聽 聽 聽 绛変环浜庯細 <% girl.setName("Lily");%>
聽 聽 鍙互宓屽JSP琛ㄨ揪寮忥細
聽 聽 聽 聽 聽 聽 聽 聽 value='<%=request.getParameter("name")%>'/> 聽 聽 Java Bean涓殑灞炴�у悕涓巉orm涓緭鍏ュ煙鐨勫悕瀛椾繚鎸佷竴鑷寸殑璇濓紝鍙互浣跨敤閫氶厤绗�*锛屼竴娆¤缃墍鏈夊瓧娈电殑鍊笺�� 聽 聽 聽 聽 聽 3.鑾峰彇JavaBean鐨勫睘鎬у�� 聽 聽 褰㈠紡锛� 聽 聽 聽 聽 name锛氭爣璇嗗叿浣撶殑Bean瀵硅薄锛岃繖涓� 聽 聽 聽 聽 property锛氭爣璇嗗睘鎬т腑鐨勬爣璇嗙銆偮� JSP涓殑寮傚父澶勭悊 涓�銆乼ry/catch/finally/throws/throw 聽 聽 // 鍦ㄥ眬閮ㄤ唬鐮侀噷澶勭悊寮傚父銆� 浜屻�乪rrorPage, isErrorPage 聽 聽 // 鍦ㄦ暣涓〉闈㈠鐞嗗紓甯搞�� 聽 1.errorPage 聽 聽 褰㈠锛� <%@page errorPage="error.jsp"%> 聽 聽 琛ㄧず锛氶渶瑕侀敊璇鐞嗙殑椤甸潰 聽 2.isErrorPage 聽 聽 褰㈠锛� <%@page isErrorPage="true"%> 聽 聽 鎸囩ず锛氶敊璇〉闈€�傚叾涓紝鏈変竴涓殣寮忓璞xception鍙敤锛� <%=exception%> 聽 聽 聽 聽 聽 浜х敓(闅愬惈)鍐呭缓瀵硅薄exception,鍙�氳繃瀹冭幏寰楀紓甯镐俊鎭� 聽 聽 聽 聽 聽 <%=exception.getMessage() %> //鎶婂紓甯镐俊鎭墦鍗板嚭鏉� 涓夈�佸0鏄庣殑鏂瑰紡澶勭悊寮傚父 聽 聽 // 鍦ㄦ暣涓簲鐢ㄥ鐞嗗紓甯搞��(鑼冨洿姣斿墠涓ょ鏇村ぇ) 聽 1.閰嶇疆锛� 鍦╳eb.xml杩涜閰嶇疆寮傚父澶勭悊 聽 聽 聽 鈥︹�� 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 鈥︹�� 聽 2.澶嶄範锛欽ava涓殑寮傚父鈥斺�旀湁2绉� 聽 聽 鍙楁煡寮傚父(Checked Exception) 聽 聽 闈炲彈鏌ュ紓甯�(Unchecked Exception)聽 Java涓殑RuntimeException鍙婂叾瀛愮被鏄笉闇�瑕佸鐞嗙殑(try/catch) 聽 聽 聽 聽 鍥犱负鎵�鏈夌殑RuntimeException鎬绘槸鍙互閫氳繃浼樺寲浠g爜鏉ラ伩鍏嶏紝鍥犳锛岃繖绉嶅紓甯歌绉颁负"Unchecked Exception"銆� 聽 3.鎬濊�冿細 聽 聽 涓夌寮傚父澶勭悊鏂瑰紡鍚屾椂鍚姩鐢紝閭d釜浼樺厛绾ч珮锛� 浣滅敤鍩熻秺灏忥紝浼樺厛绾ц秺楂樸�� 聽 娉ㄦ剰锛氳浣垮緱椤甸潰鑷姩璺宠浆鍒伴敊璇〉闈紝蹇呴』鍏抽棴娴忚鍣ㄧ殑"鏄剧ず鍙嬪ソHTTP閿欒淇℃伅"閫夐」銆� 聽 聽 聽 public void _jspService(HttpServletRequest request, HttpServletResponse response) 聽 聽 聽 聽 throws java.io.IOException, ServletException { /*鍙鐞嗚繖涓ょ鍏煎鐨勫紓甯�*/ 鈥︹�� }聽 瀹夊叏鐨勭郴缁�(浼佷笟绾у簲鐢�)锛� 聽 1.韬唤璁よ瘉(鍚堟硶鐢ㄦ埛)聽 --鐧诲綍 聽 2.鎺堟潈(闈欐��)聽 聽 聽 聽 --瀹氫箟鏉冮檺 聽 3.璁块棶鎺у埗(鍔ㄦ��)聽 聽 --姣旇緝 聽 4.瀹夊叏瀹¤(鏃ュ織)聽 聽 --淇bug (鍙湁鏁忔劅鐨勯儴闂ㄩ渶瑕�) JAAS瀹炵幇瀹夊叏 聽 JAAS鈥斺�擩ava Authentication and Authorization Service 聽 (Java璁よ瘉(Authentication)涓庢巿鏉�(Authorization)鏈嶅姟) 聽 鏄疛ava EE瑙勮寖涔嬩竴锛屽疄鐜癑ava EE搴旂敤绋嬪簭瀹夊叏鎬х殑涓�涓噸瑕侀�斿緞 聽 (瑕佹眰锛氫細浣跨敤锛屼笉蹇呮繁鍏ョ悊瑙�) 涓�銆佺綉缁滃畨鍏ㄧ殑4澶ц绱� 聽 璁よ瘉鈥斺�旀姷寰″亣鍐掕��(鐢ㄦ埛韬唤鐨勫悎娉曟��) 聽 鎺堟潈鈥斺�斿悎娉曠敤鎴锋嫢鏈夌殑鏉冮檺 聽 鏈哄瘑鎬р�斺�旈槻姝㈠叧閿暟鎹惤鍏ュ叾浠栦汉鎵嬩腑 聽 鏁版嵁瀹屾暣鎬р�斺�旀姷寰$獌鍚��(绡℃敼绉佹湁鏁版嵁) 浜屻�佸浜嶩ttp搴旂敤鏄浣曡繘琛岃璇佺殑(Web绔殑璁よ瘉鏂规硶)锛� 聽 鍥涚瀹夊叏璁よ瘉锛� (http鍗忚)basic, form, digest, certificate(璇佷功) + ssl 聽 HttpMonitor鐩戞帶鍙楅檺璧勬簮鐨勮闂� 涓夈�佸鍣ㄦ槸濡備綍瀹屾垚璁よ瘉涓庢巿鏉冪殑鍛紵 聽 鍥剧ず(瀹瑰櫒鍋氫簡浜涗粈涔堜簨鎯�) 聽 (瀹瑰櫒鐨勮搴�) 鍥涖�佸0鏄庡紡瀹夊叏浠ュ強鍒嗗伐 聽 Servlet鐨勫紑鍙戣�� 聽 搴旂敤鐨勭鐞嗗憳 聽 閮ㄧ讲浜哄憳 聽 浜斻�佸疄鎴� 聽 1.瀹氫箟鏂扮敤鎴蜂笌瑙掕壊 聽 聽 鍦═omcat鏈嶅姟鍣ㄤ腑瀹氫箟锛毬� 聽 %TOMCAT_HOME%/conf/tomcat-user.xml 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 涓轰粈涔坱omcat鍙互浣跨敤tomcat-users.xml浣滀负瀹冧繚瀛樼敤鎴峰拰瑙掕壊淇℃伅鐨勬枃浠讹紵鍘熷洜鏄湪server.xml涓紝鏈変互涓嬮厤缃細 聽 聽 聽 聽 聽 聽 description="User database that can be updated and saved" 聽 聽 聽 聽 factory="org.apache.catalina.users.MemoryUserDatabaseFactory" 聽 聽 聽 聽 pathname="conf/tomcat-users.xml" /> 聽 聽 鍦―D涓寚瀹氳鑹诧紝鍒欓渶鍦� web.xml 涓厤缃細 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 2.澹版槑瀹夊叏鎬х害鏉�(鎸囨槑鍙楅檺璧勬簮) 聽 聽 鍦―D涓姞鍏� 聽 聽 聽 Web璧勬簮闆嗗悎锛� 聽 聽 聽 鍏朵腑鍖呭惈浜唘rl璧勬簮浠ュ強http鏂规硶銆� 聽 聽 鎺堟潈绾︽潫锛� 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 瑕佹敞鎰忕殑瑙勫垯锛� 聽 聽 聽 涓嶈璁や负锛氳祫婧愭湰韬彈鍒扮害鏉燂紱鍏跺疄锛屾槸璧勬簮 + Http鏂规硶缁勫悎鍙楀埌绾︽潫 聽 聽 聽 濡傛灉閰嶇疆涓笉鎸囧畾 聽 聽 聽 褰撴寚瀹氫簡鍏蜂綋鐨� 聽 聽 聽 聽 聽 聽 娌℃湁 聽 聽 聽 瀵逛簬涓嶅悓鐨� 聽 聽 闂锛氫负浠�涔堣璁剧疆 聽 聽 聽 聽 涓轰簡淇濇姢璧勬簮锛屽彧鍏佽鍐呴儴璺宠浆鍘昏闂� 聽 3.閫夋嫨璁よ瘉鏂瑰紡 聽 聽 濡傛灉鏄疊ASIC璁よ瘉锛氬垯鏃犻渶鎸囧畾Form琛ㄥ崟鐨刟ction銆� 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 濡傛灉鏄疐ORM璁よ瘉锛� 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 瀵逛簬Form琛ㄥ崟璁よ瘉 聽 聽 聽 action鐨勫�硷紝鐢ㄦ埛鍚嶃�佸瘑鐮佸瓧娈电殑鍚嶇О閮芥槸鍥哄畾鐨�(瑙勮寖) 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 鏍囧噯鐨勮〃鍗曟彁浜�(鍥哄畾涓嶅彉)锛� 聽 聽 聽 action锛歫_security_check 聽 聽 聽 name:j_username 聽 聽 聽 password:j_password 聽 Day3 鍐呭瑕佺偣锛� 1.闅愬惈瀵硅薄 2.娆㈣繋鏂囦欢 3 MVC ******************************************************************************************** 涓�銆侀殣鍚璞� 1.浠�涔堟槸闅愬惈瀵硅薄(9涓�)锛� 聽 鈥斺�斺�斺�擩SP涓殑闅愬惈瀵硅薄:涓嶇敤鎴戜滑鎵嬪伐鍘诲垱寤虹殑瀵硅薄 聽 绫诲瀷聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 瀵硅薄鍚嵚� 聽 聽 聽 聽 聽 鍔熻兘 聽 --------------------------------------------------------------------- 聽 JspWriter聽 聽 聽 聽 聽 聽 聽 out聽 聽 聽 聽 聽 聽 聽 寰�娴忚鍣ㄥ啓鍐呭 聽 HttpServletRequest聽 聽 request聽 聽 聽 聽 聽 Http璇锋眰瀵硅薄. 聽 HttpServletResponse聽 聽 response聽 聽 聽 聽 Http鍝嶅簲瀵硅薄 聽 PageContext聽 聽 聽 聽 聽 聽 pageContext聽 聽 聽 JSP鐨勯〉闈笂涓嬫枃 聽 HttpSession聽 聽 聽 聽 聽 聽 session聽 聽 聽 聽 聽 浼氳瘽瀵硅薄 聽 ServletContext聽 聽 聽 聽 application聽 聽 聽 搴旂敤涓婁笅鏂� 聽 ServletConfig聽 聽 聽 聽 聽 config聽 聽 聽 聽 聽 JSP鐨凷ervletConfig 聽 Object聽 聽 聽 聽 聽 聽 聽 聽 page聽 聽 聽 聽 聽 聽 椤甸潰瀹炵幇绫荤殑瀵硅薄(渚嬪锛歵his) 聽 Exception聽 聽 聽 聽 聽 聽 聽 exception聽 聽 聽 聽 鍚湁鎸囦护<%@page isErrorPage="true"%> 聽 2.鑼冨洿瀵硅薄 聽 鍏朵腑锛屾湁4涓槸鑼冨洿瀵硅薄锛� pageContext,request,session,application 聽 瀵瑰簲 聽 涔熷氨鏄锛屾寚瀹氫笉鍚宻cope鐨刡ean瀵硅薄(Java Bean)浼氳缁戝畾鍒颁笉鍚岀殑鑼冨洿瀵硅薄涓� 聽 // 閫夋嫨鑼冨洿瀵硅薄鐨勫師鍒欙細浣滅敤鍩熺殑鑼冨洿瓒婂皬瓒婂ソ锛涘洜涓轰綔鐢ㄥ煙灏忕殑鐢熷懡鍛ㄦ湡鐭紝鏈夊埄浜庢�ц兘鎻愰珮銆� 聽 渚嬪锛� 聽 琛ㄧずstu瀵硅薄琚粦瀹氬埌javax.servlet.jsp.PageContext瀵硅薄(pageContext)涓紝鍏剁瓑浠风殑浠g爜 聽 <%聽 聽 Student stu = pageContext.getAttribute("stu"); 聽 聽 聽 聽 if(stu==null) { 聽 聽 聽 聽 聽 stu=new Student(); 聽 聽 聽 聽 聽 pageContext.setAttribute("stu",stu); 聽 }%> 聽 聽 1)pageContext瀵硅薄锛� 聽 聽 姣忎竴涓猨sp椤甸潰瀵瑰簲鐫�涓�涓猵ageContext銆備竴鑸湴锛屽湪瀹為檯搴旂敤涓紝涓昏鏄娇鐢ㄥ畠鏉ュ瓨鍙栧睘鎬с�� 聽 聽 鍙﹀锛宲ageContext瀵硅薄鑳藉瀛樺彇鍏朵粬闅愬惈瀵硅薄銆� 聽 聽 a.pageContext瀵硅薄瀛樺彇鍏朵粬闅愬惈瀵硅薄灞炴�х殑鏂规硶锛屾鏃堕渶瑕佹寚瀹氳寖鍥寸殑鍙傛暟銆� 聽 聽 聽 Object getAttribute(String name, int scope) 聽 聽 聽 Enumeration getAttributeNamesInScope(int scope) 聽 聽 聽 void removeAttribute(String name, int scope) 聽 聽 聽 void setAttribute(String name, Object value, int scope) 聽 聽 鍏朵腑锛岃寖鍥村弬鏁版湁鍥涗釜锛屽垎鍒唬琛ㄥ洓绉嶈寖鍥达細 聽 聽 聽 PAGE_SCOPE銆丷EQUEST_SCOPE銆丼ESSION_SCOPE銆丄PPLICATION_SCOPE 聽 聽 b.PageContext瀵硅薄鍙栧緱鍏朵粬闅愬惈瀵硅薄鐨勬柟娉� 聽 聽 聽 Exception getException()聽 聽 聽 聽 聽 鍥炰紶鐩墠缃戦〉鐨勫紓甯革紝涓嶈繃姝ょ綉椤佃涓篹rror page锛� 聽 聽 聽 JspWriter getOut()聽 聽 聽 聽 聽 聽 聽 聽 鍥炰紶鐩墠缃戦〉鐨勮緭鍑烘祦锛屼緥濡傦細out 聽 聽 聽 Object getPage()聽 聽 聽 聽 聽 聽 聽 聽 聽 鍥炰紶鐩墠缃戦〉鐨凷ervlet 瀹炰綋(instance)锛屼緥濡傦細page 聽 聽 聽 ServletRequest getRequest()聽 聽 聽 聽 鍥炰紶鐩墠缃戦〉鐨勮姹傦紝渚嬪锛歳equest 聽 聽 聽 ServletResponse getResponse()聽 聽 聽 鍥炰紶鐩墠缃戦〉鐨勫搷搴旓紝渚嬪锛歳esponse 聽 聽 聽 ServletConfig getServletConfig()聽 鍥炰紶鐩墠姝ょ綉椤电殑ServletConfig 瀵硅薄锛屼緥濡傦細config 聽 聽 聽 ServletContext getServletContext() 鍥炰紶鐩墠姝ょ綉椤电殑鎵ц鐜(context)锛屼緥濡傦細application 聽 聽 聽 HttpSession getSession()聽 聽 聽 聽 聽 鍥炰紶鍜岀洰鍓嶇綉椤垫湁鑱旂郴鐨勪細璇�(session)锛屼緥濡傦細session 聽 聽 c.PageContext瀵硅薄鎻愪緵鍙栧緱灞炴�х殑鏂规硶 聽 聽 聽 Object getAttribute(String name, int scope)聽 聽 鍥炰紶name 灞炴��(鑼冨洿涓簊cope锛涚被鍨嬩负Object) 聽 聽 聽 Enumeration getAttributeNamesInScope(int scope)聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 鍥炰紶鎵�鏈夊睘鎬ц寖鍥翠负scope 鐨勫睘鎬у悕绉帮紝鍥炰紶绫诲瀷涓篍numeration 聽 聽 聽 int getAttributesScope(String name)鍥炰紶灞炴�у悕绉颁负name 鐨勫睘鎬ц寖鍥� 聽 聽 聽 void removeAttribute(String name)聽 绉婚櫎灞炴�у悕绉颁负name 鐨勫睘鎬у璞� 聽 聽 聽 void removeAttribute(String name, int scope)聽 绉婚櫎灞炴�у悕绉颁负name锛岃寖鍥翠负scope 鐨勫睘鎬у璞� 聽 聽 聽 void setAttribute(String name, Object value, int scope)聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 鎸囧畾灞炴�у璞$殑鍚嶇О涓簄ame銆佸�间负value銆佽寖鍥翠负scope 聽 聽 聽 Object findAttribute(String name)聽 瀵绘壘鍦ㄦ墍鏈夎寖鍥翠腑灞炴�у悕绉颁负name 鐨勫睘鎬у璞� 聽 聽 2)request 瀵硅薄 聽 聽 request 瀵硅薄鍖呭惈鎵�鏈夎姹傜殑淇℃伅锛� 聽 聽 濡傦細璇锋眰鐨勬潵婧愩�佹爣澶淬�乧ookies鍜岃姹傜浉鍏崇殑鍙傛暟鍊肩瓑绛夈�� 聽 聽 request 瀵硅薄瀹炵幇javax.servlet.http.HttpServletRequest鎺ュ彛鐨勶紝 聽 聽 鎵�鎻愪緵鐨勬柟娉曞彲浠ュ皢瀹冨垎涓哄洓澶х被锛� 聽 聽 (1)鍌ㄥ瓨鍜屽彇寰楀睘鎬ф柟娉曪紱 聽 聽 聽 void setAttribute(String name, Object value)聽 聽 聽 璁惧畾name灞炴�х殑鍊间负value 聽 聽 聽 Enumeration getAttributeNamesInScope(int scope)聽 鍙栧緱鎵�鏈塻cope 鑼冨洿鐨勫睘鎬� 聽 聽 聽 Object getAttribute(String name)聽 鍙栧緱name 灞炴�х殑鍊� 聽 聽 聽 void removeAttribute(String name)聽 绉婚櫎name 灞炴�х殑鍊� 聽 聽 (2)鍙栧緱璇锋眰鍙傛暟鐨勬柟娉� 聽 聽 聽 String getParameter(String name)聽 鍙栧緱name 鐨勫弬鏁板�� 聽 聽 聽 Enumeration getParameterNames()聽 聽 鍙栧緱鎵�鏈夌殑鍙傛暟鍚嶇О 聽 聽 聽 String [] getParameterValues(String name)聽 聽 鍙栧緱鎵�鏈塶ame 鐨勫弬鏁板�� 聽 聽 聽 Map getParameterMap()聽 聽 聽 聽 聽 聽 聽 鍙栧緱涓�涓姹傚弬鏁扮殑Map 聽 聽 (3)鑳藉鍙栧緱璇锋眰HTTP 鏍囧ご鐨勬柟娉� 聽 聽 聽 String getHeader(String name)聽 聽 聽 鍙栧緱name 鐨勬爣澶� 聽 聽 聽 Enumeration getHeaderNames()聽 聽 聽 鍙栧緱鎵�鏈夌殑鏍囧ご鍚嶇О 聽 聽 聽 Enumeration getHeaders(String name) 鍙栧緱鎵�鏈塶ame 鐨勬爣澶� 聽 聽 聽 int getIntHeader(String name)聽 聽 聽 鍙栧緱鏁存暟绫诲瀷name 鐨勬爣澶� 聽 聽 聽 long getDateHeader(String name)聽 聽 鍙栧緱鏃ユ湡绫诲瀷name 鐨勬爣澶� 聽 聽 聽 Cookie [] getCookies()聽 聽 聽 聽 聽 聽 鍙栧緱涓庤姹傛湁鍏崇殑cookies 聽 聽 (4)鍏朵粬鐨勬柟娉� 聽 聽 聽 String getContextPath()聽 聽 聽 聽 聽 聽 鍙栧緱Context 璺緞(鍗崇珯鍙板悕绉�) 聽 聽 聽 String getMethod()聽 聽 聽 聽 聽 聽 聽 聽 鍙栧緱HTTP 鐨勬柟娉�(GET銆丳OST) 聽 聽 聽 String getProtocol()聽 聽 聽 聽 聽 聽 聽 鍙栧緱浣跨敤鐨勫崗璁� (HTTP/1.1銆丠TTP/1.0 ) 聽 聽 聽 String getQueryString()聽 聽 聽 聽 聽 聽 鍙栧緱璇锋眰鐨勫弬鏁板瓧绗︿覆锛屼笉杩囷紝HTTP鐨勬柟娉曞繀椤讳负GET 聽 聽 聽 String getRequestedSessionId()聽 聽 鍙栧緱鐢ㄦ埛绔殑Session ID 聽 聽 聽 String getRequestURI()聽 聽 聽 聽 聽 聽 鍙栧緱璇锋眰鐨刄RL锛屼絾鏄笉鍖呮嫭璇锋眰鐨勫弬鏁板瓧绗︿覆 聽 聽 聽 String getRemoteAddr()聽 聽 聽 聽 聽 聽 鍙栧緱鐢ㄦ埛鐨処P 鍦板潃 聽 聽 聽 String getRemoteHost()聽 聽 聽 聽 聽 聽 鍙栧緱鐢ㄦ埛鐨勪富鏈哄悕绉� 聽 聽 聽 int getRemotePort()聽 聽 聽 聽 聽 聽 聽 聽 鍙栧緱鐢ㄦ埛鐨勪富鏈虹鍙� 聽 聽 聽 String getRemoteUser()聽 聽 聽 聽 聽 聽 鍙栧緱鐢ㄦ埛鐨勫悕绉� 聽 聽 聽 void getCharacterEncoding(String encoding)聽 聽 璁惧畾缂栫爜鏍煎紡锛岀敤鏉ヨВ鍐崇獥浣撲紶閫掍腑鏂囩殑闂 聽 聽 聽 3)session 瀵硅薄 聽 聽 session瀵硅薄琛ㄧず鐩墠涓埆鐢ㄦ埛鐨勪細璇�(session)鐘跺喌銆� 聽 聽 session瀵硅薄瀹炵幇javax.servlet.http.HttpSession鎺ュ彛锛孒ttpSession鎺ュ彛鎵�鎻愪緵鐨勬柟娉� 聽 聽 聽 long getCreationTime()聽 聽 聽 聽 聽 聽 鍙栧緱session浜х敓鐨勬椂闂达紝鍗曚綅鏄绉� 聽 聽 聽 String getId()聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 鍙栧緱session 鐨処D 聽 聽 聽 long getLastAccessedTime()聽 聽 聽 聽 鍙栧緱鐢ㄦ埛鏈�鍚庨�氳繃杩欎釜session閫佸嚭璇锋眰鐨勬椂闂� 聽 聽 聽 long getMaxInactiveInterval()聽 聽 聽 鍙栧緱鏈�澶ession涓嶆椿鍔ㄧ殑鏃堕棿锛岃嫢瓒呰繃杩欐椂闂达紝session 灏嗕細澶辨晥 聽 聽 聽 void invalidate()聽 聽 聽 聽 聽 聽 聽 聽 聽 鍙栨秷session 瀵硅薄锛屽苟灏嗗璞″瓨鏀剧殑鍐呭瀹屽叏鎶涘純 聽 聽 聽 boolean isNew()聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 鍒ゆ柇session 鏄惁涓�"鏂�"鐨勪細璇� 聽 聽 聽 void setMaxInactiveInterval(int interval)聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 璁惧畾鏈�澶ession涓嶆椿鍔ㄧ殑鏃堕棿锛岃嫢瓒呰繃杩欐椂闂达紝session 灏嗕細澶辨晥 聽 聽 4)application瀵硅薄 聽 聽 application瀵硅薄鏈�甯歌浣跨敤鍦ㄥ瓨鍙栫幆澧冪殑淇℃伅銆� 聽 聽 鍥犱负鐜鐨勪俊鎭�氬父閮藉偍瀛樺湪ServletContext涓紝鎵�浠ュ父鍒╃敤application瀵硅薄鏉ュ瓨鍙朣ervletContext涓殑淇℃伅銆� 聽 聽 application 瀵硅薄瀹炵幇javax.servlet.ServletContext 鎺ュ彛锛孲ervletContext鎺ュ彛瀹瑰櫒鎵�鎻愪緵鐨勬柟娉� 聽 聽 聽 int getMajorVersion()聽 聽 聽 聽 聽 聽 聽 鍙栧緱Container涓昏鐨凷ervlet API鐗堟湰 聽 聽 聽 int getMinorVersion()聽 聽 聽 聽 聽 聽 聽 鍙栧緱Container娆¤鐨凷ervlet API 鐗堟湰 聽 聽 聽 String getServerInfo()聽 聽 聽 聽 聽 聽 鍙栧緱Container鐨勫悕绉板拰鐗堟湰 聽 聽 聽 String getMimeType(String file)聽 聽 鍙栧緱鎸囧畾鏂囦欢鐨凪IME 绫诲瀷 聽 聽 聽 ServletContext getContext(String uripath)聽 聽 聽 聽 鍙栧緱鎸囧畾Local URL鐨凙pplication context 聽 聽 聽 String getRealPath(String path)聽 聽 鍙栧緱鏈湴绔痯ath鐨勭粷瀵硅矾寰� 聽 聽 聽 void log(String message)聽 聽 聽 聽 聽 灏嗕俊鎭啓鍏og鏂囦欢涓� 聽 聽 聽 void log(String message, Throwable throwable)聽 聽 灏唖tack trace 鎵�浜х敓鐨勫紓甯镐俊鎭啓鍏og鏂囦欢涓� 聽 3.鍏朵粬瀵硅薄锛� 聽 聽 1)page 瀵硅薄 聽 聽 page瀵硅薄浠h〃JSP鏈韩锛屾洿鍑嗙‘鍦拌page瀵硅薄鏄綋鍓嶉〉闈㈣浆鎹㈠悗鐨凷ervlet绫荤殑瀹炰緥銆� 聽 聽 浠庤浆鎹㈠悗鐨凷ervlet绫荤殑浠g爜涓紝鍙互鐪嬪埌杩欑鍏崇郴锛� Object page = this; 聽 聽 鍦↗SP椤甸潰涓紝寰堝皯浣跨敤page瀵硅薄銆� 聽 聽 2)response 瀵硅薄 聽 聽 response 瀵硅薄涓昏灏咼SP 澶勭悊鏁版嵁鍚庣殑缁撴灉浼犲洖鍒板鎴风銆� 聽 聽 response 瀵硅薄鏄疄鐜癹avax.servlet.http.HttpServletResponse 鎺ュ彛銆俽esponse瀵硅薄鎵�鎻愪緵鐨勬柟娉曘�� 聽 聽 a.璁惧畾琛ㄥご鐨勬柟娉� 聽 聽 聽 void addCookie(Cookie cookie)聽 聽 聽 聽 聽 聽 聽 聽 鏂板cookie 聽 聽 聽 void addDateHeader(String name, long date)聽 鏂板long绫诲瀷鐨勫�煎埌name鏍囧ご 聽 聽 聽 void addHeader(String name, String value)聽 聽 鏂板String绫诲瀷鐨勫�煎埌name鏍囧ご 聽 聽 聽 void addIntHeader(String name, int value)聽 聽 鏂板int绫诲瀷鐨勫�煎埌name鏍囧ご 聽 聽 聽 void setDateHeader(String name, long date)聽 鎸囧畾long绫诲瀷鐨勫�煎埌name鏍囧ご 聽 聽 聽 void setHeader(String name, String value)聽 聽 鎸囧畾String绫诲瀷鐨勫�煎埌name鏍囧ご 聽 聽 聽 void setIntHeader(String name, int value)聽 聽 鎸囧畾int绫诲瀷鐨勫�煎埌name鏍囧ご 聽 聽 b.璁惧畾鍝嶅簲鐘舵�佺爜鐨勬柟娉� 聽 聽 聽 void sendError(int sc)聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 浼犻�佺姸鎬佺爜(status code) 聽 聽 聽 void sendError(int sc, String msg)聽 聽 聽 聽 聽 浼犻�佺姸鎬佺爜鍜岄敊璇俊鎭� 聽 聽 聽 void setStatus(int sc)聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 璁惧畾鐘舵�佺爜 聽 聽 c.鐢ㄦ潵URL 閲嶅啓(rewriting)鐨勬柟娉暵� 聽 聽 聽 聽 String encodeRedirectURL(String url)聽 聽 聽 聽 瀵逛娇鐢╯endRedirect()鏂规硶鐨刄RL浜堜互缂栫爜 聽 聽 3)out 瀵硅薄 聽 聽 out瀵硅薄鐨勭被鍨嬫槸javax.servlet.jsp.JspWriter锛岃绫讳粠java.io.Writer绫绘淳鐢燂紝浠ュ瓧绗︽祦鐨勫舰寮忚緭鍑烘暟鎹�� 聽 聽 out瀵硅薄瀹為檯涓婃槸PrintWriter瀵硅薄鐨勫甫缂撳啿鐨勭増鏈�(鍦╫ut瀵硅薄鍐呴儴浣跨敤PrintWriter瀵硅薄鏉ヨ緭鍑烘暟鎹�)锛� 聽 聽 鍙互閫氳繃page鎸囦护鐨刡uffer灞炴�ф潵璋冩暣缂撳啿鍖虹殑澶у皬锛岄粯璁ょ殑缂撳啿鍖烘槸8kb銆� 聽 聽 out 瀵硅薄鑳芥妸缁撴灉杈撳嚭鍒扮綉椤典笂銆� 聽 聽 out涓昏鏄敤鏉ユ帶鍒剁鐞嗚緭鍑虹殑缂撳啿鍖�(buffer)鍜岃緭鍑烘祦(output stream)銆� 聽 聽 聽 void clear( )聽 聽 聽 聽 聽 聽 聽 娓呴櫎杈撳嚭缂撳啿鍖虹殑鍐呭 聽 聽 聽 void clearBuffer( )聽 聽 聽 聽 娓呴櫎杈撳嚭缂撳啿鍖虹殑鍐呭 聽 聽 聽 void close( )聽 聽 聽 聽 聽 聽 聽 鍏抽棴杈撳嚭娴侊紝娓呴櫎鎵�鏈夌殑鍐呭 聽 聽 聽 int getBufferSize( )聽 聽 聽 聽 鍙栧緱鐩墠缂撳啿鍖虹殑澶у皬(KB) 聽 聽 聽 int getRemaining( )聽 聽 聽 聽 鍙栧緱鐩墠浣跨敤鍚庤繕鍓╀笅鐨勭紦鍐插尯澶у皬(KB) 聽 聽 聽 boolean isAutoFlush( )聽 聽 聽 鍥炰紶true琛ㄧず缂撳啿鍖烘弧鏃朵細鑷姩娓呴櫎锛沠alse琛ㄧず涓嶄細鑷姩娓呴櫎骞朵笖浜х敓寮傚父澶勭悊 聽 聽 4)exception瀵硅薄 聽 聽 鑻ヨ浣跨敤exception 瀵硅薄鏃讹紝蹇呴』鍦╬age 鎸囦护涓瀹氾細<%@ page isErrorPage="true" %>鎵嶈兘浣跨敤銆� 聽 聽 exception鎻愪緵鐨勪笁涓柟娉曪細 聽 聽 聽 getMessage() 聽 聽 聽 getLocalizedMessage() 聽 聽 聽 printStackTrace(new java.io.PrintWriter(out)) 聽 聽 5)config 瀵硅薄 聽 聽 config 瀵硅薄閲屽瓨鏀剧潃涓�浜汼ervlet 鍒濆鐨勬暟鎹粨鏋勩�� 聽 聽 config 瀵硅薄瀹炵幇浜巎avax.servlet.ServletConfig 鎺ュ彛锛屽畠鍏辨湁涓嬪垪鍥涚鏂规硶锛� 聽 聽 聽 public String getInitParameter(name) 聽 聽 聽 public java.util.Enumeration getInitParameterNames( ) 聽 聽 聽 public ServletContext getServletContext() 聽 聽 聽 public Sring getServletName() 聽 渚嬪瓙锛� 1.鑼冨洿瀵硅薄姣旇緝 <% pageContext 鎴杛equest 鎴杝ession 鎴朼pplication.setAttribute("name", "maxwell"); 聽 pageContext.setAttribute("sex", "m"); %> 聽 2.杈撳嚭瀵硅薄out <%out.println("Hello JSP!");%> <%System.out.println("Hello JSP!");%> getBufferSize() //tomcat default:12k getRemaining() flush() clearBuffer() 聽 3.request瀵硅薄 request: getProtocol() getMethod() getHeader("User-Agent") getCookies() getRequestURI() getRequestURL() getContextPath() getServletPath() getPathInfo() getQueryString() isRequestedSessionIdFromCookie() isRequestedSessionIdFromURL() isRequestedSessionIdValid() getLocalPort(),getRemotePort() getRequestDispatcher(),setCharacterEncoding(),getInputStream() 聽 4.session瀵硅薄 session: getId() isNew() invalidate() setMaxInactiveInterval(10) 聽 5.鍝嶅簲瀵硅薄 response: sendRedirect("third.jsp") sendError(404, "400 Error!") 6.搴旂敤瀵硅薄 application: log("some body visit our website..."); getMajorVersion() getMinorVersion() getServerInfo() getRequestDispatcher(),getResourceAsStream(),getInitParameter() 聽 pageContext: getAttribute("name") 聽 config: getInitParameter("classNo") getServletName() 聽 page: getClass() 聽 ************************************************************************************************ 浜屻�佹杩庢枃浠� 聽 1.缂虹渷鎯呭喌涓�,涓�涓猈eb App涓殑聽 index.html, index.htm, index.jsp聽 鍙綔涓洪粯璁ょ殑娆㈣繋鏂囦欢. 聽 褰撶敤鎴疯姹傛病鏈夋寚鏄庤璁块棶鐨勮祫婧愭椂,Web Container浼氱敤娆㈣繋鏂囦欢鍝嶅簲瀹㈡埛绔姹�. 2.鎵嬪伐璁剧疆娆㈣繋鏂囦欢锛� 聽 web.xml 聽 鎵緒elcome.jsp锛屾病鎵惧埌锛岀户缁線涓嬫壘 聽 聽 聽 聽 聽 聽 聽 聽 聽 涓夈�丮VC MVC:聽 聽 Model-View-Controller (鐢ㄦ埛浜や簰杩囩▼锛氳緭鍏ャ�佸鐞嗐�佽緭鍑�) WEB搴旂敤鐨凪VC锛涗紭鍖朩eb App鐨勭粨鏋�,浣跨敤MVC妯″紡 Model 1:聽 聽 JSP + JavaBean(EJB) Model 2:聽 聽 Servlet + JSP + JavaBean(EJB)------>MVC 浣撶郴缁撴瀯 璁捐妯″紡 聽 鍏蜂綋闂鎻愬嚭鍏蜂綋鐨勮В鍐冲姙娉� 涔犳儻鐢ㄦ硶 聽 Day4 鍐呭瑕佺偣锛� 1 瀹炵幇鏂囦欢涓婁紶聽 2 鏁版嵁楠岃瘉聽 3 鍒嗛〉瀹炵幇 ***************************************************************************************** 涓�銆佹枃浠朵笂浼� 1.琛ㄥ崟褰㈠紡
聽 file:
聽
聽
2.浣跨敤HttpMonitor宸ュ叿锛�
鏌ョ湅鏂囦欢涓婁紶鏃讹紝璇锋眰鐨勫唴瀹广��
聽
3.鏈嶅姟鍣ㄧ瀵逛笂浼犳枃浠剁殑澶勭悊
渚嬪瓙
fileupload
澶勭悊姝ラ(寰呰ˉ鍏�)
聽
鐭ヨ瘑鐐癸細
1)閫氳繃HttpServletRequest鏉ヤ紶閫佹枃浠跺唴瀹�
2)澶勭悊request澶达紝瀛楃涓茬殑鍒嗘瀽
3)java.io.File API鐨勪娇鐢�
聽
*****************************************************************************************
浜屻�佹暟鎹獙璇�
聽
濡備綍瀹屾垚Web App涓殑鏁版嵁楠岃瘉宸ヤ綔
聽
1)瀹㈡埛绔牎楠岋細
杈撳叆鍩熶笉鑳戒负绌猴紝鍙兘鏄暟瀛楋紝鏁版嵁闀垮害澶т簬5绛夌瓑
JavaScript瀹㈡埛绔畬鎴�(楠岃瘉妗嗘灦锛岃礋璐e鎴风鏂归潰鐨勯獙璇�)
聽
2)鏈嶅姟鍣ㄧ鏍¢獙锛�
渚嬪锛氬悗鍙版暟鎹簱瑕佹眰鎻愪氦鏁版嵁鍞竴鎬�
Java鏈嶅姟鍣ㄧ瀹屾垚(娌℃湁鐜版垚鐨勬鏋讹紝鍥犱负涓嶅悓鐨勯」鐩湁涓嶅悓鐨勪笟鍔¤鍒�)
聽
閲嶇偣锛�
1)鍒嗘竻妤氫粈涔堟儏鍐典笅浣跨敤瀹㈡埛绔牎楠岋紝浠�涔堟儏鍐典笅浣跨敤鏈嶅姟鍣ㄧ鏍¢獙
聽
***************************************************************************************
涓夈�佹暟鎹垎椤�
鏌ヨ鏁版嵁搴撴椂锛屽鏋滄弧瓒虫潯浠剁殑璁板綍寰堝锛岃濡備綍杩斿洖缁欓〉闈�?
1.瀹㈡埛绔垎椤�
聽 鍚屾牱鍦帮紝浣跨敤html/javascript绛夋妧鏈鐞嗐�傜敋鑷冲彲浠ュ皝瑁呮垚缁勪欢
2.鏈嶅姟鍣ㄧ鍒嗛〉
聽 闈炲父閲嶈鐨勶紝鍦ㄥ疄闄呴」鐩腑闈炲父闇�瑕佲�斺�斺�斺�旀�ц兘闂銆�
杩欓渶瑕佺粨鍚圝DBC/Hibernate/TopLink/EJB绛夋妧鏈疄鐜般��
聽
鏌ヨ鍒嗛〉
聽 1)涓�娆℃�т粠鏁版嵁搴撲腑鏌ュ嚭鎵�鏈変俊鎭紝鍦ㄥ唴瀛樹腑浣滃垎椤�(缂撳瓨)
聽 聽 聽 鐗圭偣锛氶�熷害闈炲父蹇�,娑堣�楄祫婧愬ぇ(鍐呭瓨?)
聽
聽 2)鍒嗗娆℃煡璇㈡暟鎹簱锛屼竴娆℃煡璇㈢殑鏁版嵁閲忓氨鏄竴涓〉闈㈠彲浠ユ樉绀虹殑鏁版嵁閲�
聽 聽 聽 鐗圭偣锛氭秷鑰楄祫婧愬皯锛岀浉瀵规潵璇撮�熷害鎱�
聽
聽 3)鎶樿》鐨勬柟妗�(涓�娆″彧鍙杗椤碉紝1 聽 聽 聽 鐗圭偣锛氫腑搴镐箣閬�(瀹炵幇涓紝缃崲绠楁硶鏁欓毦) 聽 甯歌鐨勫垎椤靛鐞嗘柟娉曪細瀹氫箟濡備笅鍑犱釜鍙傛暟 rows:鏁版嵁搴撹〃涓褰曟�昏鏁奥� select count(*) from 琛ㄥ悕; 聽 totalPage锛氭�婚〉鏁奥� 聽 (瀵煎嚭灞炴�э細鍙互鐢卞叾浠栧睘鎬ц绠楄�屽緱) int totalPage = rows / size + 1; size锛氭瘡椤垫樉绀虹殑璁板綍鏁扮洰聽 聽 鍙畾鍒讹紝鍙啓姝� curPageNo锛氬綋鍓嶉〉聽 聽 聽 聽 瀹㈡埛绔喅瀹� 聽 startRowNo锛氬綋鍓嶉〉鍦ㄦ暟鎹簱涓殑璧峰琛屽彿(瀵煎嚭灞炴��)聽 聽 聽 聽 int startRowNo = (curPageNo -1 ) * size; 聽 缁冧範锛� 閲嶆柊鏀归�燯sermanager渚嬪瓙涓殑鏌ヨ鎵�鏈夌殑鐢ㄦ埛鐨勫姛鑳�(浣跨敤鍒嗛〉) 聽 Day5 鍐呭瑕佺偣锛毬� 1 EL聽 2 JSTL ************************************************************** 涓�銆丒L(Expression Language----琛ㄨ揪寮忚瑷�) 涓虹綉椤电編宸ヨ�岃锛岃窡java璇彞鐩镐技锛涘敖閲忓噺灏慾ava绋嬪簭鐨勪緷璧�(涓嶈兘瑕佹眰缇庡伐浣跨敤java) 1.璇硶 聽 琛ㄨ揪寮徛� 聽 聽 聽 聽 vs.聽 聽 EL琛ㄨ揪寮忚瑷�(JSP2.0) 聽 <%=name%>聽 聽 <=>聽 聽 聽 ${name} 2.鏂囧瓧 聽 鍦� EL 琛ㄨ揪寮忎腑锛屾暟瀛椼�佸瓧绗︿覆銆佸竷灏斿�煎拰 null 閮藉彲浠ヨ鎸囧畾涓烘枃瀛楀��(甯搁噺)銆� 聽 瀛楃涓插彲浠ョ敤鍗曞紩鍙锋垨鍙屽紩鍙峰畾鐣屻�傚竷灏斿�艰鎸囧畾涓� true 鍜� false 銆� 聽 渚嬪瓙锛� 聽 琛ㄨ揪寮徛� 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 鍊� 聽 ----------------------------------------------------------------------- 聽 ${-168.18}聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 -168.18 聽 ${3.8e-18}聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 3.8e-18聽 聽 聽 聽 聽 //绉戝璁℃暟娉� 聽 ${3.14159265}聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 3.14159265聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ${"Hello JSP EL!"}聽 聽 聽 聽 聽 聽 聽 聽 Hello JSP EL!聽 聽 绛変环浜� <%="Hello JSP EL!"%>聽 聽 聽 聽 聽 聽 ${'Hello JSP EL...'}聽 聽 聽 聽 聽 聽 聽 Hello JSP EL... 聽 ${true}聽 //can be TRUE?聽 聽 聽 聽 聽 聽 true 聽 ${false} //can be FALSE?聽 聽 聽 聽 聽 false 聽 ${str==null}聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 true聽 聽 聽 聽 聽 聽 聽 //甯冨皵鍊肩殑琛ㄨ揪寮� 聽 3.EL 杩愮畻绗� 聽 绫诲埆聽 聽 聽 聽 聽 聽 聽 杩愮畻绗� 聽 ------------------------------------------------------------- 聽 绠楁湳杩愮畻绗β� 聽 聽 聽 +銆伮� -銆伮� *銆伮� /(鎴� div)銆伮� 聽 %(鎴� mod) 聽 鍏崇郴杩愮畻绗β� 聽 聽 聽 ==(鎴� eq)銆伮� 聽 !=(鎴� ne)銆伮� 聽 <(鎴� lt) 聽 聽 聽 聽 聽 聽 聽 聽 >(鎴� gt)銆伮� 聽 <=(鎴� le)銆伮� 聽 >=(鎴� ge) 聽 閫昏緫杩愮畻绗β� 聽 聽 聽 &&(鎴� and)銆伮� ||(鎴� or)銆伮� 聽 !(鎴� not) 聽 楠岃瘉杩愮畻绗β� 聽 聽 聽 empty聽 聽 聽 鍏朵腑锛宔mpty 鍒ゆ柇涓�涓彉閲忔槸鍚︿负null鎴栨槸鍚﹀寘鍚湁鏁堟暟鎹�: 聽 聽 if(name==null||name.equlas(""))聽 绛変环浜幝� ${empty name} ->聽 聽 true 聽 渚嬪瓙锛� 聽 聽 琛ㄨ揪寮徛� 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 鍊� 聽 ------------------------------------------------------------- 聽 聽 ${3+5.1}聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 8.1 聽 聽 ${"Hello"+",Tarena!"}聽 聽 聽 聽 聽 聽 聽 鎶ラ敊锛伮� // EL鐨�"+"娌℃湁瀛楃涓茶繛鎺ュ姛鑳� 聽 聽 ${5*2}聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 10 聽 聽 ${9.3/3}聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 3.1 聽 聽 ${9.3 div 3}聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 3.1 聽 聽 ${8 div 0}聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Infinity // 琛ㄧず鏃犵┓澶� 聽 聽 ${9%2}聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 1 聽 聽 ${9 mod 2}聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 1 聽 聽 ${8*6>68?"Yes":"No"}聽 聽 聽 聽 聽 聽 聽 No聽 //涓夌洰琛ㄨ揪寮� 聽 <% String name=""; 聽 聽 request.setAttribute("name",name);聽 聽 聽 //濡傛灉娌℃湁 setAttribute 锛屽垯蹇呭畾鏄┖ 聽 %> 聽 聽 ${empty name}聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 true //瀵硅寖鍥村璞″唴鐨勫彉閲忔垨瀵硅薄杩涜鍒ょ┖ 聽 4.鍙橀噺鍜孞avaBean灞炴�ф暟鎹緭鍑� 聽 琛ㄨ揪寮忚瑷�杈撳嚭鍙橀噺锛屾槸鍒拌寖鍥村璞�(pageContext,request,session,application)涓煡鎵剧浉搴斿睘鎬с�� 聽 鑰岄潪鐩存帴鍦ㄩ〉闈腑鏌ユ壘瀹炰緥鎴栧眬閮ㄥ彉閲忋�� 聽 琛ㄨ揪寮忚瑷�鏌ユ壘鍙橀噺鐨勯『搴忔槸: 聽 pageContext -> request -> session->application锛� 鎵�鏈夎寖鍥撮兘鏈壘鍒版椂锛岃祴鍊糿ull 聽 5.瀛樺彇鍣� 聽 []聽 聽 ->杈撳嚭瀵硅薄灞炴�у�硷紝杈撳嚭鏁扮粍鎴栭泦鍚堜腑瀵瑰簲绱㈠紩鍊� 聽 .聽 聽 ->杈撳嚭瀵硅薄灞炴�у�� 聽 渚嬪瓙锛� 聽 <% SuperGirl girl = new SuperGirl();聽 girl.setName("Alice"); 聽 聽 聽 session.setAttribute("girl",girl);聽 %>聽 //涓�瀹氳鏈夎繖鍙ワ紝璁剧疆鎴愯寖鍥村璞� 聽 ${girl["name"]} 聽 ${girl['name']}聽 //鎷垮睘鎬ф椂锛屽崟寮曡窡鍙屽紩绛変环 聽 ${girl.name}聽 聽 聽 //杩欑鏂规硶鍚屾牱鍙互 聽 聽 聽 <%聽 List aList = new ArrayList(); 聽 聽 聽 aList.add("China");聽 aList.add(girl);聽 aList.add(168.18); 聽 聽 聽 session.setAttribute("aList", aList); %> 聽 ${aList[0]}聽 //浣跨敤涓嬫爣鏉ュ彇鍊� "China" 聽 ${aList[1]}聽 //鍙栧緱瀵硅薄鐨勫紩鐢ㄥ湴鍧�聽 杩樺彲浠ュ祵濂楋細${aList[1]['name']} 聽 ${aList[3]}聽 //涓嬫爣瓒婄晫锛屼笉浼氭姤閿欙紱鍙槸鍙栦笉鍑哄�� 聽 聽 聽 <%聽 Map map = new HashMap(); 聽 聽 聽 map.put("name", "Kitty");聽 map.put("age", "25");聽 map.put("date", new Date()); 聽 聽 聽 map.put("aList", aList); 聽 聽 聽 session.setAttribute("map", map); %> 聽 ${map.date}聽 聽 ${map["date"]}聽 聽 //杩欎袱涓瓑鏁� 聽 ${map.aList[0]} ${map["aList"][0]} //杩欎袱涓篃绛夋晥 聽 ${map.aList[1][name]}聽 聽 聽 聽 聽 聽 聽 //宓屽鍙栧�� 聽 6.闅愬惈瀵硅薄 聽 el鎻愪緵浜嗚嚜宸辩殑涓�濂楅殣鍚璞★紝鏂逛究鍦ㄩ〉闈㈠唴瀵瑰悇绉嶅父鐢ㄦ暟鎹俊鎭殑璁块棶. 聽 聽 EL闅愯棌瀵硅薄聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 JSP闅愯棌瀵硅薄 聽 -------------------------------------------------------------------------------- 聽 聽 pageScope聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 pageContext 聽 聽 requestScope聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 request 聽 聽 sessionScope聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 session 聽 聽 applicationScope聽 聽 聽 聽 聽 聽 聽 聽 聽 appication 聽 聽 聽 param锛毬� 聽 聽 聽 聽 聽 聽 request.getParameter() 聽 聽 paramValues锛毬� 聽 聽 聽 鍦ㄦ彁浜よ〃鍗曢噷锛屾湁澶氫釜杈撳叆鍩熷悓鍚峠etParameterValues 聽 聽 header锛毬� 聽 聽 聽 聽 聽 聽 request.getHeader() 鎸夌収key-value鐨勫舰寮忓彇鍑猴紱value:鏄竴涓猄tring绫诲瀷鐨勫�� 聽 聽 headerValues聽 聽 聽 聽 聽 鎸夌収key-value鐨勬柟寮忓彇鍑猴紝浣嗘槸headerValues閲岄潰鐨剉alue鏄竴涓猄tring绫诲瀷鐨勬暟缁� 聽 聽 cookie聽 聽 聽 聽 聽 聽 聽 聽 request.getCookies() 聽 聽 initParam聽 聽 聽 聽 聽 聽 context param 聽 聽 渚嬪瓙锛� 聽 聽 1)瓒呭コ鐧昏淇℃伅聽 聽 聽 聽 enroll.html 聽 聽 聽
聽 聽 聽 聽
濮撳悕锛� | |
骞撮緞锛� | |
鍩庡競锛� | 聽 |
聽 聽 聽
聽
聽 聽 聽 index.jsp
聽 聽 聽
聽 聽 聽
聽 聽 聽
聽 聽 聽
聽 聽 聽
濮撳悕锛� | ${SuperGirl.name} |
骞撮緞锛� | ${SuperGirl.age} |
鍩庡競锛� | ${SuperGirl.city} |
聽
聽 聽 2)鑼冨洿瀵硅薄
聽 聽 聽 <%聽 pageContext.setAttribute("name", "page");
聽 聽 聽 聽 request.setAttribute("name", "request");
聽 聽 聽 聽 session.setAttribute("name", "session");
聽 聽 聽 聽 application.setAttribute("name", "application"); %>
聽
聽 聽 聽 ${name}聽 聽 // pageContext -> request -> session->application
聽 聽 聽 ${pageScope.name}
聽 聽 聽 ${requestScope.name}
聽 聽 聽 ${sessionScope.name}
聽 聽 聽 ${applicationScope.name}
聽
聽 聽 3)paramValues
聽 聽 聽 鍦╡nroll.html鍔犲叆锛� 鍏磋叮
聽 聽 聽 聽
聽 聽 聽 //鎻愪氦鍚庯紝鑾峰彇杈撳叆鍐呭
聽 聽 聽 ${paramValues.habit[0]}
聽 聽 聽 ${paramValues.habit[1]}
聽 聽 聽 ${paramValues.habit[2]}
聽
聽 聽 4)initParam
聽 聽 聽 web.xml
聽 聽 聽 ...
聽 聽 聽
聽 聽 聽 聽
聽 聽 聽 聽
聽 聽 聽
聽 聽 聽 ...
聽 聽 聽 ${initParam.server}
聽
聽 聽 5)header
聽 聽 聽 ${header["host"]}
聽 聽 聽 ${header["accept"]}
聽 聽 聽 ${header["user-agent"]}
聽
7.鍙互鑷敱璁剧疆鏄惁鏀寔琛ㄨ揪寮忚瑷�
聽 <%@page isELIgnored="false"%> : default:false聽 鍙互浣跨敤EL锛屾敼鎴� true 涔嬪悗锛屽啓EL灏变細鎶ラ敊
聽
聽 閰嶇疆web.xml涔熷彲杈惧埌鍚屾牱鐨勬晥鏋�(鍚屾椂瀛樺湪锛岄偅绉嶈捣浣滅敤锛�)
聽 (绂佺敤鑴氭湰鍜孍L)聽 榛樿閮芥槸false
聽 ...
聽
聽 聽
聽 聽 聽
聽 聽 聽
聽 聽 聽
聽 聽
聽
聽 ....
聽 椤甸潰鐨刾age鎸囦护璁剧疆isELIgnored灞炴�х殑浼樺厛绾ф瘮web.xml涓�
聽
***************************************************************************************
浜屻�丣STL(JSP Standard Tag Library )
鍑忓皯java浠g爜锛岀畝鍖栭〉闈㈢紪鍐欙紱鍔熻兘灏佽锛屾彁楂樺彲閲嶇敤鎬�
1.濡備綍浣跨敤JSTL
聽 1)瀵逛簬Java EE涔嬪墠(鍗矹2EE瑙勮寖1.4鍙婁箣鍓嶇増鏈�)
聽 聽 a銆佸鍒秊stl鐨刯ar鍖�(jstl.jar,standard.jar)鍒�/WEB-INF/lib
聽 聽 b銆佸湪浣跨敤jstl鍔熻兘鐨刯sp椤甸潰涓鍔犳寚浠�
聽 聽 聽 聽 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>聽 //鏍稿績鏍囩搴�
聽 聽 聽 聽 <%@taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml"%>聽 聽
聽 聽 聽 聽 <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
聽 聽 聽 聽 <%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>聽 //鏁版嵁搴撴爣绛惧簱
聽 聽 聽 聽 <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
聽 聽 聽 聽 //prefix 琛ㄥ墠缂�(鍙敼锛屼絾閫氬父鎸夎繖鍐欑殑鐢�)锛� uri 鎸囧悜鏍囩搴撶殑鍏ュ彛
聽 2)Java EE瑙勮寖鎶妀stl浣滀负瑙勮寖鐨勪竴閮ㄥ垎
聽 聽 鎵�浠ョ幇鍦ㄧ殑jstl-1.2宸茬粡鍖呭惈浜嗗師鏉ョ殑jstl.jar , standard.jar
聽
2.core:鏍稿績鏍囩搴�
聽 涓�鑸敤閫�
聽 鍦↗STL涓紝涓�鑸敤閫旂殑鏍囩涓昏鏄寚鍏锋湁杈撳嚭锛岃缃彉閲忥紝鍜岄敊璇鐞嗙瓑鍔熻兘鐨勬爣绛撅紝浠栦滑鍦╦sp涓娇鐢ㄦ瘮杈冮绻侊紝瀹冧滑鏈夛細
聽 -----------
聽 |a銆�
聽 -----------
聽 璇硶锛�
聽 聽 聽 聽
聽 杩欎釜鏍囩鐢ㄤ簬鍦ㄦ煇涓寖鍥�(page,request,session,application)閲岄潰璁剧疆鐗瑰畾鐨勫��
聽 (榛樿涓簆age)锛屾垨鑰呰缃煇涓凡缁忓瓨鍦ㄧ殑javabean鐨勫睘鎬с��
聽 渚嬪瓙锛�
聽 聽
聽 聽 ${counter}//杈撳嚭
聽 聽 聽
聽 聽
聽 聽 ${tarena}
聽
聽 鍙互鎸囧畾鑼冨洿锛岄粯璁ゆ槸page
聽 聽
聽 聽 ${maxIdelTime}
聽
聽 璁剧疆JavaBean鐨勫��
聽 聽
聽 聽
聽 聽
聽 聽
聽
聽 --------------
聽 |b銆�
聽 --------------
聽 璇硶锛�
聽 聽
聽 聽 瀹冪殑浣滅敤鏄垹闄ゆ煇涓彉閲忔垨鑰呭睘鎬с��
聽 渚嬪瓙锛�
聽 聽
聽 聽
聽 聽
聽 聽 ${maxUser}
聽 聽 ${count}
聽 聽
聽 聽
聽 聽 ${maxUser}
聽 聽 ${count}
聽
聽 -----------
聽 |c銆�
聽 -----------
聽 璇硶锛�
聽 娉ㄦ剰:escapeXml鐨勪綔鐢ㄦ槸鏄惁灏嗕唬鐮佷氦缁檟ml瑙f瀽鍣ㄨВ閲婏紝true涓轰氦缁檟ml瑙f瀽鍣ㄨВ閲�(榛樿)锛宖alse涓轰氦缁欐祻瑙堝櫒瑙i噴銆�
聽 聽 聽 default 瀹氫箟缂虹渷鍊笺��
聽
聽 渚嬪瓙锛�
聽 聽
聽 聽
聽 聽
聽 聽
聽
聽 聽
聽 聽 聽 聽
聽 聽 聽 聽
//杈撳嚭琛ㄦ牸锛沞scapeXml="true"鏃跺彧鏄剧ず瀛楃涓�
聽 聽 聽 聽
聽 聽 聽 聽
聽 聽
聽
聽 -------------
聽 |d銆�
聽 -------------
聽 瀹冪殑浣滅敤鏄崟鎹夌敱宓屽鍦ㄥ畠閲岄潰鐨勬爣绛炬墍鎶涘嚭鏉ョ殑寮傚父銆傜被浼间簬<%try{}catch{}%>
聽 璇硶锛�
聽 渚嬪瓙锛�
聽 聽
聽 聽 <% try{ Integer.parseInt("abc"); }catch(Exception error) {聽 } %> //绛変环
聽
聽 聽
聽 聽
聽 聽
聽
聽 鎺у埗璇彞锛�
聽 -----------
聽 |a銆�
聽 -----------
聽 璇硶锛�
聽 聽 聽 聽 [scope="{page|request|session|application}"]> 聽 聽 聽 Body鍐呭 聽 聽
聽 渚嬪瓙锛�
聽 聽
聽 聽
聽 聽 聽 聽
鎮ㄥ皻鏈垚骞达紝涓嶈兘杩涘叆娓告垙涓績锛�
聽 聽
聽
聽 --------------
聽 |b銆�
聽 --------------
聽 渚嬪瓙锛�
聽 聽
聽 聽
聽 聽 聽 聽
聽 聽 聽 聽 聽 聽 聽 鎮ㄤ粖骞存病鏈夌撼绋庯紒
聽 聽 聽 聽
聽 聽 聽 聽
聽 聽 聽 聽 聽 鎮ㄤ粖骞寸即绾崇殑绋庢涓�${tax},鍔犳补锛�
聽 聽 聽 聽
聽 聽 聽 聽
聽 聽 聽 聽 聽 鎮ㄤ粖骞寸即绾崇殑绋庢涓�${tax},鍐嶆帴鍐嶅姳鍝︼紒
聽 聽 聽 聽
聽 聽 聽 聽
聽 聽 聽 聽 聽 鎮ㄤ粖骞寸撼绋庤秴杩囦簡3000鍏冿紝澶氳阿鎮ㄤ负鍥藉鐨勭箒鑽e瘜寮轰綔鍑轰簡璐$尞锛�
聽 聽 聽 聽
聽 聽
聽
聽 ---------------
聽 |c銆�
聽 ---------------
聽 璇硶锛� 聽 聽 聽 聽 [begin="begin"] [end="end"] [step="step"]> 聽 聽 聽 聽 聽 Body 鍐呭 聽 聽 聽 聽
聽 items锛氶渶瑕佽凯浠g殑闆嗗悎锛泇ar锛氳凯浠f椂鍙栭泦鍚堥噷鐨勫�硷紱
聽 渚嬪瓙锛�
聽 聽 <%聽 List aList=new ArrayList();
聽 聽 聽 聽 aList.add("You");聽 聽 聽 aList.add("are");聽 aList.add("a");
聽 聽 聽 聽 aList.add("beautiful"); aList.add("girl");聽
聽 聽 聽 聽 request.setAttribute("aList",aList);聽 %>
聽 聽
${word } |
聽
聽 聽
聽 聽 聽
聽 聽 聽 聽
聽 聽 聽 聽
聽 聽 聽
聽 聽
聽
聽 鍙﹀涓�绉嶇敤娉曪細 (绫讳技 for 寰幆)
聽
聽 聽 聽
聽 聽 聽 聽
聽 聽 聽
聽
聽
聽 URL
聽 ---------------
聽 |a銆�
聽 ---------------
聽 鐩稿綋浜�
聽
聽 聽 聽
聽
聽
聽 -----------
聽 |b銆�
聽 -----------
聽 鐢ㄤ簬鏋勯�燯RL锛屼富瑕佺殑鐢ㄩ�旀槸URL鐨勯噸鍐欍��
聽 聽
聽 聽
聽 聽 聽 聽
聽 聽
聽 聽
聽 聽
聽
聽 聽
聽 聽 next
聽 聽 聽 绛変环浜�
聽 聽 next //鍦� Html 閲屽彲宓屽 JSTL
聽
聽 ----------------
聽 |c銆�
聽 ----------------
聽 //绛変环浜�
聽 聽
聽 渚嬪锛�
聽 聽
聽 聽
聽
3.SQL
聽
聽
聽
聽
聽
聽 聽
聽 聽 <%@page contentType="text/html; charset=GBK"%>
聽 聽 <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
聽 聽 <%@taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
聽 聽 聽 聽 聽 聽 url="jdbc:mysql://localhost:3306/tarena" 聽 聽 聽 user="root" password="11111111" /> 聽 聽 a銆佹煡璇� 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽
${user.userid}
${user.username}
${user.password}
${user.role}
聽 聽
聽
聽 b銆佹彃鍏ヨ褰�
聽 聽 聽 聽 var="i">
聽 聽
鎻掑叆${i}鏉¤褰�.
聽
聽 c銆佹洿鏂拌褰�
聽 聽 聽 聽 sql="UPDATE users SET username='Gavin King' WHERE userid=101" var="i">
聽 聽
鏇存柊${i}鏉¤褰�.
聽
聽 浣滅敤锛氳缃畇ql璇彞涓�"?"琛ㄧず鐨勫崰浣嶇鍙风殑鍊笺��
聽 聽
聽 聽
聽
聽 鍙傛暟绛変环浜�
聽 //pstmt.setString(1,"Rod Johnson");
聽 //pstmt.setInt(2,100);
杞嚜锛歨ttp://www.cnblogs.com/cyjch/archive/2012/03/28/2420798.html