servlet高级开发
servlet和jsp的多线程问题
单个servlet可以处理多个并发请求
在一个共享的servlet实例中多个线程可能导致数据不一致
通过同步critical section能够避免不一致后果
使用“synchronized”保护重要的程序代码
示例:...
jsp多线程问题
默认jsps能接收不同客户的并发请求
对于critical section中代码,必须像servlet那样使用同步机制
在page指示中使用singlethreadmodel接口配置jsp
例如:...
默认下为true
servlet过滤器
用于解密客户请求数据和加密响应数据
数据压缩和解压
用户认证
在日志中过滤出有价值的信息
图象转换
用于:在客户端请求传递到所请求的servlet之前,修改该请求;
在用户的响应从servlet返回到用户端之前,修改响应;
多个过滤器可以链接在一起使用:
filterchain对象包含了一个过滤器的顺序列表
在请求传递到servlet之前,通过按顺序执行一些过滤器修改该请求
在响应返回用户之前,按相反的顺序运行执行一些过滤器修改该请求
编写过滤器
servlet过滤器是实现了javax。servlet。filter接口的类,它使用以下方法:
init(filterconfig)初始化过滤器
dofilter()执行过滤器的任务
destroy()在服务中撤销过滤器
servlet过滤器从javax。servlet。filterconfig对象中获得调用servlet的上下文和部署参数
简单的请求/响应加密过滤器示例:...
部署过滤器
在web。xml中部署过滤器
过滤器的名子
过滤器的类
过滤器初始化参数
过滤器到servlet或url的映射
过滤器的次序
在web。xml定义次序
应用事件的监听器
servlet生命周期监听器
servletcontext事件
当部署,关闭web应用时和当增加,删除,修改属性时
httpsession事件
当激活,钝化httpsession时和当增加,删除,修改httpsession属性时
事件监听器可用于:
当部署或关闭web应用时,管理数据库连接或外部资源
实现计数器
监视httpsession的状态和属性
处理servlet context事件
servletcontextlistener接口定义了以下方法响应web应用的创建和销毁事件:
contexinitialized(servletconfitextevent e)
contextdestroyed(servletcontextevent e)
servletcontextattributelistener接口定义了以下方法响应属性改变事件:
attributeadded(servletcontextattributeevent e)
attributeremoved(servletcontextattributeevent e)
attributereplaced(servletcontextattributeevent e)
使用了servlet context监听器的连接管理器:...
处理httpsessionevents
通过实现httpsessionlistener接口处理http会话的创建和销毁事件:
http会话的钝化处理
会话属性的修改
部署监听器
在web。xml文件中使用《listener》元素部署监听器
《listerner》元素出现在《filter》之后并在《servlet》元素之前
高级web应用
web容器负责管理web应用的本地命名服务
使用web.xml声明环境入口和资源引用
java:comp/env树是只读的并且对每个应用都是唯一的
配置环境项目
<env-entry>用于为web应用声明环境入口
入口绑定在java:comp/env/上下文下面
代码和资源的分离
通过把源代码和它所使用的资源分开,使得源代码具有更好的可移植性
例如你可以在web.xml中声明资源应用,然后使用weblogic.xml把他们映射到真正的资源
使用weblogic.xml将引用映射到绑定在jndi中的资源