文章目录
EL表达式和JSTL
学习目标
一、初识JavaBean
什么是javaBean?
访问javaBean的属性
BeanUtils工具
二、初识EL
EL概述
EL中的变量,常量、标识符、保留字等
EL中的运算符、隐式对象、
三、隐式对象
EL中web相关对象、
param和Values对象、
Cookie对象
四、总结
1.1什么是javaBean?
JavaBean是公共Java类,但是为了编辑工具识别
需要满足至少三个条件
1.有一个public默认构造器(例如无参构造器)
2.属性使用public 的get,set方法访问,也就是说设置成private同时get,set方法与属性名的大小也需要对应。例如属性name,get方法就要写成,public String getName(){},N大写。
3. 需要序列化。这个是框架,工具跨平台反映状态必须的。
1.2 访问javaBean的属性:
在讲解面向对象时,经常会使用类的属性,类的属性指的是类的成员变量。在JavaBean中同样也有属性,但是它和成员变量不是一一个概念,它是以方法定义的形式出现的,这些方法必须遵循一定的命名规范。例如,在JavaBean中包含-一个String类型的属性name,那么在JavaBean中必须至少包含getName()和setName()方法中的一个,这两个方法的声明如下所示。
代码如下(示例):
public String getName(){
…}
public void setName (String name) {
. . . }
需要注意的是, 对于JavaBean属性的命名方式有一个例外情况。如果属性的类型为boolean,它的命名方式应该使用is/set,而不是get/set。 例如,有-一个boolean类型的属性maried,该属性所对应的方法声明如下所示。
public boolean isMarried(){
…}
public void setMarried (boolean married){
…}
从上面的代码可以看出,married 属性的setter方法命名方式没有变化,而getter方法变成了isMarried()方法。当然,如果一定要写成getMarried()也是可以的,只不过isarried()更符合命名规范。
通过上面的学习,读者对JavaBean 组件有了一个初步的了解,为了更加深刻地理解JavaBean 属性的定义,接下来通过具体的案例来实现一个JavaBean程序。
在cn.itcast.chapter07.javabean包下创建Student类,代码如下图所示:
在该文件中定义了一个Student类,该类有5个属性,分别为age、married、name、sid和info。其中,age和married属性是可读属性,name只写属性,sid是只读属性,它们在类中都有命名相同的成员变量,而info是只读属性,但它没有命名相同的成员变量。
1.3BeanUtils 工具
BeanUtils 类的常用方法及其功能的描述,掌握这些方法对灵活运用BeanUtis工具尤为重要。为了让读者熟悉BeanUtils 类的常用方法,接下来通过一个案例来演示使用setProperty()、getProperty()和 populate()方法访问JavaBean的属性。
(1) 在项目的lib 目录中添加已下载的commons-beanutils- 1.9.2.jar 和Logging的JAR包commons-logging-1.2.jar,并将这两个JAR包发布到类路径中
(2) 在项目的src 目录下创建一个名为cn.itcast.chapter06.beanutils 的包,在包下创建Person类,Person 类中定义了name和age两个属性,并提供了对应的getter方法和setter方法供外界访问这两个属性。
(3) 在cn.itcast.chapter09. beanutils 包下创建一个BeanUtilsDemo 类, 该类中使用了BeanUtils类的常用方法,具体代码如文件7-4所示。
BeanUtilsDemo.java
二、初识EL
2.1E概述:
①Expression Language表达式语言
②是一种在JSP页面获取数据的简单方式(只能获取数据,不能设置数据)
③在JSP2.0开始引入概念
${表达式}
需要注意的是,“${表达式}”中的表达式必须符合EL语法要求。关于EL语法的相关知识,将在下面的小节进行详细讲解。
为了证明EL表达式可以简化JSP页面,接下来通过一个案例来对比使用Java代码与EL表达式获取信息的不同。
首先,
在项目的src目录下创建包cn.itcast chapter07.servlet,在包中创建一个用于 存储用户名和密码的类MyServlet,代码如下图:
然后,在WebContent目录下编写一个名为myjisp的JSP文件,使用该文件来输出MyServlet所存储的信息,代码如下:
2.2EL中的变量:
使用EL内置对象,从指定域中获取数据,提高了查找效率
代码如下(示例):
<%@ 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>