今天上午学习了EL表达式,接下来总结一下关于jsp中运用el表达式的例子,el表达式可以在jsp中取代一些java代码,但不能够取代一些for循环等。
EL表达式:表达式语言,主要是用来取域中的数据。
1. 出现的目的:(1)在jsp中不建议书写java代码(2)传统方式取数据,都需要强转
2.语法规则:${数据名称}
3.EL表达式取数据的顺序:pageContext–>request–>session–>application
4.开发步骤:i.第一步:开启el表达式
ii第二步:书写el代码
5.通过el表达式取简单数据类型
6.通过el表达式取对象中的数据
7.通过el表达式取Map集合
8.通过el表达式取List集合
1、User.java 运用javabean来写的
package cn.java.entity;
import java.util.Date;
/**
* Description: <br/>
* Date: 2017年7月24日 上午11:13:50 <br/>
*
* @author dingP
* @version
* @see
*/
public class User {
private String username;
private Integer age;// --->getAge() setAge()
private Date date;
public User() {
super();
// Auto-generated constructor stub
}
public User(String username, Integer age, Date date) {
super();
this.username = username;
this.age = age;
this.date = date;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
@Override
public String toString() {
return "User [username=" + username + ", age=" + age + ", date=" + date + "]";
}
}
2、ELServlet.java
(1)创建一个对象
(2) 将对象保存到request域中
(3)跳转到demo2.jsp request.getRequestDispatcher("/pages/test/demo2.jsp").forward(request, response);
package cn.java.servlet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
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 javax.servlet.http.HttpSession;
import cn.java.entity.User;
/**
* Servlet implementation class SessionServlet
*/
@WebServlet("/ELServlet")
public class ELServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1、创建一个对象
User user = new User("王二麻子", 20, new Date());
// 2、将对象保存到request域中
request.setAttribute("u", user);
HttpSession session = request.getSession();
session.setAttribute("u", "admin");
// 首先创建一个HashMap
Map<String, Object> hm = new HashMap<String, Object>();
hm.put("username", "lisi");
hm.put("gender", "男");
hm.put("age", 12);
hm.put("1234", "abcd");
Map<String, Object> hm2 = new HashMap<String, Object>();
hm2.put("username", "zhangsan");
hm2.put("gender", "男");
hm2.put("age", 12);
hm2.put("1234", "abcd");
// list集合
List<Map<String, Object>> lists = new ArrayList<Map<String, Object>>();
lists.add(hm);
lists.add(hm2);
request.setAttribute("list", lists);
// 3、跳转到demo2.jsp
request.getRequestDispatcher("/pages/test/demo2.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
doGet(request, response);
}
}
3、demo2.jsp(运用el表达式访问ELServlet中的数据)
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8" isELIgnored="false"%>
<%
String context = request.getContextPath();// /dt41_javaweb2
String path = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+context+"/";
%>
<!DOCTYPE html>
<html>
<head>
<base href="<%=path %>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>通过el表达式获取数据</title>
</head>
<body>
<!-- 通过el表达式获取对象数据类型 -->
<%-- ${u.username } --%><!-- ===>request.getAttribute("u") -->
<!-- 获取指定域中的数据 -->
<%-- ${sessionScope.u } --%>
<!-- 通过EL取HashMap集合中的数据 -->
<h1>${requestScope.hm.username }</h1>
<!-- 当key值的类型为数值类型的字符串时,不能够通过以下方式获取 -->
<%-- <h1>${requestScope.hm.1234 }</h1> --%>
<h1>${requestScope.hm['1234'] }</h1>
<!-- 获取list集合中的数据-->
<h1>${list[0].username }</h1>
<h1>${list[1].username }</h1>
<!-- 算术运算 -->
<h1>${2*3 }</h1>
<!-- 关系运算 -->
<h1>${2>3 }</h1>
<h1>${2==2 }</h1>
<!-- 逻辑运算 && || ! -->
<h1>${2<3 && 10>20 }</h1>
<h1>${2<3 || 10>20 }</h1>
</body>
</html>