Servlet、Filter、Listener的简介
来源:互联网 发布:迷你钢珠火炮淘宝上 编辑:程序博客网 时间:2024/06/05 05:33
一、 Servlet
Servlet是一个与协议无关的、跨平台的web组件,由java语言开发,由servlet容器管理,可以生成动态的Web页面。 它接收Web浏览器或其它HTTP客户端发出请求,是HTTP服务器上的数据库或应用程序之间的中间层。
javax.servlet.http.HttpServlet实现了专门用于响应HTTP请求的Servlet
自定义的servlet只需继承HttpServlet,并覆盖以下方法其中之一即可
- doGet(HttpServletRequest,HttpServletResponse) //响应HTTP GET的请求
- doPost(HttpServletRequest,HttpServletResponse) //响应HTTP POST的请求
- public class HelloServlet extends HttpServlet {
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- //应用代码
- }
- }
Web.xml中配置
- <servlet>
- <servlet-name>helloServlet</servlet-name>
- <servlet-class>com.alibaba.test.HelloServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>helloServlet</servlet-name>
- <url-pattern>/hello</url-pattern>
- </servlet-mapping>
二、 Filter
Filter相当于一个过滤器。它会在请求到达Servlet之前,以及响应返回给浏览器之前,被激活。因此,
1. Filter可以改变被传递到Servlet中的Request和Response对象。
2. Filter可以改变由Servlet返回给浏览器的内容。
3. Filter可以决定是否把控制传递给其后的Servlet。
4. 每个Servlet可以挂接多个Filter。
5. 每个Servlet和Filter并不知道其它的Filter存在。
一个filter必须实现javax.servlet.Filter接口并定义三个方法:
- public void init (FilterConfig config) //设置filter 的配置对象
- public void destroy() //filter销毁资源
- void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) //执行filter 的工作
服务器每次只调用一次init方法初始化filter,调用doFilter方法多次以处理不同的请求。FilterConfig接口有方法可以找到filter名称及初始化参数信息。服务器可以设置FilterConfig为空来指明filter已经终结。
每一个filter从doFilter()方法中得到当前的request及response。在这个方法里,可以进行任何的针对request及response的操作(包括收集数据、包装数据等)。Filter接口的doFilter方法取一个FilterChain对象作为它的一个参数,调用FilterChain对象的doFilter方法,激活下一个相关的过滤器。如果没有另一个过滤器与servlet或JSP页面关联,则servlet或JSP页面被激活。
Filter的用途很广泛,例如:验证授权、加密、压缩等。
下面是Filter的例子:
- public class SetLoggingContextFilter extends Filter{
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
- {
- //做servlet执行之前做的事
- chain.doFilter(request, response);//执行下一个filter或servlet、jsp
- //做servlet执行之后做的事
- }
- }
Web.xml中的配置
- <filter>
- <filter-name>LoggingFilter</filter-name>
- <filter-class>com.alibaba…SetLoggingContextFilter </filter-class>
- </filter>
- <filter-mapping>
- <filter-name>LoggingFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
Filter的拦截在servlet 的之前和之后。
三、 Listener
Listener可以监听WEB应用中的各种事件,J2EE API中包含以下接口:
1. ServletContextListener– 当Servlet容器(Context)被创建时、被第一次访问时、被销毁时,得到通知。
a)contextDestroyed(ServletContextEvent)
b) contextInitialized(ServletContextEvent)
2. ServletContextAttributesListener– 当ServletContext.attributes被增、删、改时,得到通知。
a) attributeAdded(ServletContextAttributeEvent)
b) attributeRemoved(ServletContextAttributeEvent)
c) attributeReplaced(ServletContextAttributeEvent)
3. HttpSessionListener– 当Session被创建、作废、超时的时候,得到通知。
a) sessionCreated(HttpSessionEvent)
b) sessionDestroyed(HttpSessionEvent)
4. HttpSessionAttributesListener– 当Session中的数据被增、删、改时,得到通知。
a) attributeAdded(HttpSessionBindingEvent)
b) attributeRemoved(HttpSessionBindingEvent)
c) attributeReplaced(HttpSessionBindingEvent)
下面是Listener的例子:
- public class WebxControllerListener implements ServletContextListener {
- public void contextInitialized(ServletContextEvent event) {
- //可以写初始化框架代码
- }
- public void contextDestroyed(ServletContextEvent event) {
- //可以销毁框架释放资源
- }
- }
Web.xml中的配置
- <listener>
- <listener-class>com.alibaba.webx.WebxControllerListener</listener-class>
- </listener>
Listener在配置时不需要配置url映射,他不是针对客户端的某一请求触发的,而由服务器某些特定事件触发的。目前我们应用使用WebxControllerListener就是实现ServletContextListener接口,在web服务器初始化和销毁时分别调用 contextInitialized(ServletContextEvent)、contextDestroyed(ServletContextEvent) 进行初始化和销毁的工作。
- Servlet、Filter、Listener的简介
- Servlet、Filter、Listener的简介
- Listener Filter Servlet的应用
- Filter、Servlet、Listener的学习
- Java的Listener、Filter、Servlet
- Servlet Filter Servlet Listener
- Listener、Filter、Servlet的初始化顺序
- Servlet中listener和filter的总结
- Servlet中listener和filter的总结
- Java中Filter、Servlet、Listener的学习
- Java中Filter、Servlet、Listener的学习
- Java中Filter、Servlet、Listener的学习
- Java中Filter、Servlet、Listener的学习
- Java中Filter、Servlet、Listener的学习
- filter、servlet、listener、interceptor的区别?
- Java中Filter、Servlet、Listener的学习
- Listener、Filter、Servlet的初始化顺序
- Java中Filter、Servlet、Listener的学习
- 蓝桥杯 - 第二大整数 (逻辑判断 循环语句)
- Java EE 7 教程 第一部分 简介 第2章 使用教程示例 第2.4节 启动和停止Java DB服务器
- sql server 2005的导入数据、导出数据问题集合
- PHP获取当前目录和相对目录的方法
- ionic相关名词记录
- Servlet、Filter、Listener的简介
- [iOS]Xcode4/iOS5调试UncaughtException崩溃First throw call stack不打印方法名的解决方案
- [bash]: 删除代码注释
- pb 数据到底有多大
- AppleTV的设置
- 非常有用的站点
- Java EE 7 教程 第一部分 简介 第2章 使用教程示例 第2.5节 构建示例
- android代码混淆
- get提交 取不到百分号参数