初识JavaBean和EL表达式笔记

来源:互联网 发布:mac更换硬盘克隆系统 编辑:程序博客网 时间:2024/06/04 18:52
一、JavaBean的概念
1、JavaBean就是一个遵循特殊写法的普通类
2、特殊写法
a、必须有默认的构造方法
b、所有字段定位私有的   
c、提供公有的getter或setter方法,属性
d、一般实现java.io.Serializable

3、一定要符合Java的命名规范。

4、应用场景:
在企业级开发中,JavaBean是用来传递数据的。

二、JavaWeb的开发模型
模型一:了解
JSP+JavaBean

模型二:开发实际应用
程序中
M:厨师 JavaBean:模型
V:上的菜 JSP:显示页面
C:服务台 Servlet:控制器

MVC+三层架构
三、JSP中操作JavaBean的动作元素
jsp:useBean
作用:用于在指定域范围内查找指定名称的JavaBean对象,找到了就直接使用;没有找到,创建一个,并放到指定的域范围内。
属性:
id:必须的。JavaBean的名称
class:JavaBean的完整类名
scope:域范围。默认是page范围。可选值:page request session application

注意:如果该标签有主体内容,只在创建新对象时才会执行。
jsp:setProperty(必须先使用useBean)
作用:调用JavaBean的setter方法。还能自动类型转换,仅限基本类型
属性:
property:必须的。属性名称。比如setName,名称是name。
可以使用通配符*。使用前提是请求参数的名称与属性的名称完全一致。
name:必须的。哪个对象的?即jsp:useBean中的id的取值。
value:属性的取值。支持直接量;支持表达式(<%=表达式%>)。
param:请求参数名
jsp:getProperty
作用:调用JavaBean的getter方法。
property:必须的。属性的名称。比如getName,名称是name。
name:必须的。哪个对象的?即jsp:useBean中的id的取值。

开发原则:JSP页面中不能出现一行Java脚本<%%>和Java表达式<%=%>
Java脚本:替代方案,自定义标签。
Java表达式:替代方案,EL表达式。   Struts2框架:OGNL表达式。
四、EL表达式
它只是JSP中的表达式,不是一种开发语言。
基本语法:${EL表达式}
4.1获取数据
EL表达式只能获取四大域中的数据。
EL表达式获取的对象如果是null,页面不会显示数据。因此,EL表达式中永远不会出现空指针异常
p.name:调用域中名称为p对象的getName方法,点运算符是用于获取属性的取值的。


.运算符:
[]运算符:.运算符能做的,[]也能做。[]能做的,.不一定能做。
比如${p.name}===${p['name']}==${p["name"]}

优秀在可以取不符合Java命名规范的东东。

4.2数学逻辑运算:
empty运算符:如果判断的对象是null或者空字符串,都返回true。对于集合,即使集合对象本身不是null,没有任何元素,也返回true。

EL表达式不支持字符串连接操作。

4.3获取JSP的内置对象(11大EL内置对象):难点,不要与JSP的内置对象和范围名称搞混
11大EL隐式对象中,其中一个是表示自身对象外,其余都是表示的Map结构

EL隐式对象名称 Java类型 备注
pageContext javax.servlet.jsp.PageContext 与JSP中的内置对象完全相同

剩余的都是代表的Map集合
pageScope java.util.Map 代表着PageContext页面范围域那个Map
requestScope java.util.Map 代表着ServletRequest请求范围域那个Map
sessionScope java.util.Map 代表着HttpSession会话范围域那个Map
applicationScopejava.util.Map 代表着ServletContext应用范围域那个Map


param java.util.Map代表着请求参数。key:请求参数的名称。value:请求参数的值,它是一个字符


串。
paramValues java.util.Map 代表着请求参数。key:请求参数的名称。value:请求参数的值,它是一个字符


串数组。

header java.util.Map 代表着请求消息头。key:头名称。value:头值,它是一个字符串。
headerValues java.util.Map 代表着请求消息头。key:头名称。value:头值,它是一个字符串数组。

cookie java.util.Map 代表客户端提交的Cookie的Map。key:cookie的name。value:cookie对象本身
initParam java.util.Map 代表着全局初始化参数(web.xml中context-param).key:参数名称。value:参


数值

4.4调用普通类的静态方法(EL函数)
编写步骤(自定义EL函数的编写步骤即自定义标签的编写步骤):
a、编写一个普通的java类,提供一个静态方法
public class FunctionDemo {
public static String toUpperCase(String str){
return str.toUpperCase();
}
}
b、在JavaWeb应用的WEB-INF目录下建立一个扩展名是tld(taglib definition)的XML文件(参考Tomcat中的示例)。内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>myfn</short-name>
<uri>http://www.itcast.cn/myfn</uri>
<function><!-- 定义函数 -->
<name>toUppercase</name>
<function-class>cn.itcast.el.FunctionDemo</function-class>
<function-signature>java.lang.String toUpperCase( java.lang.String )</function-signature>
</function>
</taglib>
c、(可选步骤)前提是把tld文件放到了WEB-INF目录下。
告知应用,tld文件和tld中的uri的对应。修改web.xml,增加以下内容:
<jsp-config>
<taglib>
<taglib-uri>http://www.baidu.cn/myfn</taglib-uri>
<taglib-location>/WEB-INF/myfn.tld</taglib-location>
</taglib>
 </jsp-config>
d、在JSP中使用
用taglib指令,引入自定义的EL函数库
<%@ taglib uri="http://www.baidu.cn/myfn" prefix="myfn"%>
${myfn:toUppercase(p)}
五、SUN提供的标准EL函数库
JSTL标准标签:(Jsp Standard Tag Libary)
Core:核心
Fmt:国际化
SQL:数据库操作
XML:xml操作
fn:EL函数库

导入JSTL的jar包。standard.jar jstl.jar
六、JSTL中的核心标签库(替换掉JSP中的Java脚本)
c:if
作用:判断是否为true,如果为true,那么标签的主体内容就会显示。
属性:
test:必须的。要求必须是boolean的。支持表达式(EL或Java表达式)
var:保存test运算结果的变量
scope: 保存的域范围。默认是page
c:forEach
遍历:数组、List、Set、Map
属性:
items:要遍历的目标对象。支持表达式
var:变量名。指向当前遍历的集合中的一个元素
begin:开始的索引(含)
end:结束的索引(含)
step:步长。默认是1
varStatus:取一个名字,引用了一个对象。
该对象有以下方法:
int getIndex():当前记录的索引号。从0开始
int getCount():当前记录的顺序。从1开始
boolean isFirst():是否是第一条记录
boolean isLast():是否是最后一条记录

0 0
原创粉丝点击