一、jsp标签与el表达式
1、jsp标签是什么?
因为直接在.jsp文件中添加java代码,虽然可以实现
动态页面,但是,不利于维护(比如,将.jsp文件交给美
工来修改的话,就很不方便)。所以,sun制订了jsp标签
技术,其实质是,将jsp文件中的java代码写在一个标签类
里面,然后,在jsp文件中添加一个类似于html的标签,
当容器执行jsp时,会依据标签找到标签类,然后调用标签类
中的代码。
2、el表达式是什么?
是一种简单的计算规则,用于给标签的属性赋值。现在,
也可以直接输出。
3、el表达式的使用:
1)访问bean的属性
第一种方式:
${user.name}: 容器会依次从pageContext,
request,session,application中查找绑订名为
"user"的对象,如果找到了,则不再向下继续查找。
接下来,调用该对象的getName方法,最后输出。
相比于直接写java代码,有两个优点:
会将null转换成""输出,另外,找不到某个对象,
不会报空指针异常,会输出""。
可以使用${sessionScope.user.name}来指定从
session中查找。此外,还有requestScope,pageScope,
applicationScope查找范围。
第二种方式:
${user["name"]},这种形式有两个优点:
允许[]里面出现变量,比如 ${user[prop]}。
允许[]里面出现从0开始的下标,
比如${user.interest[0]},输出数组某个元素的值。
2)获得请求参数值
${param.username} 等价于
request.getParameter("username");
${paramValues.city}等价于
request.getParameterValues("city");
3)进行简单的计算,计算结果可以给标签的属性赋值,或者
直接输出。
a,算术运算: "+","-","*","/","%"。注意,不能够进行字符
串的连接操作。
b,关系运算:"==","!=",">",">=","<","<="。
c,逻辑运算: "&;&;","||","!"。
d,empty运算:
以下四种情况结果为true。
d1,空字符串 ""
d2,空的集合
d3,值为null
d4,找不到某个对象
4、jstl标签(java standard taglib,是一系列标签,由
apache开发,但sun将其标签化)
1)编程的基础步骤
step1,将标签对应的.jar文件放到WEB-INF\lib下。
D:\czh\MyEclipse 5.5.1 GA\
eclipse\
plugins\
com.genuitec.eclipse.
j2eedt.core_5.5.1\
data\
libraryset\
JSTL1.1\lib
jstl.jar standard.jar
step2,在.jsp文件里面,使用taglib指令导入标签。
<%@taglib uri="" prefix=""%>
uri:一个命名空间。
prefix:命名空间的前缀。
2)几个核心的标签
a,
标签体(这儿,允许出现java代码
<% %>,<%= %>,<%! %>)
如果test属性值为true,则执行标签体的内容。如果
为false,则不会执行标签体的内容。
test属性一般使用el表
达式来赋值。
var属性指定一个绑订名称。
scope属性指定绑订的范围(page,request,session,application)
,,
when,otherwise必须用写在choose标签里面。
when可以出现多次,而otherwise最多只能出现1次。
when标签有一个test属性,含义及用法跟if标签中的一样。
遍历集合, items属性指定要遍历的集合,一般使用el
表达式来赋值。var属性指定绑订名,绑订范围是
pageContext,绑订值是items指定的集合中的某个元素。
varStatus属性指定绑订名,该绑订名对应的对象
(由容器创建这个对象)封装了迭代的状态,该对象
的index属性表示正在被访问的对象的下标,count属性
表示是第几次访问。
3)标签执行的过程
容器依据命名空间找到对应的标签描述文件(容器
会从WEB-INF\或者是.jar文件的META-INF下查找
.tld文件),然后依据标签名找到对应的标签类 ,接下来,
会创建标签类的实例并调用相应的方法。
练习:
将员工管理系统中的empl