菜鸟教程  传送门

  EL表达式【百度百科】:EL(Expression Language) 是为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化

  EL表达式获得当前项目路径可以通过Page作用域去获取

${pageContext.request.contextPath} 

操作简单数据

<%@ 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>
作用域:page request session application
<hr>
<%
request.setAttribute("number",2000);
session.setAttribute("use","Hello Gary!!!");
application.setAttribute("string","nihao"); //同名情况 直接使用${wa}只会从request->session->application
request.setAttribute("wa",1);
session.setAttribute("wa",2);
application.setAttribute("wa",3);
%> request :${requestScope.number}<br>
session :${sessionScope.use}<br>
application :${applicationScope.string}<br><br> ${wa}<br> <%
request.removeAttribute("wa"); //将request域中"wa"给删除
%> ${wa}<br>
</body>
</html>

el.jsp

输出:

作用域:page request session application
request :2000
session :Hello Gary!!!
application :nihao 1
2

el表达式从map集合和对象里面取得数据

package com.Gary.model;

public class User {
private String username;
private String password;
private int age;
private String sex;
private boolean isAdmin=false; //判断是否是管理员账号 public User(String username, String password, int age, String sex, boolean isAdmin) {
super();
this.username = username;
this.password = password;
this.age = age;
this.sex = sex;
this.isAdmin = isAdmin;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public boolean isAdmin() {
return isAdmin;
}
public void setAdmin(boolean isAdmin) {
this.isAdmin = isAdmin;
} }

User.java

<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="com.Gary.model.User"%>
<%@ 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>
作用域:page request session application
<hr> <%
User u = new User("Gary","123",20,"男",false);
request.setAttribute("user",u);
%> ${user.getUsername()} <br>
${user.username} <br> <hr>
<!-- 从Map中存储数据 -->
<%
Map<String,String>map = new HashMap<String,String>();
map.put("name","Gary2");
map.put("age","12");
request.setAttribute("user2",map);
%> ${user2.name}<br>
${user2.age}<br> </body>
</html>

el.jsp

输出:

作用域:page request session application
Gary
Gary Gary2
12

  如果要使用 ${user.username} 去替代 ${user.getUsername()} 那么User.java中必须要存在 getUsername() 方法

el表达式从list集合和对象里面取得数据

package com.Gary.model;

public class User {
private String username;
private String password;
private int age;
private String sex;
private boolean isAdmin=false; //判断是否是管理员账号 public User(String username, String password, int age, String sex, boolean isAdmin) {
super();
this.username = username;
this.password = password;
this.age = age;
this.sex = sex;
this.isAdmin = isAdmin;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public boolean isAdmin() {
return isAdmin;
}
public void setAdmin(boolean isAdmin) {
this.isAdmin = isAdmin;
} }

User.java

<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="com.Gary.model.User"%>
<%@ 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>
作用域:page request session application
<hr> <%
List<User> list = new ArrayList<User>();
list.add(new User("Gary0","0",10,"男",false));
list.add(new User("Gary1","1",20,"男",false));
list.add(new User("Gary2","2",30,"男",false));
list.add(new User("Gary3","3",40,"男",false));
list.add(new User("Gary4","4",50,"男",false));
request.setAttribute("list", list);
%> ${list[2].username} <br>
${list[4].username} <br> 加减运算 ${list[2].age+list[4].age} <br> 判空list ${empty list} <br>
判空list2 ${empty list2} <br> ${pageContext.request.contextPath} <br>
</body>
</html>

el.jsp

输出

作用域:page request session application
Gary2
Gary4
加减运算 80
判空list false
判空list true
/Gary04

  获得当前项目路径可以通过EL表达式Page作用域去获取

${pageContext.request.contextPath}

