JavaWeb学习笔记--4.EL表达式
转自ZHSJUN的博客 http://blog.csdn.net/zhsjun/article/details/2254546
表达式语言(EL) 是JSP的一种计算和输出Java对象的简单语言,它简化了对JSP中对象的输出。
4.1 EL语法
${expression}
这被称作EL元素,一个EL元素必须以${开始,以}结束,EL可以出现在HTML标记中,也可以出现在JSP的标记中
4.2 变量范围
EL对变量操作,必须保证操作的变量在一定范围内,其对范围的搜索顺序:页内-request-session-application,分别对应了EL的内置对象pageScope,requestScope,sessionScope,applicationScope,如下语句:
${userName},该语句在输出时首先去pageContext范围中找,没找到再去request,还没找到就去session,最后去application,只要有任何一个范围找到,即停止查找,并输出变量值
${sessionScope.UserName},在session中查找变量UserName
4.3 访问运算.和[ ]
这两个符号可以通用,唯一的区别是当变量名中含有-这样的特殊字符时,即采用[ ]访问符号,如下:
${student.name}和${student["name"]}等效
这两个运算符号可以混合使用,比如:
${requestScope.cart[0].pname}
4. EL中的内置对象:
|
pageContext param paramValues用 header headerValues cookie initParam pageScope requestScope sessionScope applicationScope |
jsp页面上下文对象 页面所有参数的名字和值对,比如表单form,查询串QueryString等,是一个Map 单个名字对应多个值时使用,是一个Map 单个头header的值对,是一个Map 单个键多个值时使用,是一个Map 代表了Cookie对象,是一个Map 系统Servlet初始化参数,是一个Map 页面范围,是一个Map 请求范围,是一个Map 会话范围,是一个Map 应用范围,是一个Map |
例:
获取QueryString中的参数并输出: ${param.id}
获取表单数据并输出: ${param.username}
获取header: ${header["user-agent"]}
获取cookie: ${cookie["UserInfo"].name}=${cookie["UserInfo"].value}
示例代码:使用内置对象:
与输入有关的内置对象:param paramValues
UserForm.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<html>
<head>
<title>接收用户参数</title>
</head>
<body>
<%request.setCharacterEncoding("gb2312"); %>
用户名:${param.username}</br>
密码:${param.password}</br>
爱好:${paramValues.interest[0]}
${paramValues.interest[1]}
${paramValues.interest[2]}
</br>
</body>
</html>
注意:上面body中的代码和这个的功能是一样的:
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
String[] interests = request.getParameterValues("interest");
out.println("姓名:"+username+"</br>");
out.println("密码:"+password+"</br>");
out.println("爱好:");
for(int i = 0 ; i < interests.length ; i++)
out.println(interests[i]);
%>
ParamDemo.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> <html>
<head>
<title>用户表单</title>
</head> <body>
<form action="UserForm.jsp" method="post">
用户名:<input type="text" name="username"/></br>
密码:<input type="password" name="password"/></br>
爱好:<input type="checkbox" name="interest" value="篮球"/>篮球
<input type="checkbox" name="interest" value="看书"/>看书
<input type="checkbox" name="interest" value="编程"/>编程</br>
<input type="submit" value="提交">
</form>
</body>
</html>
页面效果:
|
![]() |
------------------------------------------------------------------------------------------------------------------
示例代码:cookie内置对象
<%
Cookie c = new Cookie("username","root");
response.addCookie(c);
%>
cookie中username的值为:${cookie.username.value}
示例代码:header内置对象
存数用户浏览器和服务器用来沟通的数据,通过header headerValues来取得这些值
${header["host"]}</br>
${header["user-agent"] }</br>
示例代码:initParam内置对象
可以取得在web站点中设置的环境参数context值。
username参数值:${initParam.username}
同时在web.xml中添加
<context-param>
<param-name>username</param-name>
<param-value>James</param-value>
</context-param>
------------------------------------------------------------------------------------------------------------------
示例代码:pageContext内置对象
<body>
<table border="1">
<tr>
<td>取得请求的参数字符串</td>
<td>${pageContext.request.queryString}</td>
</tr>
<tr>
<td>取得请求URL</td>
<td>${pageContext.request.requestURL}</td>
</tr>
<tr>
<td>取得web应用名称</td>
<td>${pageContext.request.contextPath}</td>
</tr>
<tr>
<td>取得HTTP请求方式</td>
<td>${pageContext.request.method}</td>
</tr>
<tr>
<td>取得使用的协议</td>
<td>${pageContext.request.protocol}</td>
</tr>
<tr>
<td>取得用户IP地址</td>
<td>${pageContext.request.remoteAddr}</td>
</tr>
<tr>
<td>取得session ID</td>
<td>${pageContext.session.id}</td>
</tr>
</table>
</body>
效果:
| 取得请求的参数字符串 | |
| 取得请求URL | http://localhost:8088/JSPTest7ELlanguage/inner/OtherInner.jsp |
| 取得web应用名称 | /JSPTest7ELlanguage |
| 取得HTTP请求方式 | GET |
| 取得使用的协议 | HTTP/1.1 |
| 取得用户IP地址 | 127.0.0.1 |
| 取得session ID | 4B8F4FDD253B24D9DAE9E6D29B7209C0 |
------------------------------------------------------------------------------------------------------------------
示例代码:使用存取器读取JavaBean中的数据
Student.java
package com.jsp;
public class Student {
private long classno;
private String name;
private int age;
private boolean sex;
private String major;
public Student(){
}
public long getClassno() {
return classno;
}
public void setClassno(long classno) {
this.classno = classno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isSex() {
return sex;
}
public void setSex(boolean sex) {
this.sex = sex;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
}
input.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> <html>
<head>
<title>Param HTML</title>
</head> <body>
<form action ="param.jsp">
姓名:<input type = "text" name ="Username"><br>
年龄:<input type = "text" name = "age"><br>
专业:<input type = "text" name = "major"><br>
<input type ="submit" value="提交"> </form>
</body>
</html>
param.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%request.setCharacterEncoding("gb2312");%>
<html>
<head>
<title>利用请求参数设置JavaBean属性</title>
</head> <body bgcolor="#ffffff">
<jsp:useBean id = "student2" scope="page" class="com.jsp.Student"/>
<jsp:setProperty name="student2" property="name" param="Username"/>
<!-- 注意第三个参数名为param,因为上一个页面传过来的为参数
如果为valule="Username" 那么名字就会被设置为"Username"而不是参数值 -->
<jsp:setProperty name="student2" property="age" param="age"/>
<jsp:setProperty name="student2" property="major" param="major"/> <!-- 将student2信息保存在session中,属性名为MyStudent2. 在下面表格的第四列获取这里面的信息 -->
<%session.setAttribute("MyStudent2",student2);%> <table>
<tr>
<td>姓名</td>
<td><jsp:getProperty name = "student2" property="name"/></td>
<td><%out.println(student2.getName()); %></td>
<td>${student2.name }</td> <!-- 使用EL表达式读取属性值 -->
<td>${sessionScope.MyStudent2.name }</td> <!-- 使用EL表达式从session中读取 -->
</tr>
<tr>
<td>年龄</td>
<td><jsp:getProperty name = "student2" property="age"/></td>
<td><%out.println(student2.getAge()); %></td>
<td>${student2.age }</td> <!-- 使用EL表达式 -->
<td>${sessionScope.MyStudent2.age }</td> <!-- 使用EL表达式从session中读取 -->
</tr>
<tr>
<td>专业</td>
<td><jsp:getProperty name = "student2" property="major"/></td>
<td><%out.println(student2.getMajor()); %></td>
<td>${student2.major }</td> <!-- 使用EL表达式 -->
<td>${sessionScope.MyStudent2.major }</td> <!-- 使用EL表达式从session中读取 -->
</tr> </table>
</body>
</html>
页面效果:
| input.jsp | param.jsp |
![]() |
![]() |
注意,param.jsp中的四列采用了4种方法获取JavaBean中的属性后两种使用了EL表达式。详见上面的代码。
------------------------------------------------------------------------------------------------------------------
示例代码:使用存取器读取Map中的数据
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
<%@ page contentType = "text/html;charset=GB2312" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <%
String name ="lee";
HashMap<String,String> values = new HashMap<String,String>();
values.put("money", "银行降低基准利率");
values.put("热点", "国际空间站建成");
values.put("体育", "国足挺进亚洲杯8强");
String newColor = "blue";
request.setAttribute("news", values);
request.setAttribute("color", newColor);
%>
<html>
<head>
<title>EL表达式的存取符和隐式对象</title>
</head>
<body>
<h1>Hello ${param.name}! </h1>
<font color="${requestScope.color}">
<h3>
财经:${requestScope.news.money}<br>
热点:${requestScope.news.热点}<br>
体育:${requestScope.news["体育"]}<br>
</h3>
</font>
</body>
</html>
页面效果
![]() |
JavaWeb学习笔记--4.EL表达式的更多相关文章
- Javaweb学习笔记6—EL表达式与JSTL及自定义标签
今天来讲javaweb的第六阶段学习. EL表达式与JSTL及自定义标签是对上篇文章介绍的JSP的扩展,不能说是很重要的东西,但是也要了解. 老规矩,首先先用一张思维导图来展现今天的博客内容. ps: ...
- JSP/Servlet Web 学习笔记 DaySix —— EL表达式
1)EL从scope中得到参数时可以自动转换类型,因此对于类型转换的限制更加宽松. 2)使用EL表达式,可以简化变量和对象的访问. 3)EL表达式必须以 ${XXXX} 来表示. 4)EL提供点(.) ...
- 1.6(学习笔记)EL表达式
1.表达式输出属性 先来看一个简单的表达式小例子 el.jsp <%@ page language="java" contentType="text/html; c ...
- JavaWeb学习篇之----EL表达式详解
我们之前的几篇文章中都提到了一个EL表达式,那么这个EL表达式到底是什么东东呢?为什么用处那么大,下面我们就来看看EL表达式的相关内容 EL表达式简介: EL 全名为Expression Langua ...
- Java Web学习笔记之---EL和JSTL
Java Web学习笔记之---EL和JSTL (一)EL (1)EL作用 Expression Language(表达式语言),目的是代替JSP页面中复杂的代码 (2)EL表达式 ${变量名} ( ...
- java学习笔记06--正则表达式
java学习笔记06--正则表达式 正则表达式可以方便的对数据进行匹配,可以执行更加复杂的字符串验证.拆分.替换等操作. 例如:现在要去判断一个字符串是否由数字组成,则可以有以下的两种做法 不使用正则 ...
- JavaWeb学习笔记总结 目录篇
JavaWeb学习笔记一: XML解析 JavaWeb学习笔记二 Http协议和Tomcat服务器 JavaWeb学习笔记三 Servlet JavaWeb学习笔记四 request&resp ...
- Dart学习笔记-运算符-条件表达式-类型转换
Dart学习笔记-运算符-条件表达式-类型转换 一.运算符 1.算术运算符 + (加)- (减)* (乘)/ (除)~/ (取整) %(取余) 2.关系运算符 == (等等) != (不等) > ...
- javaweb学习笔记整理补课
javaweb学习笔记整理补课 * JavaWeb: * 使用Java语言开发基于互联网的项目 * 软件架构: 1. C/S: Client/Server 客户端/服务器端 * 在用户本地有一个客户端 ...
随机推荐
- CRegKey 注册表操作
CRegKey 注册表操作 标签: accessnulluserpathbyteie 2011-11-03 13:55 3477人阅读 评论(0) 收藏 举报 分类: win32(7) 1.简介 ...
- Qt编程之右键单击QTreeWidgetItem弹出菜单
其实有这个需求很好理解,就是我有个project manager,上面的TreeWidgetItem都表示一个工程,我需要右键创建新的工程,或者删除.这个在很多普通软件中也见得多.在弹出的菜单中加入相 ...
- 深入理解JavaScript Hijacking原理
最近在整理关于JavaScript代码安全方面的资料,在查关于JavaScript Hijacking的资料时,发现关于它的中文资料很少,故特意整理一下. 一.JavaScript Hijacking ...
- IMS 相关名词解释
IMS: IMS(IP Multimedia Subsystem)是IP多媒体系统,是一种全新的多媒体业务形式,它能够满足现在的终端客户更新颖.更多样化多媒体业务的需求. RCS:Rich Commu ...
- [HNOI 2013] 消毒 (搜索,二分图匹配)
题目大意 一个a * b * c(a * b * c <= 5000)大小的长方体中有一些点需要被覆盖,每次可以选择任意大小的长方体,覆盖其中的点,产生的代价为这个长方体长宽高中最小的那个的长度 ...
- 解决Xcode8 输出一对字符串问题
在Product->Scheme->Edit Scheme->Run->Environment Variables下添加键:OS_ACTIVITY_MODE, 值:Disabl ...
- PHP的输出缓冲区
什么是缓冲区?简单而言,缓冲区的作用就是,把输入或者输出的内容先放进内存,而不显示或者读取.至于为什么要有缓冲区,这是一个很广泛的问题,如果有兴趣,可以在网山找下资料.其实缓冲区最本质的作用就是,协调 ...
- Web安全测试之XSS(跨站脚本攻击)
XSS 全称(Cross Site Scripting) 跨站脚本攻击, 是Web程序中最常见的漏洞.指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会在用户的 ...
- 函数返回char* 的解决方案
在C语言中,自动变量在堆栈中分配内存.当包含自动变量的函数或代码块退出时,它们所占用的内存便被回收,它们的内容肯定会被下一个所调用的函数覆盖.这一切取决于堆栈中先前的自动变量位于何处,活动函数声明了什 ...
- AsyncHttpClient 登录 Application Fragment 回调 监听 软键盘
Activity /**登录界面及登陆后用户首页界面,使用两个Fragment实现*/ public class LoginActivity extends Activity implements L ...



