java_web:EL表示式的使用
EL(Expression Language)表示式:
1.EL表示式可以代替jsp頁面中的java程式碼
傳統的jsp中用java程式碼顯示資料的弊端:型別轉換,需要處理null,程式碼參雜
jsp示例:
<%
Student student=(Student)request.getAttribute("student");
out.print(student.getSid());
%>
使用EL表示式顯示資料的好處:直接獲取資料,未賦值的資料直接不顯示而非顯示null,提高jsp程式碼的可讀性
EL示例:
${requestScope.student.sid }
${域物件.域物件中的屬性.屬性}
2.EL操作符
a.點操作符. 使用方便
b.中括號操作符[] 功能強大:可以包含特殊字元(. - ~)
c.運算,邏輯,關係操作符 +,-,||,&&,>,<等
d.empty運算子 判斷一個值是否為null,為空則返回true
3.El表示式的隱式物件
a.作用域訪問物件:
pageScope < requestScope < sessionScope < applicationScope
若不指定域物件,則會根據從小到大的順序依次取值
b.引數訪問物件:
jsp頁面獲取其他jsp頁面傳來的資料,通過表單,超連結,位址列傳輸資料
${parm}:獲取單個欄位的值,作用等同於servlet中request.getParameter()方法
${parmValues}:獲取陣列的值,作用等同於servlet中request.getParameterValues()方法
c.jsp隱式物件:
pageContext
在jsp中可以通過pageContent獲取其他jsp隱式物件,使用pageContent來級聯獲取方法
例:
獲取session物件:${pageContext.session},作用等同於servlet中pageContext.getSession()方法
應用例項:使用EL表示式實現在servlet(增加資料)傳輸其資料到jsp(顯示資料)
el01.jsp
<%@page import="com.xiaochen.entity.Student"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
out.print("傳統的jsp中使用java程式碼來取servlet中傳來的資料<br>");
//從request域中取servlet中的資料
Student student=(Student)request.getAttribute("student");
out.print("姓名:"+student.getSid()+"<br>");
out.print("學號:"+student.getSname()+"<br>");
out.print("地址:"+student.getAddress()+"<br>");
%>
<br><br><br>
使用EL表示式實現jsp頁面中獲取servlet中的資料<br>
姓名:${requestScope.student.sid }<br>
學號:${requestScope.student.sname }<br>
地址:${requestScope.student.address }<br>
<br><br><br>
EL操作符<br>
a.點操作符.<br>
性別:${requestScope.my-sex }<br>
b.中括號操作符[]<br>
性別:${requestScope['my-sex'] }<br>
<br><br><br>
用EL表示式獲取陣列的值<br>
愛好:${requestScope.hobbies[1] },${requestScope.hobbies[2] }<br>
用EL表示式獲取HashMap的值<br>
國籍:${requestScope.map.ch }
<br><br><br>
EL運算,關係,邏輯操作符<br>
12>29:${3>2 },${3 gt 2 }<br>
12+29=${12+29 }<br>
12>29||29>12:${12>29||29>12 },${12>29 or 29>12 }<br>
<br><br><br>
empty操作符<br>
<!-- request域中並不存在study該值 -->
性別為空?:${empty(requestScope['my-sex']) }<br>
學歷為空?:${empty(requestScope.study) }<br>
</body>
</html>
student.java
package com.xiaochen.entity;
public class Student {
private int sid;
private String sname;
private String address;
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
ElServlet.java
package com.xiaochen.servlet;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.tomcat.jni.Address;
import com.xiaochen.entity.Student;
/**
* Servlet implementation class ElServlet
*/
@WebServlet("/ElServlet")
public class ElServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public ElServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//建立好一個實體類並設定好值,用於servlet----->jsp的傳輸
Student student=new Student();
student.setSname("小塵");
student.setSid(15);
student.setAddress("江西省");
//將資料存到request域中
request.setAttribute("student",student);
//用於比較點操作符與中括號操作符
request.setAttribute("my-sex", "男");
//用EL表示式獲取陣列的值
String[] hobbies=new String[] {"足球","籃球","乒乓球","排球","羽毛球","網球"};
request.setAttribute("hobbies", hobbies);
//用EL表示式獲取HashMap的值
Map<String,Object> map=new HashMap<>();
map.put("ch", "中國");
map.put("us", "美國");
request.setAttribute("map", map);
//請求轉發到el.jsp頁面,實現request域中資料的傳輸
request.getRequestDispatcher("el01.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
執行結果圖
應用例項:使用EL表示式的引數訪問物件和jsp隱式訪問物件
el02.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
獲取由form.jsp頁面傳來的表單資料<br>
使用者名稱:${param.uname }<br>
愛好:${paramValues.hobbies[1] },${paramValues.hobbies[2] }<br>
<br><br><br>
通過jsp隱式物件來獲取埠<br>
請求的埠號為:${pageContext.request.serverPort }<br>
</body>
</html>
form.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 此form表單傳遞到el.jsp頁面-->
<form action="el02.jsp">
使用者名稱:<input name="uname" type="text"><br>
興趣:<br>
足球<input name="hobbies" value="足球" type="checkbox">
籃球<input name="hobbies" value="籃球" type="checkbox">
乒乓球<input name="hobbies" value="乒乓球" type="checkbox">
<br>
<input type="submit" value="註冊">
</form>
</body>
</html>
執行結果圖
相關文章
- el 表示式
- Spring EL表示式使用詳解Spring
- JSp頁面使用El表示式取不到值JS
- EL表示式 與JSTL標籤JS
- 使用el表示式時,不能正常獲取值,使用開發工具為ideaIdea
- IDEA解決JSP頁面無法使用EL表示式問題IdeaJS
- EL 表示式對照 JSP 內建物件表JS物件
- 【JavaWeb】EL表示式&過濾器&監聽器JavaWeb過濾器
- SpringMVC中JSP頁面不顯示EL表示式的原因SpringMVCJS
- Struts標籤、ognl表示式、el表示式、jstl標籤庫這四者之間JS
- lambda 表示式使用的方式
- Java中Lambda表示式的使用Java
- Spring框架標籤EL表示式執行漏洞分析(CVE-2011-2730)Spring框架
- Python中eval函式的表示式如何使用Python函式
- SQLite中的SELECT子句使用表示式SQLite
- 修改el-tabs的樣式
- Java lambda表示式基本使用Java
- JavaWeb基礎Day17 (JSP EL表示式 jstl標籤庫 beanutil工具類)JavaWebJSBean
- java專案中流式表示式的使用Java
- 正規表示式在Java中的使用Java
- python正規表示式問號的使用Python
- 何時使用函式表示式與函式宣告函式
- Qt訊號 lamda 表示式使用QT
- iOS-正規表示式使用iOS
- 在Android Studio中使用Lambda表示式Android
- python if三元表示式如何使用Python
- JDK1.8之Lambda解析與表示式的使用JDK
- 使用Lambda表示式處理簡單的業務
- python中re模組的使用(正規表示式)Python
- JSP(JSTL EL表示式 三個指令 六個動作標籤 九個JSP內建物件)JS物件
- 表示式
- el-table 的 el-table-column 的key使用Math.random() 篩選列random
- Java的Lambda表示式Java
- SQLite中的表示式SQLite
- cpp的lambda表示式
- 【正規表示式】常用的正規表示式(數字,漢字,字串,金額等的正規表示式)字串
- 中綴表示式轉字尾表示式
- Oracle 正規表示式函式-REGEXP_REPLACE 使用例子Oracle函式