EL技術

1.EL 表達式概述

EL(Express Lanuage)表達式可以嵌入在jsp頁面內部,減少jsp腳本的編寫,EL 出現的目的是要替代jsp頁面中腳本的編寫。

2.EL從域中取出數據(EL最重要的作用)

jsp腳本:<%=request.getAttribute(name)%>
EL表達式替代上面的腳本:${requestScope.name}

EL最主要的作用是獲得四大域中的數據,格式EL表達式EL獲得pageContext域中的值:{EL表達式} EL獲得pageContext域中的值:ELELpageContext{pageScope.key};
EL獲得request域中的值:requestScope.key;EL獲得session域中的值:{requestScope.key}; EL獲得session域中的值:requestScope.key;ELsession{sessionScope.key};
EL獲得application域中的值:applicationScope.key;EL從四個域中獲得某個值{applicationScope.key}; EL從四個域中獲得某個值applicationScope.key;EL{key};
—同樣是依次從pageContext域,request域,session域,application域中 獲取屬性,在某個域中獲取后將不在向后尋找
1)獲得普通字符串
2)獲得User對象的值
3)獲得List的值
代碼如下:

<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ page import="beyond.domain.*" %>
<%@ page import="java.util.*" %>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body><!-- 模擬域中的數據 --><%//存儲一個字符串request.setAttribute("company","beyond諺語" );//存儲一個對象User user = new User();user.setId(1);user.setName("siqi");user.setPassword("wsq");session.setAttribute("user", user);//存儲一個集合List<User> list = new ArrayList<User>();User user1 = new User();//list集合中的第一個元素user1.setId(2);user1.setName("qibao");user1.setPassword("wsq");list.add(user1);//list集合中的第二個元素User user2 = new User();user2.setId(3);user2.setName("yanyu");user2.setPassword("wsq");list.add(user2);application.setAttribute("list", list);%><!-- 腳本(jsp)的方式取出request域中的值(beyond諺語)  --><%=request.getAttribute("company") %><!-- 腳本(jsp)的方式取出User對象中的Name(siqi)中的值  --><%User sessionUser = (User) session.getAttribute("user");out.write(sessionUser.getName());%><hr/><!-- 使用EL表達式獲得request域中的值(beyond諺語)  -->${requestScope.company}<!-- 使用EL表達式獲得User對象中的Name中的值(siqi) -->${sessionScope.user.name}<!-- 使用EL表達式獲得 application域中的第二個元素的name(yanyu) -->${applicationScope.list[1].name}<hr> <!-- 使用el表達式 全域查找  也就是把域給去掉即可-->${company}${user.name}${list[1].name}</body>
</html>
package beyond.domain;public class User {private int id;private String name;private String password;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}

執行結果:
在這里插入圖片描述

3.EL的內置對象11個

${pageContext.request.contextPath}:動態獲取web應用

pageScope,requestScope,sessionScope,applicationScope
---- 獲取JSP中域中的數據

param,paramValues - 接收參數.
相當于request.getParameter() request.getParameterValues()

header,headerValues - 獲取請求頭信息
相當于request.getHeader(name)

initParam - 獲取全局初始化參數
相當于this.getServletContext().getInitParameter(name)

cookie - WEB開發中cookie
相當于request.getCookies()—cookie.getName()—cookie.getValue()

pageContext - WEB開發中的pageContext.
pageContext獲得其他八大對象

${pageContext.request.contextPath}
相當于
<%=pageContext.getRequest().getContextPath%> 這句代碼不能實現
獲得WEB應用的名稱

