浠婃棩鍐呭
1. JSP:
1. 鎸囦護
2. 娉ㄩ噴
3. 鍐呯疆瀵矽薄
2. MVC寮€鍙戞ā寮?3. EL琛ㄨ揪寮?4. JSTL鏍囩
5. 涓夊眰鏋舵瀯
JSP
1. 鎸囦護
* 浣滅敤锛氱敤浜庨厤缃甁SP椤甸潰锛屽鍏ヨ祫婧愭枃浠? * 鏍煎紡锛? <%@ 鎸囦護鍚嶇О 灞炴€у悕1=灞炴€у€? 灞炴€у悕2=灞炴€у€? ... %>
* 鍒嗙被锛? 1. page 锛?閰嶇疆JSP椤甸潰鐨? * contentType锛氱瓑鍚屼簬response.setContentType()
1. 璁劇疆鍝嶅簲浣撶殑mime绫誨瀷浠ュ強瀛楃闆? 2. 璁劇疆褰撳墠jsp椤甸潰鐨勭紪鐮侊紙鍙兘鏄珮绾х殑IDE鎵嶈兘鐢熸晥锛屽鏋滀嬌鐢ㄤ綆绾у伐鍏鳳紝鍒欓渶瑕佽缃畃ageEncoding灞炴€ц缃綋鍓嶉〉闈㈢殑瀛楃闆嗭級
* import锛氬鍖? * errorPage锛氬綋鍓嶉〉闈㈠彂鐢熷紓甯稿悗锛屼細鑷姩璺寵漿鍒版寚瀹氱殑閿欒椤甸潰
* isErrorPage锛氭爣璇嗗綋鍓嶄篃鏄槸鍚︽槸閿欒椤甸潰銆? * true锛氭槸锛屽彲浠ヤ嬌鐢ㄥ唴缃璞xception
* false锛氬惁銆傞粯璁ゅ€箋€備笉鍙互浣跨敤鍐呯疆瀵矽薄exception
2. include 锛?椤甸潰鍖呭惈鐨勩€傚鍏ラ〉闈㈢殑璧勬簮鏂囦歡
* <%@include file="top.jsp"%>
3. taglib 锛?瀵煎叆璧勬簮
* <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
* prefix锛氬墠缂€锛岃嚜瀹氫箟鐨?/pre>
绀轟緥浠g爜
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=gbk" errorPage="500.jsp" pageEncoding="GBK" language="java" buffer="16kb" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" isErrorPage="true" language="java" %>
<%@include file="top.jsp"%>
浠ヤ笅鏄痶op.jsp鐨勬簮鐮?
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<h1>椤甸潰logo椤甸潰鏍囬</h1>
2. JSP娉ㄩ噴:
1. html娉ㄩ噴锛? <!-- -->:鍙兘娉ㄩ噴html浠g爜鐗囨
2. jsp娉ㄩ噴锛氭帹鑽愪嬌鐢? <%-- --%>锛氬彲浠ユ敞閲婃墍鏈?/pre>
3. 鍐呯疆瀵矽薄
* 鍦╦sp椤甸潰涓笉闇€瑕佸垱寤猴紝鐩存帴浣跨敤鐨勫璞? * 涓€鍏辨湁9涓細
鍙橀噺鍚? 鐪熷疄绫誨瀷 浣滅敤
* pageContext PageContext 褰撳墠椤甸潰鍏變韓鏁版嵁锛岃繕鍙互鑾峰彇鍏朵粬鍏釜鍐呯疆瀵矽薄
* request HttpServletRequest 涓€娆¤姹傝闂殑澶氫釜璧勬簮(杞彂)
* session HttpSession 涓€娆′細璇濈殑澶氫釜璇鋒眰闂? * application ServletContext 鎵€鏈夌敤鎴烽棿鍏變韓鏁版嵁
* response HttpServletResponse 鍝嶅簲瀵矽薄
* page Object 褰撳墠椤甸潰(Servlet)鐨勫璞? this
* out JspWriter 杈撳嚭瀵矽薄锛屾暟鎹緭鍑哄埌椤甸潰涓? * config ServletConfig Servlet鐨勯厤缃璞? * exception Throwable 寮傚父瀵矽薄
鍦ㄥ墠绔〉闈慨鏀規湇鍔″櫒寮傚父鐨勬樉绀? 500.jsp
<%@ page contentType="text/html;charset=UTF-8" isErrorPage="true" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>鏈嶅姟鍣ㄦ蹇?..</h1>
<%
String message = exception.getMessage();
out.print(message);
%>
</body>
</html>
MVC寮€鍙戞ā寮?/h2> 1. jsp婕斿彉鍘嗗彶
1. 鏃╂湡鍙湁servlet锛屽彧鑳戒嬌鐢╮esponse杈撳嚭鏍囩鏁版嵁锛岄潪甯擱夯鐑? 2. 鍚庢潵鍙坖sp锛岀畝鍖栦簡Servlet鐨勫紑鍙戯紝濡傛灉杩囧害浣跨敤jsp锛屽湪jsp涓嵆鍐欏ぇ閲忕殑java浠g爜锛屾湁鍐檋tml琛紝閫犳垚闅句簬缁存姢锛岄毦浜庡垎宸ュ崗浣? 3. 鍐嶅悗鏉ワ紝java鐨剋eb寮€鍙戯紝鍊熼壌mvc寮€鍙戞ā寮忥紝浣垮緱绋嬪簭鐨勮璁℃洿鍔犲悎鐞嗘€?
2. MVC锛? 1. M锛歁odel锛屾ā鍨嬨€侸avaBean
* 瀹屾垚鍏蜂綋鐨勪笟鍔℃搷浣滐紝濡傦細鏌ヨ鏁版嵁搴擄紝灏佽瀵矽薄
2. V锛歏iew锛岃鍥俱€侸SP
* 灞曠ず鏁版嵁
3. C锛欳ontroller锛屾帶鍒跺櫒銆係ervlet
* 鑾峰彇鐢ㄦ埛鐨勮緭鍏? * 璋冪敤妯″瀷
* 灏嗘暟鎹氦缁欒鍥捐繘琛屽睍绀? * 浼樼己鐐癸細
1. 浼樼偣锛? 1. 鑰﹀悎鎬т綆锛屾柟渚跨淮鎶わ紝鍙互鍒╀簬鍒嗗伐鍗忎綔
2. 閲嶇敤鎬ч珮
2. 缂虹偣锛? 1. 浣垮緱椤圭洰鏋舵瀯鍙樺緱澶嶆潅锛屽寮€鍙戜漢鍛樿姹傞珮
EL琛ㄨ揪寮?/h2> 1. 姒傚康锛欵xpression Language 琛ㄨ揪寮忚瑷€
2. 浣滅敤锛氭浛鎹㈠拰绠€鍖杍sp椤甸潰涓璲ava浠g爜鐨勭紪鍐?3. 璇硶锛?{琛ㄨ揪寮弣
4. 娉ㄦ剰锛? * jsp榛樿鏀寔el琛ㄨ揪寮忕殑銆傚鏋滆蹇界暐el琛ㄨ揪寮? 1. 璁劇疆jsp涓璸age鎸囦護涓細isELIgnored="true" 蹇界暐褰撳墠jsp椤甸潰涓墍鏈夌殑el琛ㄨ揪寮? 2. \${琛ㄨ揪寮弣 锛氬拷鐣ュ綋鍓嶈繖涓猠l琛ㄨ揪寮?/pre>
5. 浣跨敤锛? 浣跨敤鏂規硶1. 杩愮畻锛? * 杩愮畻绗︼細
1. 绠楁暟杩愮畻绗︼細 + - * /(div) %(mod)
2. 姣旇緝杩愮畻绗︼細 > < >= <= == !=
3. 閫昏緫杩愮畻绗︼細 &&(and) ||(or) !(not)
4. 绌鴻繍绠楃锛?empty
* 鍔熻兘锛氱敤浜庡垽鏂瓧绗︿覆銆侀泦鍚堛€佹暟缁勫璞℃槸鍚︿負null鎴栬€呴暱搴︽槸鍚︿負0
* ${empty list}:鍒ゆ柇瀛楃涓層€侀泦鍚堛€佹暟缁勫璞℃槸鍚︿負null鎴栬€呴暱搴︿負0
* ${not empty str}:琛ㄧず鍒ゆ柇瀛楃涓層€侀泦鍚堛€佹暟缁勫璞℃槸鍚︿笉涓簄ull 骞朵笖 闀垮害>0
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
${3 > 4}
\${3 > 4}
<hr>
<h3>绠楁暟杩愮畻绗?lt;/h3>
${3 + 4}<br>
${3 / 4}<br>
${3 div 4}<br>
${3 % 4}<br>
${3 mod 4}<br>
<h3>姣旇緝杩愮畻绗?lt;/h3>
${3 == 4}<br>
<h3>閫昏緫杩愮畻绗?lt;/h3>
${3 > 4 && 3 < 4}<br>
${3 > 4 and 3 < 4}<br>
<h4>empty杩愮畻绗?lt;/h4>
<%
String str = "";
request.setAttribute("str",str);
List list = new ArrayList();
request.setAttribute("list",list);
%>
${not empty str}
${not empty list}
</body>
</html>
浣跨敤鏂規硶2. 鑾峰彇鍊? 1. el琛ㄨ揪寮忓彧鑳戒粠鍩熷璞′腑鑾峰彇鍊? 2. 璇硶锛? 1. ${鍩熷悕绉?閿悕}锛氫粠鎸囧畾鍩熶腑鑾峰彇鎸囧畾閿殑鍊? * 鍩熷悕绉幫細
1. pageScope --> pageContext
2. requestScope --> request
3. sessionScope --> session
4. applicationScope --> application锛圫ervletContext锛? * 涓句緥锛氬湪request鍩熶腑瀛樺偍浜唍ame=寮犱笁
* 鑾峰彇锛?{requestScope.name}
2. ${閿悕}锛氳〃绀轟緷娆′粠鏈€灏忕殑鍩熶腑鏌ユ壘鏄惁鏈夎閿搴旂殑鍊鹼紝鐩村埌鎵懼埌涓烘銆? 3. 鑾峰彇瀵矽薄銆丩ist闆嗗悎銆丮ap闆嗗悎鐨勫€? 1. 瀵矽薄锛?{鍩熷悕绉?閿悕.灞炴€у悕}
* 鏈川涓婁細鍘昏皟鐢ㄥ璞$殑getter鏂規硶
2. List闆嗗悎锛?{鍩熷悕绉?閿悕[绱㈠紩]}
3. Map闆嗗悎锛? * ${鍩熷悕绉?閿悕.key鍚嶇О}
* ${鍩熷悕绉?閿悕["key鍚嶇О"]}
鑾峰緱鍩熶腑鐨勬暟鎹?
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>el鑾峰彇鍩熶腑鐨勬暟鎹?lt;/title>
</head>
<body>
<%
//鍦ㄥ煙涓瓨鍌ㄦ暟鎹? session.setAttribute("name","鏉庡洓");
request.setAttribute("name","寮犱笁");
session.setAttribute("age","23");
request.setAttribute("str","");
%>
<h3>el鑾峰彇鍊?lt;/h3>
${requestScope.name}
${sessionScope.age}
${sessionScope.haha}
${name}
${sessionScope.name}
</body>
</html>
鑾峰緱瀵矽薄锛宭ist锛宮ap鐨勫€?
<%@ page import="cn.itcast.domain.User" %>
<%@ page import="java.util.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>el鑾峰彇鏁版嵁</title>
</head>
<body>
<%
User user = new User();
user.setName("寮犱笁");
user.setAge(23);
user.setBirthday(new Date());
request.setAttribute("u",user);
List list = new ArrayList();
list.add("aaa");
list.add("bbb");
list.add(user);
request.setAttribute("list",list);
Map map = new HashMap();
map.put("sname","鏉庡洓");
map.put("gender","鐢?);
map.put("user",user);
request.setAttribute("map",map);
%>
<h3>el鑾峰彇瀵矽薄涓殑鍊?lt;/h3>
${requestScope.u}<br>
<%--
* 閫氳繃鐨勬槸瀵矽薄鐨勫睘鎬ф潵鑾峰彇
* setter鎴杇etter鏂規硶锛屽幓鎺塻et鎴杇et锛屽湪灏嗗墿浣欓儴鍒嗭紝棣栧瓧姣嶅彉涓哄皬鍐欍€? * setName --> Name --> name
--%>
${requestScope.u.name}<br>
${u.age}<br>
${u.birthday}<br>
${u.birthday.month}<br>
${u.birStr}<br>
<h3>el鑾峰彇List鍊?lt;/h3>
${list}<br>
${list[0]}<br>
${list[1]}<br>
${list[10]}<br>
${list[2].name}
<h3>el鑾峰彇Map鍊?lt;/h3>
${map.gender}<br>
${map["gender"]}<br>
${map.user.name}
</body>
</html>
浣跨敤鏂規硶3. 闅愬紡瀵矽薄锛? * el琛ㄨ揪寮忎腑鏈?1涓殣寮忓璞? * pageContext锛? * 鑾峰彇jsp鍏朵粬鍏釜鍐呯疆瀵矽薄
* ${pageContext.request.contextPath}锛氬姩鎬佽幏鍙栬櫄鎷熺洰褰?/pre>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>el闅愬紡瀵矽薄</title>
</head>
<body>
${pageContext.request}<br>
<h4>鍦╦sp椤甸潰鍔ㄦ€佽幏鍙栬櫄鎷熺洰褰?lt;/h4>
${pageContext.request.contextPath}
<%
%>
</body>
</html>
JSTL
1. 姒傚康锛欽avaServer Pages Tag Library JSP鏍囧噯鏍囩搴? * 鏄敱Apache缁勭粐鎻愪緵鐨勫紑婧愮殑鍏嶈垂鐨刯sp鏍囩 <鏍囩>
2. 浣滅敤锛氱敤浜庣畝鍖栧拰鏇挎崲jsp椤甸潰涓婄殑java浠g爜
3. 浣跨敤姝ラ锛? 1. 瀵煎叆jstl鐩稿叧jar鍖? 2. 寮曞叆鏍囩搴擄細taglib鎸囦護锛? <%@ taglib %>
3. 浣跨敤鏍囩
甯哥敤JSTL鏍囩
1. if:鐩稿綋浜巎ava浠g爜鐨刬f璇彞
1. 灞炴€э細
* test 蹇呴』灞炴€э紝鎺ュ彈boolean琛ㄨ揪寮? * 濡傛灉琛ㄨ揪寮忎負true锛屽垯鏄劇ずif鏍囩浣撳唴瀹癸紝濡傛灉涓篺alse锛屽垯涓嶆樉绀烘爣绛句綋鍐呭
* 涓€鑸儏鍐典笅锛宼est灞炴€у€間細缁撳悎el琛ㄨ揪寮忎竴璧蜂嬌鐢? 2. 娉ㄦ剰锛? * c:if鏍囩娌℃湁else鎯呭喌锛屾兂瑕乪lse鎯呭喌锛屽垯鍙互鍦ㄥ畾涔変竴涓猚:if鏍囩
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>if鏍囩</title>
</head>
<body>
<%--
c:if鏍囩
1. 灞炴€э細
* test 蹇呴』灞炴€э紝鎺ュ彈boolean琛ㄨ揪寮? * 濡傛灉琛ㄨ揪寮忎負true锛屽垯鏄劇ずif鏍囩浣撳唴瀹癸紝濡傛灉涓篺alse锛屽垯涓嶆樉绀烘爣绛句綋鍐呭
* 涓€鑸儏鍐典笅锛宼est灞炴€у€間細缁撳悎el琛ㄨ揪寮忎竴璧蜂嬌鐢?
2. 娉ㄦ剰锛歝:if鏍囩娌℃湁else鎯呭喌锛屾兂瑕乪lse鎯呭喌锛屽垯鍙互鍦ㄥ畾涔変竴涓猚:if鏍囩
--%>
<c:if test="true">
<h1>鎴戞槸鐪?..</h1>
</c:if>
<br>
<%
//鍒ゆ柇request鍩熶腑鐨勪竴涓猯ist闆嗗悎鏄惁涓虹┖锛屽鏋滀笉涓簄ull鍒欐樉绀洪亶鍘嗛泦鍚?
List list = new ArrayList();
list.add("aaaa");
request.setAttribute("list",list);
request.setAttribute("number",4);
%>
<c:if test="${not empty list}">
閬嶅巻闆嗗悎...
</c:if>
<br>
<c:if test="${number % 2 != 0}">
${number}涓哄鏁?
</c:if>
<c:if test="${number % 2 == 0}">
${number}涓哄伓鏁?
</c:if>
</body>
</html>
2. choose:鐩稿綋浜巎ava浠g爜鐨剆witch璇彞
1. 浣跨敤choose鏍囩澹版槑 鐩稿綋浜巗witch澹版槑
2. 浣跨敤when鏍囩鍋氬垽鏂? 鐩稿綋浜巆ase
3. 浣跨敤otherwise鏍囩鍋氬叾浠栨儏鍐電殑澹版槑 鐩稿綋浜巇efault
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>choose鏍囩</title>
</head>
<body>
<%--
瀹屾垚鏁闆瓧缂栧彿瀵瑰簲鏄熸湡鍑犳渚? 1.鍩熶腑瀛樺偍涓€鏁闆瓧
2.浣跨敤choose鏍囩鍙栧嚭鏁闆瓧 鐩稿綋浜巗witch澹版槑
3.浣跨敤when鏍囩鍋氭暟瀛楀垽鏂? 鐩稿綋浜巆ase
4.otherwise鏍囩鍋氬叾浠栨儏鍐電殑澹版槑 鐩稿綋浜巇efault
--%>
<%
request.setAttribute("number",51);
%>
<c:choose>
<c:when test="${number == 1}">鏄熸湡涓€</c:when>
<c:when test="${number == 2}">鏄熸湡浜?lt;/c:when>
<c:when test="${number == 3}">鏄熸湡涓?lt;/c:when>
<c:when test="${number == 4}">鏄熸湡鍥?lt;/c:when>
<c:when test="${number == 5}">鏄熸湡浜?lt;/c:when>
<c:when test="${number == 6}">鏄熸湡鍏?lt;/c:when>
<c:when test="${number == 7}">鏄熸湡澶?lt;/c:when>
<c:otherwise>鏁闆瓧杈撳叆鏈夎</c:otherwise>
</c:choose>
</body>
</html>
3. foreach:鐩稿綋浜巎ava浠g爜鐨刦or璇彞
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>foreach鏍囩</title>
</head>
<body>
<%--
foreach:鐩稿綋浜巎ava浠g爜鐨刦or璇彞
1. 瀹屾垚閲嶅鐨勬搷浣? for(int i = 0; i < 10; i ++){
}
* 灞炴€э細
begin锛氬紑濮嬪€? end锛氱粨鏉熷€? var锛氫複鏃跺彉閲? step锛氭闀? varStatus:寰幆鐘舵€佸璞? index:瀹瑰櫒涓厓绱犵殑绱㈠紩锛屼粠0寮€濮? count:寰幆娆℃暟锛屼粠1寮€濮? 2. 閬嶅巻瀹瑰櫒
List<User> list;
for(User user : list){
}
* 灞炴€э細
items:瀹瑰櫒瀵矽薄
var:瀹瑰櫒涓厓绱犵殑涓存椂鍙橀噺
varStatus:寰幆鐘舵€佸璞? index:瀹瑰櫒涓厓绱犵殑绱㈠紩锛屼粠0寮€濮? count:寰幆娆℃暟锛屼粠1寮€濮?
--%>
<c:forEach begin="1" end="10" var="i" step="2" varStatus="s">
${i} <h3>${s.index}<h3> <h4> ${s.count} </h4><br>
</c:forEach>
<hr>
<%
List list = new ArrayList();
list.add("aaa");
list.add("bbb");
list.add("ccc");
request.setAttribute("list",list);
%>
<c:forEach items="${list}" var="str" varStatus="s">
${s.index} ${s.count} ${str}<br>
</c:forEach>
</body>
</html>
Jstl+el缁冧範
<%@ page import="cn.itcast.domain.User" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>test</title>
</head>
<body>
<%
List list = new ArrayList();
list.add(new User("寮犱笁",23,new Date()));
list.add(new User("鏉庡洓",24,new Date()));
list.add(new User("鐜嬩簲",25,new Date()));
request.setAttribute("list",list);
%>
<table border="1" width="500" align="center">
<tr>
<th>缂栧彿</th>
<th>濮撳悕</th>
<th>骞撮緞</th>
<th>鐢熸棩</th>
</tr>
<%--鏁版嵁琛?-%>
<c:forEach items="${list}" var="user" varStatus="s">
<c:if test="${s.count % 2 != 0}">
<tr bgcolor="red">
<td>${s.count}</td>
<td>${user.name}</td>
<td>${user.age}</td>
<td>${user.birStr}</td>
</tr>
</c:if>
<c:if test="${s.count % 2 == 0}">
<tr bgcolor="green">
<td>${s.count}</td>
<td>${user.name}</td>
<td>${user.age}</td>
<td>${user.birStr}</td>
</tr>
</c:if>
</c:forEach>
</table>
</body>
</html>