博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
监听器
阅读量:5340 次
发布时间:2019-06-15

本文共 1142 字,大约阅读时间需要 3 分钟。

1.监听器

servlet规范中定义的一个特殊的类,可以对容器当中的事件进行监听。

第一:与生命周期相关的事件

比如创建或者销毁了request/session/servletContext对象

第二:绑定事件

比如调用了request/session/servletContext对象的setAttribute()或者removeAttribute()方法。

如何定义一个监听器?

step1.定义Java类,实现特定的接口

step2.重写方法

step3.在web.xml文件中配置监听器

应用场景:在线人数统计

 

2.servletContext:上下文对象

容器会为每一个应用创建一个唯一的上下文对象,该对象一致存在,除非容器被关闭,或者应用被删除

request:一次请求,一次响应期间

session:一次会话期间

servletContext:一直存在,除非容器被关闭,或者应用被删除

获取上下文对象:

a.通过GenericServlet提供的getServletContext方法

b.通过HTTPSession提供的getServletContext方法

c..通过ServletConfig提供的getServletContext方法

常用方法:

a.绑定数据

setAttribute(String name,Object obj);

Object:getAttribute(String name);

b.获取全局初始化参数值

String:getInitParameter(String name);

c.根据逻辑路径获取物理地址

String:getRealPath(String url);

 

3.文件上传

step1.form表单的method必须设置成post,enctye必须设置成"multipart/form-data"

step2.不能再用request.getParameter获取参数,而应该用request.getInputStream获取流信息,再分析流。一般借助工具包分析流数据。

 

4.servlet线程安全问题

产生原因?

浏览器向服务器发请求时,服务器会启动一个线程处理该请求,当多个请求到达时,服务器会启动多个线程,而它们访问的是同一份servlet对象,当在servlet方法中需要修改成员变量值的时候,会有线程安全问题。

如何解决?

a.加锁 synchronized(response)  (影响性能)

b.servlet组件实现SingleModel接口(占内存)

c.尽量避免在servlet中使用成员变量

转载于:https://www.cnblogs.com/yingyigongzi/p/9171973.html

你可能感兴趣的文章
新手村之循环!循环!循环!
查看>>
正则表达式的用法
查看>>
线程安全问题
查看>>
SSM集成activiti6.0错误集锦(一)
查看>>
下拉刷新
查看>>
linux的子进程调用exec( )系列函数
查看>>
MSChart的研究
查看>>
C# 索引器
查看>>
MySQLdb & pymsql
查看>>
zju 2744 回文字符 hdu 1544
查看>>
delphi 内嵌汇编例子
查看>>
【luogu P2298 Mzc和男家丁的游戏】 题解
查看>>
前端笔记-bom
查看>>
MATLAB作图方法与技巧(一)
查看>>
上海淮海中路上苹果旗舰店门口欲砸一台IMAC电脑维权
查看>>
Google透露Android Market恶意程序扫描服务
查看>>
给mysql数据库字段值拼接前缀或后缀。 concat()函数
查看>>
迷宫问题
查看>>
【FZSZ2017暑假提高组Day9】猜数游戏(number)
查看>>
泛型子类_属性类型_重写方法类型
查看>>