//form.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!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">
<link href="${pageContext.request.contextPath}/yy.css"><!-- 這樣的地址叫做  客戶端地址 -->
<script type="text/javascript" src="${pageContext.request.contextPath}/yyy.js" ></script><!-- 這樣的地址叫做  客戶端地址 -->
<title>Insert title here</title>
</head>
<body><form action="${pageContext.request.contextPath}/el/form2.jsp" method="post"><%-- 只要是客戶端地址 建議都要把web應用名稱給寫上:${pageContext.request.contextPath} --%><input type="text" name="username"><br><input type="password" name="password"><br><input type="checkbox" name="hobby" value="zq">足球<input type="checkbox" name="hobby" value="pq">排球<input type="checkbox" name="hobby" value="ppq">乒乓球<br><input type="submit" value="提交"><br></form><img alt="" src="${pageContext.request.contextPath}/1.jpg"><!-- 這樣的地址叫做  客戶端地址 --><img alt="" src="${pageContext.request.contextPath}/2.jpg"><!-- 這樣的地址叫做  客戶端地址 --><img alt="" src="${pageContext.request.contextPath}/1.jpg"><!-- 這樣的地址叫做  客戶端地址 --><!-- <img alt="" src="1.jpg">這樣的地址叫 相對地址,跳轉的時候偶爾會出現問題 -->
</body>
</html><%-- 一個發出5次請求:
第一次:訪問該資源,服務器返回該資源全部代碼,客戶端開始接受并解析
第二次:當客戶端解析到<link href="${pageContext.request.contextPath}/yy.css"><!-- 這樣的地址叫做  客戶端地址 -->的時候,開始向服務器請求數據
第三次:<script type="text/javascript" src="${pageContext.request.contextPath}/yyy.js" ></script><!-- 這樣的地址叫做  客戶端地址 -->,向服務器請求數據
第四次:<img alt="" src="${pageContext.request.contextPath}/1.jpg"><!-- 這樣的地址叫做  客戶端地址 -->向服務器請求數據,并且緩存該圖片
第五次:<img alt="" src="${pageContext.request.contextPath}/2.jpg"><!-- 這樣的地址叫做  客戶端地址 -->向服務器請求數據,并且緩存該圖片
當訪問<img alt="" src="${pageContext.request.contextPath}/1.jpg"><!-- 這樣的地址叫做  客戶端地址 -->的的時候,發現本客戶端有該圖片緩存不用向服務器請求了 --%>
//cookie.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!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>Insert title here</title>
</head>
<body><%Cookie cookie = new Cookie("name","beyond");response.addCookie(cookie);//將cookie寫到客戶端%>
</body>
</html>
//form2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!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>Insert title here</title>
</head>
<body><!-- 獲得表單的參數 --><%request.getParameter("username");request.getParameter("password");request.getParameter("hobby");%><!-- 使用el獲得參數  內置對象.需要獲取的數據 -->${param.username}<!-- 獲取到username(beyond)并輸出到頁面上 -->${header.Host}${header["User-Agent"]}<!-- 因為這里的User-Agent有-特殊符號,所以得使用[] -->${header["Host"]}<!-- 能用.操作的都可以用[""]操作 -->${initParam.beyond.value}${cookie.name.value}<!-- 訪問cookie的值(beyond) ,在頁面中獲得value的值--><!-- 通過el表達式獲得request對象    其中requestScope代表域-->${pageContext.request}<!-- pageContext可以獲得其中八大對象 --></body>
</html>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"><display-name>WEB18</display-name><!-- 定義全局初始化參數 --><context-param><param-name>beyond</param-name><param-value>wsq</param-value></context-param><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list>
</web-app>

4.EL執行表達式

例如:
${1+1}
${empty user}
${user==null?true:false}

<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ page import="beyond.domain.*" %>
<%@ page import="java.util.*" %>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body><!-- 模擬域中的數據 --><%pageContext.setAttribute("company","ScriptKiddie" );//存儲一個字符串request.setAttribute("company","beyond諺語" );//存儲一個對象User user = new User();user.setId(1);user.setName("siqi");user.setPassword("wsq");session.setAttribute("user", user);//存儲一個集合List<User> list = new ArrayList<User>();User user1 = new User();//list集合中的第一個元素user1.setId(2);user1.setName("qibao");user1.setPassword("wsq");list.add(user1);//list集合中的第二個元素User user2 = new User();user2.setId(3);user2.setName("yanyu");user2.setPassword("wsq");list.add(user2);application.setAttribute("list", list);%><!-- 腳本(jsp)的方式取出request域中的值(beyond諺語)  --><%=request.getAttribute("company") %><!-- 腳本(jsp)的方式取出User對象中的Name(siqi)中的值  --><%User sessionUser = (User) session.getAttribute("user");out.write(sessionUser.getName());%><hr/><!-- 使用EL表達式獲得request域中的值(beyond諺語)  -->${requestScope.company}<!-- 使用EL表達式獲得User對象中的Name中的值(siqi) -->${sessionScope.user.name}<!-- 使用EL表達式獲得 application域中的第二個元素的name(yanyu) -->${applicationScope.list[1].name}<hr> <!-- 使用el表達式 全域查找  也就是把域給去掉即可-->${company}${user.name}${list[1].name}<!-- el可執行表達式的運算 -->${1+1}<!-- 2 -->${1==1?false:true}<!-- false --><!-- empty 判定某個對象是否是null  如果是null返回true;不是返回false -->${empty list}<!-- 不為null,返回false -->${empty user}<!-- 不為null,返回false --></body>
</html>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/379611.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/379611.shtml
英文地址,請注明出處:http://en.pswp.cn/news/379611.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

