javascript
JSP入门实战下
第一部分簡單講解:jsp語法的規范,以及三大編譯指令,七個動作指令和九大內置對象,生命周期講解等。這章主要講解el表達式,核心標簽庫。
全部代碼下載:鏈接
1.核心標簽庫(JSTL:c)講解:
1.1簡要介紹:
JSTL全名JspServer Pages Standdard Tag Library(Jsp標準標簽庫),它是sun公司發布的一個針對JSP開發的新組件,它允許使用標簽開發Jsp頁面.JSTL支持通用的、結構化的任務,比如迭代,條件判斷,XML文檔操作,國際化標簽,SQL標簽。 除了這些,它還提供了一個框架來使用集成JSTL的自定義標簽。
JSTL所提供的標簽庫主要分為五大類:
1.2JSTL庫安裝:
現在就可以通過在頭部包含標簽使用JSTL了
1.3核心標簽庫的使用:
核心標簽是最常用的JSTL標簽。現在基本上我們也之使用功能核心標簽庫,此去只介紹核心標簽,對于其他的標簽用法類似。2.EL表達式語言:
E L(Expression Language) 目的:為了使JSP寫起來更加簡單。 EL 提供了在 JSP 腳本編制元素范圍外使用運行時表達式的功能。
EL既可以用來創建算術表達式也可以用來創建邏輯表達式。在JSP EL表達式內可以使用整型數,浮點數,字符串,常量true、false,還有null。
EL使得訪問存儲在JavaBean中的數據變得非常簡單,EL可以訪問內置對象,以及放置在對象中的屬性;
EL表達式作用: 向瀏覽器輸出域對象中的變量值或表達式計算的結果!!!
2.1EL語法:${exper}
不注明域的范圍時,從四個域中獲取:順序為pageScoep / requestScope / sessionScope / applicationScope
${name}<%--從指定域中獲取name變量的值--%>
指定域獲取:
${pageScope.name} <%--等價于getAttribute()方法;--%>
${student.name} 等價于 (點相對于調用getXX()方法)
{list[0].age } <%-- list[0]等價于 (中括號相對于調用get(參數)方法) ((List)pageContext.findAttribute("list")).get(0)--%>
EL表達式支持大部分Java所提供的算術和邏輯操作符:
演示如下:
2.2EL高級用法自定義函數:
el表達語言的自定義函數 本質是為了調用提供一種方法允許el中調用某類的靜態方法:
${rlovep:reverse(student.name)}<%--調用reverse方法使傳入的student.name反轉--%>
1.在src建立開發處理類,這個類包含若干個靜態方法。當然這個步驟可以省掉使用jdk庫的類也是可以的
2.使用標簽庫定義函數:定義函數的方式與定義標簽的方式相似。增加function標簽就行;
3.使用:增加taglib指令
建立開發處理類: MyFuns.java
在webcontent目錄下建立:mytaglib.tld標簽庫文件,增加function標簽
<?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"version="2.1"><description>A tag library exercising SimpleTag handlers.</description><!-- 標簽庫的版本 --><tlib-version>1.0</tlib-version><!-- 標簽庫前綴 --><short-name>rlovep</short-name><!-- tld文件的唯一標記 --><uri>http://rlovep.com</uri><!-- 定義第一個方法 --><function><!-- 定義方法名 --><name>reverse</name><!-- 定義方法的處理類 --><function-class>com.rlovep.elmethod.MyFuns</function-class><!-- 定義函數的實現方法:包括返回值和函數名以及參數 --><function-signature>java.lang.String reverse(java.lang.String)</function-signature></function><!-- 定義第二個方法 --><function><!-- 定義方法名 --><name>count</name><!-- 定義方法的處理類 --><function-class>com.rlovep.elmethod.MyFuns</function-class><!-- 定義函數的實現方法:包括返回值和函數名以及參數 --><function-signature>int count(java.lang.String)</function-signature></function></taglib>增加taglib指令
<%@taglib prefix="rlovep" uri="http://rlovep.com" %>
2.3整體演示如下:
<%@page import="java.util.HashMap,java.util.Map"%> <%@page import="java.util.ArrayList"%> <%@page import="java.util.List"%> <%@page import="com.rlovep.entity.Student"%> <%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!-- 定義標簽 --> <%@taglib prefix="rlovep" uri="http://rlovep.com" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>el表達式學習:</title> </head> <body> <%--el的內置對象 --%><%pageContext.setAttribute("name", "peace");pageContext.setAttribute("age", "22", pageContext.APPLICATION_SCOPE);%><%--直接從域中搜索獲得屬性 --%>El表達式:${name }<hr/><%--等價于 --%>表達式:<%=pageContext.findAttribute("name") %><hr/><%--從指定域中獲取屬性 --%>EL表達式:${applicationScope.age}<hr/><%--等價于 --%><%=pageContext.getAttribute("age", pageContext.APPLICATION_SCOPE) %><hr/><%--獲取請求參數 --%>請求參數${param.pass}<hr/> <%--請求頭獲取 --%> 請求頭${header.Host} <%--還可以獲得初始參數:initparam 以及cookie --%> <hr/> <%--el輸出對象的屬性 ,必須將對象放入域中--%> <%Student student=new Student("peace",22);String a="123";//放入域中pageContext.setAttribute("student", student);//放入list中List<Student> list=new ArrayList<Student>();list.add(new Student("sisi",22));list.add(new Student("nick",20));list.add(new Student("lucy",38));pageContext.setAttribute("list", list);//放入map中Map<String,Student> map=new HashMap<String,Student>();map.put("100",new Student("mark",20));map.put("101",new Student("maxwell",30));map.put("102",new Student("narci",40));//放入域中pageContext.setAttribute("map",map); %> <%--使用el獲取對象值 --%> {student.age }<%--${student.name} 等價于 (點相對于調用getXX()方法)<%=((Student)pageContext.findAttribute("student")).getName()%>--%><hr/><%--使用EL獲取List對象 --%> {list[0].age }<br/>{list[1].age }<br/> {list[2].age }<%--list[0]等價于 (中括號相對于調用get(參數)方法)((List)pageContext.findAttribute("list")).get(0)--%><hr/><%--使用EL獲取Map對象 --%> {map['100'].age }<br/> {map['101'].age }<br/> {map['102'].age }<br/><%--el還可以執行算法表達式 --%> <%--el表達語言的自定義函數 本質是為了調用提供一種方法允許el中調用某類的靜態方法: 1.在src建立開發處理類,這個類包含若干個靜態方法。當然這個步驟可以省掉使用jdk庫的類也是可以的 2.使用標簽庫定義函數:定義函數的方式與定義標簽的方式相似。增加function標簽就行; 3.增加taglib指令 --%> 此去表達式調用函數:<br/> peace倒轉:${rlovep:reverse(student.name)}<%--調用reverse方法使傳入的student.name反轉--%> <br/> peace字符個數:${rlovep:count(student.name)} </body> </html>來自一條小鯊魚wpeace(rlovep.com)
轉載于:https://www.cnblogs.com/onepeace/p/5043477.html
總結
- 上一篇: 当你刷新当前Table时,刷新后如何回到
- 下一篇: Sprint 冲刺第三阶段第6-10天