尚硅谷最新版JavaWeb全套教程,java web零基础入门完整版(三)
生活随笔
收集整理的這篇文章主要介紹了
尚硅谷最新版JavaWeb全套教程,java web零基础入门完整版(三)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
EL表達式
什么是EL表達式
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body><%request.setAttribute("key", "值");%>表達式腳本輸出key的值是:<%=request.getAttribute("key")%> <br>EL表達式輸出key的值是:${key} </body> </html>- 這樣輸出的結果相同
- EL表達式在輸出null值(比如key1)的時候,輸出的是空串;jsp表達式腳本輸出null值的時候,輸出的是null字符串
EL表達式搜索四個域的順序
EL表達式主要是在jsp頁面中輸出數據
主要是輸出域對象中的數據
- session中的數據瀏覽器關閉后才會消失,所以哪怕注釋session后然后刷新頁面,還是會輸出session
- 當四個域中都有相同的key的數據的時候,EL表達式會根據四個域的從小到大的順序去進行搜索,找到就輸出
EL表達式輸出復雜的Bean對象
package com.atguigu.pojo;import java.util.Arrays; import java.util.List; import java.util.Map;public class Person {private String name;private String[] phones;private List<String> cities;private Map<String, Object> map;@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", phones=" + Arrays.toString(phones) +", cities=" + cities +", map=" + map +'}';}public String getName() {return name;}public void setName(String name) {this.name = name;}public String[] getPhones() {return phones;}public void setPhones(String[] phones) {this.phones = phones;}public List<String> getCities() {return cities;}public void setCities(List<String> cities) {this.cities = cities;}public Map<String, Object> getMap() {return map;}public void setMap(Map<String, Object> map) {this.map = map;}public Person(String name, String[] phones, List<String> cities, Map<String, Object> map) {this.name = name;this.phones = phones;this.cities = cities;this.map = map;}public Person() {} } <%@ page import="com.atguigu.pojo.Person" %> <%@ page import="java.util.List" %> <%@ page import="java.util.ArrayList" %> <%@ page import="java.util.Map" %> <%@ page import="java.util.HashMap" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body><%Person person = new Person();person.setName("name111");person.setPhones(new String[]{"123", "456", "789"});List<String> cities = new ArrayList<String>();cities.add("beijin");cities.add("shanghai");cities.add("shenzheng");person.setCities(cities);Map<String, Object> map = new HashMap<>();map.put("key1", "value1");map.put("key2", "value2");map.put("key3", "value3");person.setMap(map);pageContext.setAttribute("key_person", person);%>${ key_person } </body> </html> <%@ page import="com.atguigu.pojo.Person" %> <%@ page import="java.util.List" %> <%@ page import="java.util.ArrayList" %> <%@ page import="java.util.Map" %> <%@ page import="java.util.HashMap" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body><%Person person = new Person();person.setName("name111");person.setPhones(new String[]{"123", "456", "789"});List<String> cities = new ArrayList<String>();cities.add("beijin");cities.add("shanghai");cities.add("shenzheng");person.setCities(cities);Map<String, Object> map = new HashMap<>();map.put("key1", "value1");map.put("key2", "value2");map.put("key3", "value3");person.setMap(map);pageContext.setAttribute("key_person", person);%>${ key_person } <br>${ key_person.name } <br>${ key_person.phones } <br>${ key_person.phones[1] } <br>${ key_person.cities } <br>${ key_person.cities[1] } <br>${ key_person.map } <br>${key_person.map[key2]} <br> </body> </html>- 注意EL表達式是不需要引入jstl.jar的
- 注意到輸出map是輸出花括號包裹的鍵值對;輸出List得到的是由[]包裹起來的;輸出數組得到的是首地址
- 通過實驗,我們注意到 :EL表達式中,找的不是這個屬性,而是找這個屬性所對應的get方法
關系運算
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body>${12 == 12} 或 ${12 eq 12} <br> </body> </html>邏輯運算
算術運算
empty運算
<%@ page import="java.util.List" %> <%@ page import="java.util.ArrayList" %> <%@ page import="java.util.Map" %> <%@ page import="java.util.HashMap" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body><% // 1、值為null值的時候,為空request.setAttribute("key1", null); // truerequest.setAttribute("key2", new Object()); // false ,非空!// 2、值為空串的時候,為空request.setAttribute("key3", ""); // truerequest.setAttribute("key4", " "); // false// 3、值是Object類型數組,長度為零時為空request.setAttribute("key5", new Object[]{}); // truerequest.setAttribute("key6", new Object[]{"12"}); // false// 4、list集合,元素個數為零List<String> list = new ArrayList<>();request.setAttribute("key7", list); // true// 5、map集合,元素個數為零Map<String, Object> map = new HashMap<String, Object>();request.setAttribute("key8", , map); // true%>${ empty key1 } </body> </html>三元運算
${ 12 == 12 ? "123" : "456" }
點運算和中括號運算
.點運算,可以輸出bean對象中某個屬性的值
[]中括號運算,可以輸出有序集合中某個元素的值
并且中括號運算還可以輸出map集合中 key 里含有特殊字符的key的值(比如. 和 邏輯運算符)
- 不要忘了引號,單引號或者雙引號都可以
11個EL隱含對象
pageScope、requestScope、sessionScope、applicationScope演示
- 要先在某個域中setAttribute
- 之前直接 ${ key1 } 是按四個域從小到大的順序去搜索的
- 如果使用比如 ${ applicationScope.key1 } 我們就可以選擇性地去搜索了
pageContext演示
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body>${ pageContext } <br>1、協議<%--request.getScheme() 可以獲取請求的協議--%><%=request.getScheme()%> <br> <%-- http --%>${ pageContext.request.scheme } <br> <%-- 因為在el表達式中默認會找點后面內容所對應的"get"方法 --%> <%-- http --%>2、請求的服務器ip或域名<%=request.getServerName()%> <br> <%-- localhost --%>${ pageContext.request.serverName } <br>3、服務器端口<%=request.getServerPort()%> <br>${ pageContext.request.serverPort } <br>4、獲取當前的工程路徑<%=request.getContextPath()%> <br>${ pageContext.request.contextPath } <br>5、獲取請求方法<%=request.getMethod()%> <br>${ pageContext.request.method } <br>6、獲取客戶端ip地址<%=request.getRemoteHost()%> <br>${ pageContext.request.remoteHost } <br>7、獲取會話的id編號<%=session.getId()%> <br>${ pageContext.session.id } <br> </body> </html>- 有同學就要問啦,不是說好的el表達式比表達式腳本簡介嘛?有一個小技巧 :
其他EL隱含對象的示例
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body>${ param } </body> </html>
- 當一個參數有多個值時,用param只能得到其中一個,要得到全部的,應該用paramValues
- 如果有多個值的時候用headerValues,但是直接得到的是數組,還要配合下標使用
- 要先在web.xml中配置參數,用initParam才有值
JSTL標簽庫
JSTL標簽庫的介紹
標簽庫的使用步驟
- 在web-inf目錄下創建一個lib目錄用來放jar包
- 還要 Add as Library,記得選 模塊庫,不是項目庫
set標簽
- 其中,page是默認值
if標簽
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body><c:if test="${ 12 == 12 }"><h1>12 == 12</h1></c:if> </body> </html>choose,when,otherwise標簽
使用foreach遍歷1-10輸出
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body><c:forEach begin="1" end="10" var="i"><h1> ${ i } </h1></c:forEach> </body> </html> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body><table><c:forEach begin="1" end="10" var="i"><tr><td>第${ i }</td></tr></c:forEach></table> </body> </html>使用foreach遍歷Object數組
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body><%request.setAttribute("arr", new String[]{"123", "456", "789"});%><c:forEach items="${ requestScope.arr }" var="item">${ item } <br></c:forEach> </body> </html>使用foreach遍歷map集合
<%@ page import="java.util.Map" %> <%@ page import="java.util.HashMap" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body><%Map<String, Object> map = new HashMap<String, Object>();map.put("key1", "value1");map.put("key2", "value2");map.put("key3", "value3");request.setAttribute("map", map);%><%-- for ( Map.Entry<String, Object> entry : map.entrySet()) --%><c:forEach items="${ requestScope.map }" var="entry"><h1>${ entry } : ${ entry.key } = ${ entry.value }</h1></c:forEach> </body> </html>使用foreach遍歷list集合
<%@ page import="java.util.Map" %> <%@ page import="java.util.HashMap" %> <%@ page import="java.util.List" %> <%@ page import="com.atguigu.pojo.Student" %> <%@ page import="java.util.ArrayList" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body><%List<Student> studentList = new ArrayList<Student>();for (int i = 1; i <= 10; i ++ )studentList.add(new Student(i, "username" + i, "pass" + i, 18 + i, "phone" + i));request.setAttribute("stus", studentList);%><table><tr><th>編號</th><th>用戶名</th><th>密碼</th><th>年齡</th><th>電話</th><th>操作</th></tr><c:forEach items="${ requestScope.stus }" var="stu"><tr><td>${ stu.id }</td><td>${ stu.username }</td><td>${ stu.password }</td><td>${ stu.age }</td><td>${ stu.phone }</td><td> 刪除、修改 </td></tr></c:forEach></table> </body> </html>foreach標簽所有屬性組合使用介紹
總結
以上是生活随笔為你收集整理的尚硅谷最新版JavaWeb全套教程,java web零基础入门完整版(三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浙江农林大学第二十一届程序设计竞赛校选拔
- 下一篇: SQL进阶教程 | 史上最易懂SQL教程