math.trunc_JavaScript中帶有示例的Math.trunc()方法

math.truncJavaScript | Math.trunc()方法 (JavaScript | Math.trunc() Method) Math.trunc() is a function in math library of JavaScript that is used to extract the integer part of the given floating-point number. It removes the decimal and all the digits after…

.NET程序員的書單

zz from sjtu bbs: http://bbs.sjtu.edu.cn/bbscon?boardDotNET&fileM.1126188158.A 發信人: luckySeven(lucky為這位mm默哀), 信區: DotNET 標 題: .NET程序員的書單 發信站: 飲水思源 (2005年09月08日22:02:45 星期四), 轉信 發信人: AtomAndBit (原子與比特), 信區: D…

SVN+AnkhSVN端配置

對于ankhSVN我想很多人不陌生&#xff0c;因為經常使用&#xff0c;但是我還是發現很多人并不怎么會配置&#xff0c;或者完全不知道其需要配置&#xff0c;如果不配置的話&#xff0c;當兩個人同時需要修改某個文件的時候就容易中彈了。SVN默認是不支持“鎖定-編輯-解鎖”的&a…

Linux內核設計與實現---模塊

模塊1 構建模塊放在內核源代碼樹中放在內核代碼外2 安裝模塊3 產生模塊依賴性4 載入模塊5 管理配置選項6 模塊參數7 導出符號表Linux內核是模塊化組成的&#xff0c;它允許內核在運行時動態地向其中插入或從中刪除代碼。 與開發的內核核心子系統不同&#xff0c;模塊開發更接近…

JSTL技術

1&#xff0e;JSTL概述 JSTL&#xff08;JSP Standard Tag Library)&#xff0c;JSP標準標簽庫&#xff0c;可以嵌入在jsp頁面中使用標簽的形式完成業務邏輯等功能。jstl出現的目的同el一樣也是要代替jsp頁面中的腳本代碼。JSTL標準標準標簽庫有5個子庫&#xff0c;但隨著發展…

asinh函數_JavaScript中帶有示例的Math.asinh()方法

asinh函數JavaScript | Math.asinh()方法 (JavaScript | Math.asinh() Method) Math.asinh() is a function in math library of JavaScript that is used to find the value of hyperbolic arc-sine of a number. Math.asinh()是JavaScript數學庫中的函數&#xff0c;用于查找…

使用PHP創建一個REST API(Create a REST API with PHP)

譯者前言&#xff1a; 首先這是一篇國外的英文文章&#xff0c;非常系統、詳盡的介紹了如何使用PHP創建REST API&#xff0c;國內這方面的資料非常非常的有限&#xff0c;而且基本沒有可操作性。這篇文章寫的非常好&#xff0c;只要對PHP稍有了解的程序員&#xff0c;看完本文基…

old-

大數問題:求用一段C或C程序寫求 f(x)100! 的完整程序大數問題&#xff0c; 我用數組作的&#xff0c;輸出格式應該是是222,222,222 #include "stdafx.h" #include<stdio.h> #include<stdlib.h> int a[1000]{0}; in…

javaEE的開發模式

1&#xff0e;什么是模式 模式在開發過程中總結出的“套路”&#xff0c;總結出的一套約定俗成的設計模式 2&#xff0e;javaEE經歷的模式 model1模式&#xff1a; 技術組成&#xff1a;jspjavaBean model1的弊端&#xff1a;隨著業務復雜性 導致jsp頁面比較混亂 model2模式…

Linux內核設計與實現---kobject sysfs

