#Servlet
最原始的 Servlet 是在服务器上运行的小程序,他通过输出内容到客户端,由浏览器来呈现输出的内容。
一般我们能看到的是基于 html 格式的内容,也就是网页。当然也可以指定他的内容类型,http 报头等,实现文件的下载等等。
它的实现过程,一般为:
- 客户端组织本地需要的请求,比如页面输入,请求的内容等,提交到服务器。
- 服务器将请求 Servlet。
- Servlet 根据请求内容转发给具体的实现类。
- 实现类将反馈结果给 Servlet。
- Servlet 将结果发回客户端。
它所利用的设计模式为单例模式,需要保证实现类的 servlet 是无状态的。也就是说,不能拥有全局变量。否则可能造成预想不到的问题。
它的生命周期为:
1: 客户端请求该 Servlet;
2: 实例化并调用 init()方法初始化该 Servlet;
3: service() 或者根据请求方法不同调用 doGet(),doPost();
4: 结果返回。
#Filter
filter 功能使用户可以改变一个 request 和修改一个 response. Filter 不是一个 servlet,它不能产生一个 response,它能够在一个 request 到达 servlet 之前预处理 request,也可以在 response 离开 servlet 时处理 response.换种说法,filter 其实是一个“servlet chaining“(servlet 链).
包括
1: 在 servlet 被调用之前截获;
2: 在 servlet 被调用之前检查 servlet request;
3: 根据需要修改 request 头和 request 数据;
4: 根据需要修改 response 头和 response 数据;
5: 在 servlet 被调用之后截获;
你能够配置一个 filter 到一个或多个 servlet;单个 servlet 或 servlet 组能够被多个 filter 使用。
几个实用的 filter 包括:用户辨认 filter,日志 filter,审核 filter,加密 filter,符号 filter,能改变 xml 内容的 XSLT filter 等。
Listener
顾名思义就知道主要作用就是监听,通过在配置文件中注册监听实例,可以实现一些容器级别,session 级别的功能。
比如,当前在线人数的统计就可以通过 session 的创建,释放事件来统计。
也比如,一些 session 开始,结束需要释放或者 lock 的表等等。
目前根据系统的框架,可以在 web.xml,或者在这个里边配置的外部配置文件中,或者通过标记等配置。
可用的 listener 基础类型包括
可以具体应用场景,选择合适的 listener 来创建功能。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于