什么是JavaBean:
javaBean是一种规范,也就是对类的要求,他要求类的成员变量提供getter/setter方法。这样的成员变量称为JavaBean属性。JavaBean还要求提供无参构造器。
/**
* 简单的JavaBean
*
*/
public class Student {
private String id;
private String name;
private String password;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public AdminVo(String id, String name, String password) {
super();
this.id = id;
this.name = name;
this.password = password;
}
}
JavaBean是具有setter/getter方法的成员变量。只提供getter叫只读,只提供setter叫做只写。
jsp与JavaBean相关的标签动作。
<jsp:useBean>:创建JavaBean对象,以反射的机制实现
在当前页创建JavaBean对象,把创建的对象保存到域对象之中:
<jsp:javaBean id="实例名" class="包.类名" scope="保存的四种范围">
<jsp:useProperty>:设置JavaBean的属性
<jsp:getProprety>:获取JavaBean的属性
sp:useBean id="user" class="" scope="">
<jsp:setProperty property="username" name="user" value=“admin”/>设置JavaBean中username的值
</jsp:useBean>
<jsp:useBean id="user" class="" scope="">
<jsp:getProperty property="username" name="user"/>获取JavaBean中username的值
</jsp:useBean>
EL表达式语言:
EL的作用,在javaweb开发中,我们所有的html和java以及jsp页面是核心,但是在普通开发中,一个好的jsp页面要实现代码的整洁性,尽量避免在jsp页面中出现scriptlet(<%…%>)代码,所以,jsp推出了EL表达式,完成输出。
定义标识符规范:
1.不能以数字开头。
2.不能包含单引号(')、双引号(“)、减号(-)和正斜杠(/)等特殊字符。
3.不能是EL隐式对象,如pageContext。
4.不能是EL中的保留字,如and、or、gt。
${}
- EL不需要导包
- 在EL中调用属性, 其实是调用的getXXX()方法
基本用法:
//jsp用法
<%=request.getAttribute("username")%>
<%=request.getAttribute("password")%>
//EL用法
${username}
${password}
运算符
点运算符( . ):用于访问jsp页面中某些对象的属性;
方括号运算符( [] ):
功能与点运算符相同,但是当属性名包含一些特殊符号时,只能使用方括号运算符
1.可以处理数组${requestScope.arr[0]}
2.可以容纳变量属性
${user["My-Name"]}
empty 运算符:
用于判断某个对象(也适用于Set, Map, List)是否为null或" ", 基本语法如下:
${empty var}
注意:在应用EL表达式取值时, 没有数组的下标越界, 没有空指针异常, 没有字符串的拼接当对象属性名称首字母大写时, 前台会出现拿不到数据的情况
如果希望页面不适用EL,那么在page指令中加入isELlgnored=”true“属性。如果只希望某个不适应EL,则加上"",如${};
EL可以非常容易判断属性存不存在,scriptlet判断属性不存在时,会显示NULL,EL则显示空白。
EL表达式格式:
操作list和数组:${list[0]},${arr[0]}
操作bean和属性:${person.name}—>对应的是person.getName()方法。
操作Map:${map.key},${map[‘key’]}—>对应的是map.get(Key)
EL一共11个内置对象,其中有十个是map类型的,最后一个是pageContext对象的:
1.pageScope
2.requestScope
3.sessionScope
4.applicationScope
5.param
6.paramValues
7.header
8.headerValues
9.initParam
10.cookie
11.pageContext
域对象一共有四个:
1.pageScope
2.requestScpoe
3.sessionScope
4.applicationScope
${pageScope.name}=pageContext.getAttribute("name");
${requestScope.name}=request.getAttribute("name");
${sessionScope.name}=session.getAttribute("name");
${applicationScope.name}=application.getAttribute("name");
如果域中保存的是JavaBean对象,则可以通过EL表达式获取。因此,JavaBean不一定有setter,但一定要有getter方法。
请求参数相关内置对象
param和paramValues这两个内置对象用来接收请求参数的。
param是获取一个请求参数,paramValue是获取一组请求参数(如复选框)。这是在jsp页面接收参数所用到的。相当于request.getParameter()和request.getParameterValues().
pageContext
${pageContext.response.charaterEncoding}
web域相关对象:
param和paramValues对象:
在JSP页面中,经常需要获取客户端传递的请求参数,为此,EL表达式提供了param和
paramValues两个隐式对象,这两个隐式对象专门用于获取客户端访问JSP页面时传递的请求参数。接下来针对这两个对象进行讲解,具体如下。
param对象用于获取请求参数的某个值,它是Map类型,与request.getParameter()方法相同,在使用EL获取参数时,如果参数不存在,返回的是空字符串,而不是null。param对象的语法格式比较简单。
${param.num}
如果一个请求参数有多个值,可以使用paramValues对象来获取请求参数的所有值,该对象用于返回请求参数所有值组成的数组。如果要获取某个请求参数的第1个值。
${paramValues.nums [0]}
示例:
cookie
JSTL 基础
JSTL 标签库由五个功能不同的标签库组成,分别为:核心标签库、格式标签库、SQL 标签库、XML 标签库和函数标签库;使用这些标签库之前需要在 JSP 页面使用如下声明:
格式:
// 核心标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
// 格式标签库
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
// SQL 标签库
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
//xml标签库
<%@ taglib prefix="xml" uri="http://java.sun.com/jsp/jstl/xml"%>
//函数标签库
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
标签库
核心标签库主要用于完成 JSP 页面的常用功能,包括 JSTL 的表达式标签、URL 标签、流程控制标签和循环标签。