kobject sysfs1 kobject2 ktype3 kset4 subsystem5 別混淆了這些結構體6 管理和操作kobject7 引用計數kref8 sysfssysfs中添加和刪除kobject向sysfs添加文件9 內核事件層2.6內核增加了一個引人注目的新特性—同一設備模型。設備模型提供了獨立的機制專門表示設備&#xff0c;并…

開發Windows Mobile今日插件 -- 內存電量,桌面便箋,桌面記單詞

本篇文章講解的是開發 Windows Mobile 上的今日插件。關于是今日插件&#xff0c;在 PPC 或者 SP SDK 的幫助文檔中有相關的章節介紹&#xff0c;在網絡上也有一些帖子和資源講解。在這里簡要回顧一下。今日插件就是在windows mobile的桌面上顯示的條目&#xff0c;例如系統提供…

c語言中將函數指針作為形參_在C中將有效指針作為NULL指針

c語言中將函數指針作為形參Prerequisite: An Example of Null pointer in C 先決條件&#xff1a; C中的空指針示例 Any pointer that contains a valid memory address can be made as a NULL pointer by assigning 0. 通過分配0&#xff0c;可以將包含有效內存地址的任何指…

[轉]一個清華計算機博士生的退學申請

偶然間在網上看到這篇帖子&#xff0c;回想起自己的求學經歷&#xff0c;思索良久。。。 本想找到原帖及作者&#xff0c;但是幾經搜索&#xff0c;發現原帖出自科學網&#xff0c;已被刪除。對此&#xff0c;我還能說啥&#xff1f;&#xff01; http://www.sciencenet.cn/m/u…

算法---遞歸

遞歸結題三部曲 何為遞歸&#xff1f;程序反復調用自身即是遞歸。 我自己在剛開始解決遞歸問題的時候&#xff0c;總是會去糾結這一層函數做了什么&#xff0c;它調用自身后的下一層函數又做了什么…然后就會覺得實現一個遞歸解法十分復雜&#xff0c;根本就無從下手。 相信…

給定條件找最小值c語言程序_根據給定條件最小化n的最小步驟

給定條件找最小值c語言程序Problem statement: 問題陳述&#xff1a; Given a number n, count minimum steps to minimize it to 1 performing the following operations: 給定數字n &#xff0c;執行以下操作&#xff0c;計算最少的步驟以將其最小化為1&#xff1a; Operat…

提高C#編程水平不可不讀的50個要訣

提高C#編程水平的50個要點 1.總是用屬性 (Property) 來代替可訪問的數據成員 2.在 readonly 和 const 之間&#xff0c;優先使用 readonly 3.在 as 和 強制類型轉換之間&#xff0c;優先使用 as 操作符 4.使用條件屬性 (Conditional Attributes) 來代替條件編譯語句 #if 5.總是…

那個年代的蘇聯歌曲

小時候&#xff0c;不時聽父親提起電影《這里的黎明靜悄悄》&#xff0c;怎么也想不到如此美麗的名字為什么要和戰爭聯系起來。后來在大學看了這部電影之后&#xff0c;開始認為這名字是合適的&#xff0c;因為電影講的是女性——戰場中的女性&#xff0c;各自都懷揣著愛情去保…

linux系統編程---進程總結

進程控制總結1 進程創建的三種方式forkvfrokclone2 進程終止進程正常退出returnexit_exit進程異常退出進程收到某個信號&#xff0c;而該信號使進程終止abort3 進程等待進程等待的方法waitwaitpid4 進程替換替換原理替換函數制作一個簡單的shell1 進程創建的三種方式 參考文章…

銀行賬務轉賬系統(事務處理)

流程如下&#xff1a; 創建項目工程如下&#xff1a; transfer包下的代碼如下&#xff1a; package beyond.transfer.dao;import java.sql.Connection; import java.sql.SQLException;import org.apache.commons.dbutils.QueryRunner;import beyond.utils.DataSourceUtils;pu…

【msdn wpf forum翻譯】TextBox中文本 中對齊 的方法

原文鏈接&#xff1a;http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/49864e35-1dbf-4292-a361-93f1a8400558問題&#xff1a;TextBox中文本中對齊&#xff0c;使用 TextBox.HorizontalContentAlignment"Center"行不通&#xff08;TextBox.VerticalConte…