jsp鎬荤粨(缁忓吀)

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瀵硅薄锛岃繖涓�鏍囧噯鍔ㄤ綔涓殑id鍊肩浉鍖归厤

聽 聽 聽 聽 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杩涜閰嶇疆寮傚父澶勭悊

聽 聽 聽 鈥︹��

聽 聽 聽 聽 聽 java.lang.ArithmeticException

聽 聽 聽 聽 聽 /MathError.jsp

聽 聽 聽 聽

聽 聽 聽 聽

聽 聽 聽 聽 聽 404

聽 聽 聽 聽 聽 /404.jsp

聽 聽 聽 聽 聽 鈥︹��

聽 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 涓厤缃細

聽 聽

聽 聽 聽 聽

聽 聽 聽 聽 admin

聽 聽

聽 2.澹版槑瀹夊叏鎬х害鏉�(鎸囨槑鍙楅檺璧勬簮)

聽 聽 鍦―D涓姞鍏�鍏冪礌锛屽叾涓寘鍚簡锛�

聽 聽 聽 Web璧勬簮闆嗗悎锛�

聽 聽 聽 鍏朵腑鍖呭惈浜唘rl璧勬簮浠ュ強http鏂规硶銆�

聽 聽 鎺堟潈绾︽潫锛�

聽 聽 聽

聽 聽 聽 聽 Constraint-all

聽 聽 聽 聽

聽 聽 聽 聽 聽 all-resources

聽 聽 聽 聽 聽

聽 聽 聽 聽 聽 /admin/锛�聽 聽 //琚巿鏉冭闂殑鐩綍鍜屾枃浠�

聽 聽 聽 聽 聽 /security/锛�

聽 聽 聽 聽 聽 GET

聽 聽 聽 聽 聽 POST

聽 聽 聽 聽

聽 聽 聽 聽

聽 聽 聽 聽 聽

聽 聽 聽 聽 聽 admin

聽 聽 聽 聽

聽 聽 聽

聽 聽 瑕佹敞鎰忕殑瑙勫垯锛�

聽 聽 聽 涓嶈璁や负锛氳祫婧愭湰韬彈鍒扮害鏉燂紱鍏跺疄锛屾槸璧勬簮 + Http鏂规硶缁勫悎鍙楀埌绾︽潫

聽 聽 聽 濡傛灉閰嶇疆涓笉鎸囧畾锛岃鏄庢墍鏈夌殑鏂规硶(Get,Post,Trace,Head,Delete,Put,Options绛�)閮藉彈绾︽潫锛�

聽 聽 聽 褰撴寚瀹氫簡鍏蜂綋鐨�锛岄偅涔堢害鏉熷彧閽堝璇ユ柟娉曪紝鍏朵粬鐨刪ttp鏂规硶閮戒笉鍦ㄧ害鏉熶箣鍐咃紱

聽 聽 聽 瀹氫箟鐨勬槸鍝簺瑙掕壊鍙互鍋氬嚭鍙楃害鏉熺殑璇锋眰锛涜�屼笉鏄畾涔夎闂�

聽 聽 聽 娌℃湁锛氫换浣曡鑹查兘鑳借闂紱聽 绌虹殑浠讳綍瑙掕壊閮戒笉鑳借闂紱

聽 聽 聽 瀵逛簬涓嶅悓鐨�锛屾寚瀹氱殑url璧勬簮鍦ㄧ浉鍚屾柟娉曚笂瀹氫箟浜嗕笉鍚岀殑锛屽垯瀛樺湪鍚堝苟瑙勫垯銆�

聽 聽 闂锛氫负浠�涔堣璁剧疆鍏冪礌锛屼娇寰椾换浣曡鑹茬殑浠讳綍浜洪兘涓嶈兘璁块棶鍙楅檺璧勬簮鍛紵鍏舵剰涔変綍鍦紵

聽 聽 聽 聽 涓轰簡淇濇姢璧勬簮锛屽彧鍏佽鍐呴儴璺宠浆鍘昏闂�

聽 3.閫夋嫨璁よ瘉鏂瑰紡

聽 聽 濡傛灉鏄疊ASIC璁よ瘉锛氬垯鏃犻渶鎸囧畾Form琛ㄥ崟鐨刟ction銆�

聽 聽

聽 聽 聽 聽 BASIC

聽 聽 聽 聽 UserDatabaseRealm

聽 聽

聽 聽 濡傛灉鏄疐ORM璁よ瘉锛�

聽 聽

聽 聽 聽 FORM

聽 聽 聽

聽 聽 聽 聽 聽 /logon/loginForm.jsp

聽 聽 聽 聽 聽 /logon/loginErrorForm.jsp

聽 聽 聽

聽 聽

聽 聽 瀵逛簬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鍒嗗埆鏄細page,reqeust,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锛屾病鎵惧埌锛岀户缁線涓嬫壘

