javascript
大数据WEB阶段(十三)JSP(二)JSP标签、EL表达式、JSTL
JSP標簽、EL表達式、JSTL
(一)JSP標簽技術
一、JSP標簽技術概述
(二)JSP標簽
一、jsp標簽
我們只需了解幾個即可
<jsp:inclue> 用來替代request.getRequestDispatcher().include()實現(xiàn)頁面包含 <jsp:forward>用來替代request.getRequestDispatcher().forward() <jsp:param>配合前兩個標簽使用,可以在包含或轉(zhuǎn)發(fā)時,帶一些參數(shù)過去(三)EL表達式
一、概述及注意
二、獲取數(shù)據(jù)
獲取常量數(shù)據(jù)
支持包括數(shù)值類型 、 在字符串類型 、 布爾類型
<%--獲取常量數(shù)據(jù) --%>${123.342 }${"abc" }${true }${false }獲取變量中的數(shù)據(jù)
el中直接寫變量的名稱, el會按照由小到大的順序自動搜尋四大作用域找該名稱對應的值 , 如果找到則返回 ,找不到則返回空字符串 。
<%--獲取變量 --%><%//pageContext.setAttribute("country", "CN");//request.setAttribute("country", "US");//session.setAttribute("country", "UK");//application.setAttribute("country", "JP");%><%= pageContext.findAttribute("country") %>${country }獲取數(shù)組中的數(shù)據(jù)
可以通過中括號來訪問數(shù)組中的數(shù)據(jù)
<%--獲取數(shù)組中的數(shù)據(jù) --%> <%String [] provs = {"京","粵","滬","魯"};pageContext.setAttribute("provs", provs);%> ${provs[2]}獲取集合中的數(shù)據(jù)
可以通過中括號來訪問數(shù)組中的數(shù)據(jù)
<%--獲集合中的數(shù)據(jù) --%> <%List list = new ArrayList();list.add("孫悟空");list.add("哈利波特");list.add("薩達姆");list.add("樸乾");pageContext.setAttribute("list", list);%>${list[3] }獲取Map中的數(shù)據(jù)
中括號中鍵的名稱加引號就是常量, 直接使用來獲取map中的值 , 如果不加引號 , 則是一個變量 , el會先去獲取對應的值 , 在根據(jù)其中的值獲取map中對應變量的值
<%--獲取map中的數(shù)據(jù) --%><%Map<String,String> map = new HashMap<String,String>();map.put("name", "韋小寶"); map.put("addr", "揚州"); map.put("wife", "雙兒"); map.put("shifu", "陳近南");map.put("wife.xiao","阿珂");pageContext.setAttribute("map", map);pageContext.setAttribute("shifu", "addr"); %>${map }${map["name"] }${map.wife }${map["wife.xiao"] }${map[shifu] }獲取JavaBean的屬性
要注意 ,前提是這個bean中必須要有對應的getxxx()方法
<%--獲取javabean的屬性 --%><%Person p = new Person();p.setName("張三豐");p.setAge(120);p.setAddr("武當山");pageContext.setAttribute("p", p);%>${p.name }${p.addr }延伸~~
pageContext來獲取當前應用的名稱
<%= request.getContextPath()%> ${pageContext.request.contextPath}二、執(zhí)行簡單的運算
算術運算
%
<%--算數(shù)運算 --%>${ 2 + 3 }${ 2*3 }${ 10/3 }${ 2+"3" }<%-- ${ 2 + "a" } ${"a" + "b" }--%>關系運算
= ge
<!--關系運算 -->${3 == 4 } ${5>=3 }邏輯運算
! not
<!--邏輯運算符 --> ${3>5 or 3<=4 } ${3>5 and 3<=4 } ${!(3>5 and 3<=4)}三元運算
${3>2 ? "yes" : "no" }empty運算
判斷域中是否沒有任何屬性
<%String str = null;str = "";str = "abc";pageContext.setAttribute("str", str);List list = null;list = new ArrayList();list.add("abc");pageContext.setAttribute("list", list);request.setAttribute("like", "football");%>${empty str}${empty list }${empty requestScope}${empty sessionScope}${empty pageScope}${empty applicationScope}三、獲取常用開發(fā)對象
11個內(nèi)置對象
pageContext :代表當前頁面 , 有了它就意味著有了 九大隱式對象
<!-- pageContext 代表當前頁面的對象 有了它就相當于有了九大隱式對象 --> ${pageContext.request } ${pageContext.session }pageScope :pageContext域
applicationScope : application域
<!-- 代表四大作用域的對象,注意!是作用域 不是對象本身!pageScope -- pageContext域requestScope -- request域 sessionScpoe -- sessiono域applicationScope -- ServletContext域 --> <% request.setAttribute("name", "特朗普");session.setAttribute("name", "普京");application.setAttribute("name", "樸乾");%>${name }${sessionScope.name }${applicationScope.name }四、調(diào)用函數(shù)
(四)JSTL標簽
一、JSTL標簽概述
在使用時需要在jsp頁面通過用<%@ taglib %> 標簽來引入相應的標簽庫
<%@ taglib uri="xxxx" prefix=""%> uri用來指定引入的包 prefix用于指定標簽的前綴 ,可以是任意字符串, 在開發(fā)中一般使用默認的c 。二、JSTL的子庫
三、core子庫
輸出默認值
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> <!DOCTYPE HTML> <html><head></head><body><h1>輸出固定值</h1><c:out value="987"></c:out><c:out value="abc"></c:out>${987 }${"abc" }<hr> <h1>輸出變量</h1><%pageContext.setAttribute("name", "馬里奧");pageContext.setAttribute("name", "路易吉");%><c:out value="${name}"></c:out>${name }<hr> <h1>轉(zhuǎn)義輸出</h1><c:out value="<a href='#'>xxx</a>"></c:out><c:out value="<a href='#'>xxx</a>" escapeXml="false"></c:out>${fn:escapeXml("<a href='#'>xxx</a>") }<hr> <h1>輸出默認值</h1><%pageContext.setAttribute("addr", "上海");%><c:out value="${addr}" default="北京"></c:out>${addr == null ? "北京" : addr }<hr> </body> </html>修改javaBean中的屬性
<%@page import="cn.tedu.Person"%> <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE HTML><html><head></head><body><h1>向四大作用域增加域?qū)傩?lt;/h1><c:set scope="request" var="name" value="張飛"></c:set><c:set scope="page" var="name" value="關羽"></c:set>${requestScope.name }${pageScope.name }<hr> <h1>操作Map 增加或修改Map中的屬性</h1><%Map map = new HashMap();map.put("name", "劉備");map.put("wife", "糜夫人");pageContext.setAttribute("map", map);%><c:set target="${map }" property="wife" value="孫尚香"></c:set>${map }<c:set target="${map }" property="son" value="劉禪"></c:set>${map }<hr> <h1>操作JavaBean的屬性</h1><%Person p = new Person();p.setName("諸葛亮");p.setAge(20);p.setAddr("南陽");pageContext.setAttribute("p", p);%><c:set target="${p }" property="name" value="孔明"></c:set>${p.name }<hr> </body> </html>如果不指定哪個域 , 則默認刪除所有域中的該屬性
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE HTML> <html> <head> </head> <body><h1>刪除指定域中的屬性</h1><%pageContext.setAttribute("name", "喬峰");request.setAttribute("name", "段譽");session.setAttribute("name", "虛竹");application.setAttribute("name", "玄慈");%>${name }<c:remove var="name" scope="page"/>${name }<c:remove var="name" scope="request"/>${name } <c:remove var="name" scope="session"/>${name } <c:remove var="name" scope="application"/>${name } <hr><h1>刪除所有域中指定名稱的屬性</h1><%pageContext.setAttribute("name", "喬峰");request.setAttribute("name", "段譽");session.setAttribute("name", "虛竹");application.setAttribute("name", "玄慈");%><c:remove var="name"/>${name } <hr> </body> </html>捕獲到的異常可以通過聲明var屬性來指定一個名字 , 并自動寫入pageContext域中 , 以便后續(xù)處理
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE HTML> <html> <head> </head> <body><%try{String str = null;str.toUpperCase();}catch(Exception e){out.write("哈哈哈 捕獲了異常~");} %><c:catch var="e"><%String str = null;str.toUpperCase();%></c:catch>${e } </body> </html>var聲明存入域中時的變量名
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE HTML> <html><head></head><body><h1>實現(xiàn)判斷</h1><%int num = 1000;pageContext.setAttribute("num", num);%><c:if test="${num<100}" scope="page" var="result">yes~</c:if><c:if test="${num >= 100}">no~</c:if>${result }<hr> </body> </html>-
實現(xiàn)多重判斷
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE HTML> <html><head></head><body><%request.setAttribute("day", 2);%><c:choose><c:when test="${day == 1 }">星期一</c:when><c:when test="${day == 2 }">星期二</c:when><c:when test="${day == 3 }">星期三</c:when><c:when test="${day == 4 }">星期四</c:when><c:when test="${day == 5 }">星期五</c:when><c:otherwise>休息日</c:otherwise></c:choose></body> </html>實現(xiàn)循環(huán)遍歷 , 類似于java中的foe循環(huán)
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE HTML> <html><head></head><body><h1>實現(xiàn)普通for循環(huán)</h1><c:forEach begin="0" end="10" step="2" var="i">${i } </c:forEach><hr><h1>實現(xiàn)增強for循環(huán)</h1><%List list = new ArrayList();list.add("北京");list.add("上海");list.add("廣州");list.add("深圳");list.add("鐵嶺");pageContext.setAttribute("list", list);%><c:forEach items="${list }" var="addr">${addr } </c:forEach><hr><h1>實驗:遍歷10到100的偶數(shù),如果數(shù)字所在的位置是3的倍數(shù),顯示成紅色</h1><c:forEach begin="10" end="100" step="2" var="i" varStatus="stat"><c:if test="${stat.count % 3 == 0 }"><font color="red">${i }</font> </c:if><c:if test="${stat.count % 3 != 0 }"><font color="blue">${i }</font> </c:if></c:forEach><hr></body> </html>將一串字符按照指定的字符切割
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE HTML> <html><head></head><body><c:set scope="page" var="addr" value="www.tedu.cn"></c:set>${addr }<br><c:forTokens items="${addr }" delims="." var="x">${x } <br></c:forTokens></body> </html>實現(xiàn)url重寫 - 可以實現(xiàn)url重寫 , 在瀏覽器禁用cookie時 , 在請求地址后加上jsessionid從而使用session
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE HTML> <html><head></head><body><c:url var="addr" scope="page" value="/index.jsp" context="/Day14"></c:url><a href="${addr }">xx</a></body> </html>四、fn函數(shù)庫
其中提供了大量的操作字符串的函數(shù)
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %><!DOCTYPE HTML><html><head></head><body><c:set var="infos" value="${fn:split('www.tarena.com.cn','.') }" scope="page"></c:set><c:forEach var="info" items="${infos }">${info }<br></c:forEach>${fn:toUpperCase("asdfasLKJasdfgLKjasdfgjk,lHJKqwertbnmassdfKL:HJ") }</body></html>總結
以上是生活随笔為你收集整理的大数据WEB阶段(十三)JSP(二)JSP标签、EL表达式、JSTL的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大数据WEB阶段(十三)JSP(一)JS
- 下一篇: 大数据WEB阶段(十四)JavaEE开发