总结:
监听器的应用场景.
由于ServletRequest,HttpSession,ServletConText对象都是容器创建.通过对这些
对象注册监听器,就可以得知何时创建或销毁了他们
比如:
1.在容器启动时才加载框架容器
2.在contextDestroyed方法中对应用的级别的资源进行释放
3.统计在线人数
EL,JSTL
EL表达式:
为什么需要EL表达式和JSTL标签
.JSP中嵌套的大量java代码增加了页面内容的复杂度,使得页面不够简洁.不方便代码的维护
.为此sun公司制定了jsp标签(类似于html标签)来代替java代码
.Apache组织开发的一套标签被sun公司整合后,称为标准标签库(JSP Standard Tag Library即JSTL),
配合EL表达式,以达到减轻JSP文件的复杂度,方便维护JSP文件的目的
什么是EL表达式:
EL(Expression Language)表示是一套简单的计算规则,用于给JSP标签的属性赋值,也可以直接用于输出
.表达式也可以脱离标签单独使用
EL表达式的作用:
.EL表达式的作用可以分为以下几类:
-访问bean的属性
-输出简单的运算结果
-获取请求参数值
使用EL表达式访问Bean属性
.通常情况下javaBean指的是一个公共的类,含有一个空参的构造函数,一些属性以及访问这些
属性提供的get/set方法,方法名与属性名需要符合一定的规范
使用EL表达式访问Bean属性时可以使用如下两种方式
-方式一:${对象名.属性}
-方式二:${对象名["属性名"]}
page和pageContext的区别:
page:表示jsp页面本身
pageContext:表示当前页面的上下文对象:表示一个空间,可以放值也可以取值,作用范围
仅限当前页面(可以从页面的任何一个通过java小脚本的方式获取pageContext对象)
.执行过程:容器会依次从pageContext,request,session,application中查找绑定名称
为"user"的对象,找到后调用getName的方法,然后输出
EL表达式和java小脚本的比较
-如果request没有user对象
1.java小脚本报空指针,500的异常
2.而el表达式输出空白
-如果没有name属性赋过值
1.java小脚本输出null
2.而el表达式输出""
小结:
以${user.name}方式访问会避免上段产生的问题
两种写法对比后,el表达式具备了简介,以及会将null转换成""输出的特性
ps:使用el表达式属性名不能写错,否则报错
使用EL表达式时类的属性名首字母保持小写,取值时首字母也要保持
小写(el表达式本身的缺陷)