聽 聽 /welcome.jsp

聽 聽 /welcome1.jsp

聽 聽 /welcome2.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

聽 聽 聽 ...

聽 聽 聽

聽 聽 聽 聽 server

聽 聽 聽 聽 Tomcat5.5

聽 聽 聽

聽 聽 聽 ...

聽 聽 聽 ${initParam.server}

聽 聽 5)header

聽 聽 聽 ${header["host"]}

聽 聽 聽 ${header["accept"]}

聽 聽 聽 ${header["user-agent"]}

7.鍙互鑷敱璁剧疆鏄惁鏀寔琛ㄨ揪寮忚瑷�

聽 <%@page isELIgnored="false"%> : default:false聽 鍙互浣跨敤EL锛屾敼鎴� true 涔嬪悗锛屽啓EL灏变細鎶ラ敊

聽 閰嶇疆web.xml涔熷彲杈惧埌鍚屾牱鐨勬晥鏋�(鍚屾椂瀛樺湪锛岄偅绉嶈捣浣滅敤锛�)

聽 (绂佺敤鑴氭湰鍜孍L)聽 榛樿閮芥槸false

聽 ...

聽 聽

聽 聽 聽 *.jsp

聽 聽 聽 true聽 聽 聽 聽 聽 聽 聽 //璁剧疆鎴愭墍鏈塲sp鏂囦欢閮界鐢‥L

聽 聽 聽 true //璁剧疆鎴愮鐢ㄨ剼鏈�

聽 聽

聽 ....

聽 椤甸潰鐨刾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 It Traning Ltd.

聽 聽 ${tarena}

聽 鍙互鎸囧畾鑼冨洿锛岄粯璁ゆ槸page

聽 聽

聽 聽 ${maxIdelTime}

聽 璁剧疆JavaBean鐨勫��

聽 聽

聽 聽

聽 聽 girl.name

聽 聽 ${girl.name}

聽 --------------

聽 |b銆�|

聽 --------------

聽 璇硶锛�

聽 聽

聽 聽 瀹冪殑浣滅敤鏄垹闄ゆ煇涓彉閲忔垨鑰呭睘鎬с��

聽 渚嬪瓙锛�

聽 聽

聽 聽

聽 聽

聽 聽 ${maxUser}

聽 聽 ${count}

聽 聽

聽 聽

聽 聽 ${maxUser}

聽 聽 ${count}

聽 -----------

聽 |c銆�|

聽 -----------

聽 璇硶锛�

聽 娉ㄦ剰:escapeXml鐨勪綔鐢ㄦ槸鏄惁灏嗕唬鐮佷氦缁檟ml瑙f瀽鍣ㄨВ閲婏紝true涓轰氦缁檟ml瑙f瀽鍣ㄨВ閲�(榛樿)锛宖alse涓轰氦缁欐祻瑙堝櫒瑙i噴銆�

聽 聽 聽 default 瀹氫箟缂虹渷鍊笺��

聽 渚嬪瓙锛�

聽 聽

聽 聽

聽 聽

聽 聽

聽 聽

聽 聽 聽 聽

聽 聽 聽 聽
//杈撳嚭琛ㄦ牸锛沞scapeXml="true"鏃跺彧鏄剧ず瀛楃涓�

聽 聽 聽 聽

聽 聽 聽 聽

聽 聽

聽 -------------

聽 |d銆�|

聽 -------------

聽 瀹冪殑浣滅敤鏄崟鎹夌敱宓屽鍦ㄥ畠閲岄潰鐨勬爣绛炬墍鎶涘嚭鏉ョ殑寮傚父銆傜被浼间簬<%try{}catch{}%>

聽 璇硶锛�nested actions

聽 渚嬪瓙锛�

聽 聽 <% Integer.parseInt("abc"); %>

聽 聽 <% try{ Integer.parseInt("abc"); }catch(Exception error) {聽 } %> //绛変环

聽 聽

聽 聽

聽 聽

聽 鎺у埗璇彞锛�

聽 -----------

聽 |a銆� |聽

聽 -----------

聽 璇硶锛�

聽 聽

聽 聽 [scope="{page|request|session|application}"]>

聽 聽 聽 Body鍐呭

聽 聽 聽 // 娉細娌℃湁 else

聽 渚嬪瓙锛�

聽 聽

聽 聽

聽 聽 聽 聽

鎮ㄥ皻鏈垚骞达紝涓嶈兘杩涘叆娓告垙涓績锛�

聽 聽

聽 --------------

聽 |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 }

聽 聽

聽 聽 聽

聽 聽 聽 聽

  • Header name:
  • 聽 聽 聽 聽

  • Header value:
  • 聽 聽 聽

    聽 聽

    聽 鍙﹀涓�绉嶇敤娉曪細 (绫讳技 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

    你可能感兴趣的:(jsp鎬荤粨(缁忓吀))