JavaWeb_EL表达式存储数据及获得项目路径的更多相关文章

  1. 存储数据键和项目对的类(Dictionary对象)

    存储数据键和项目对的类(Dictionary对象) <% Class Dictionary Public Copyright, Developer, Name, Version, Web Pri ...

  2. 一个Web项目中实现多个数据库存储数据并相互切换用过吗?

    最近公司一个项目需要连接多个数据库(A和B)操作,根据不同的业务模块查询不同的数据库,因此需要改造下之前的spring-mybatis.xml配置文件以及jdbc.properties配置文件,项目后 ...

  3. aJax提交——服务端不能用request存储数据,session存数据客户端可以接收到

    aJax提交与普通提交是两种迥异的提交方式,这两种提交方式决定了客户端与服务端交互时存储.传输数据的方式也不同. aJax提交,客户端的请求数据存储在data中,服务端用request.getPara ...

  4. android开发中的5种存储数据方式

    数据存储在开发中是使用最频繁的,根据不同的情况选择不同的存储数据方式对于提高开发效率很有帮助.下面笔者在主要介绍Android平台中实现数据存储的5种方式. 1.使用SharedPreferences ...

  5. [ Android 五种数据存储方式之三 ] —— SQLite存储数据

    SQLite是轻量级嵌入式数据库引擎,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PHP, Python)都使用了 ...

  6. SSH框架通过JFreeChart实现柱状图和获取项目路径

    获取项目路径:String url= ServletActionContext.getRequest().getRealPath("/upload"); 一.直接生成的图片输出到j ...

  7. springboot配置server相关配置&整合模板引擎Freemarker、thymeleaf&thymeleaf基本用法&thymeleaf 获取项目路径 contextPath 与取session中信息

    1.Springboot配置server相关配置(包括默认tomcat的相关配置) 下面的配置也都是模板,需要的时候在application.properties配置即可 ############## ...

  8. 使用嵌入式关系型SQLite数据库存储数据

    除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据. 在Android平台上,集成了一个嵌入式关系型数据库—SQLite, 1.SQLite3支持 ...

  9. 关于在JSP页面中为什么一定要用${pageContext.request.contextPath}来获取项目路径,而不能用${request.contextPath}?

    这里的疑问在于pageContext和request都是JSP中的内置对象之一,为什么不直接用${request.contextPath}来获取项目路径? 出现这种疑问,其实是将JSP的内置对象和EL ...

随机推荐

  1. USB fuzzing

    简介 最近看一些USB fuzzing方面的东西,总结一下.主要是软件方面的工作. vUSBf 文章在这里:https://www.blackhat.com/docs/eu-14/materials/ ...

  2. innodb中一颗B+树能存储多少条数据

    如图,为B+树组织数据的方式: 实际存储时当然不会每个节点只存3条数据. 以InnoDB引擎为例,简单计算一下一颗B+树可以存放多少行数据. B+树特点:只有叶子节点存储数据,而非叶子节点存放的是用来 ...

  3. php过滤微信昵称中的表情

    function filterNickname($nickname) { $nickname = preg_replace('/[\x{1F600}-\x{1F64F}]/u', '', $nickn ...

  4. Centos7:tomcat8.5安装,配置及使用

    1.解压缩 2.启动 ./startup.sh//启动 ./shutdown.sh//关闭 tail -f ../logs/catalina.out//查看日志

  5. Vue中如何插入m3u8格式视频,3分钟学会!

    ​        大家都知道video只支持ogg.webm.MP4格式,但是要是m3u8格式的视频怎么办?最近遇到这个问题在网上找了好多办法都不行,最后找到video.js后才完美解决,所以决定写一 ...

  6. VUE 从零开始 学习笔记 一

    最近刚跳到一个新公司 不是很忙 决定系统的学习一下VUE这个前端框架 参考官方API 好了 废话不多说 开始了 首先 说一下吧 现在很火的主流三大前端框架 Vue,Angular.React, 为什么 ...

  7. jquery重复绑定

    jquery可以重复绑定一个事件handler,如果一个button绑定了3次onclick,那么点一下按钮就触发三次事件处理程序的调用. 所以如果想动态地变更控件绑定的处理程序,只要unbind() ...

  8. vim 搜索 向前,向后

    vim 搜索可以是 / 或者 ?,前者是往下找,后者是往前找. 用 n 查找下一个的时候,就和这两个指令指定的方向相同.如果你想改变方向的话,比如想往下找,那么 / 完了直接回车就行了.表示再次使用上 ...

  9. RPM包搭建

    打包rpm软件包之spec文件解析 1. 概述 RPM的全称是(Red Hat Package Manager,Red Hat包管理器).RPM是一个开放的软件包管理器,工作在Red Hat.类Lin ...

  10. PHP5.3x被弃用的函数及代替方法

    今天阳光明媚,万里无云,小记一下php5.3x被弃用的部分函数及代替方法 下面列举了部分被弃用的函数:call_user_method():(使用 call_user_func() 替代)call_u ...