天天看點

【Java】EL和JSTL

浠婃棩鍐呭

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. 浣垮緱椤圭洰鏋舵瀯鍙樺緱澶嶆潅锛屽寮€鍙戜漢鍛樿姹傞珮      
【Java】EL和JSTL

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>