Java EE系列(八)——阶段性学习总结一

最近,peter xiao看了不少war包,但对于j2ee中重要知识点的系统性总结还从来没有进行过。为了应对之后企业面试的需要,关于基础性概念的整理与总结还是十分必要的。所以接下来笔者的几篇博客都将围绕Java web开发中的一些重点概念进行系统总结。

本篇博客主要对Java web的三大组件——servlet、过滤器和监听器进行一个较为详细的说明。

一、servlet

Servlet(Server Applet),全称Java Servlet,是用java编写的服务器端程序,其主要功能在于交互式地浏览和修改数据,生成动态web内容。servlet作为一个中转处理的容器,他连接了客户端和服务器端的信息交互和处理,其大致过程是:客户端发送请求,传递到servlet容器,而servlet将数据转换成服务器端可以处理的数据,再发送给服务器端,经过数据处理之后,再传递到servlet容器,servlet再转译到客户端,最终完成一次客户端和服务器端的信息交互。

servlet的优势:

1.是MVC的基础,其他的框架比如struts1,struts2,webwork都是从servlet基础上进行发展

2.Servlet是一个Java的类,Java语言能够实现的功能,Servlet基本上都能实现,并且处理客户端传来的HTTP请求,并返回一个响应

3.具备可移植性、安全性、集成性、可扩展性和灵活性

servlet的开发流程:

1.编写一个java类,继承HttpServlet类

2.重写HttpServlet类的doGet方法和doPost方法

3.配置web.xml文件,或者使用注解对servlet进行配置

servlet的生命周期:参见第6个war包的讲解~

 由于关于servlet的学习peter xiao也进展了很长一段时间,这里对于更细节的方面也就不多赘述了,下面将开始讲述过滤器与监听器的使用。


二、过滤器

在Java web中的过滤器,其作用是对于发送的请求进行过滤,其操作是对请求进行拦截,然后做相应的处理(选择拦截什么资源,放行什么资源)。过滤器可以有一个或者多个。多个过滤器是为了更好的分配每个过滤器的工作,程序会经过每一个过滤器,但不一定都会被拦截。

 过滤器是一个filter接口,所以需要一个实现这个接口的类,可以在配置文件中完成配置,配置完成之后才会显示效果。

过滤器的四种拦截方式:

请求:REQUEST
转发(专门拦截转发):FORWARD
包含(专门拦截包含):INCLUDE
错误(专门拦截错误):ERROR

servletFilter中的dofilter方法:

doFilter()方法类似于Servlet接口的service()方法。当客户端请求目标资源的时候,容器就会调用与这个目标资源相关联的过滤器的 doFilter()方法。其中参数 request, response 为 web 容器或 Filter 链的上一个 Filter 传递过来的请求和相应对象;参数 chain 为代表当前 Filter 链的对象,在特定的操作完成后,可以调用 FilterChain 对象chain.doFilter(request,response)方法将请求交付给 Filter 链中的下一个 Filter 或者目标 Servlet 程序去处理,也可以直接向客户端返回响应信息,或者利用RequestDispatcher的forward()和include()方法,以及 HttpServletResponse的sendRedirect()方法将请求转向到其他资源。 

多个Filter的执行顺序:

一般来说,Filter之间不会有关联,如果需要确定执行顺序,需要对配置文件进行修改,其顺序如下:

1.在web.xml中,filter执行顺序跟<filter-mapping>的顺序有关,先声明的先执行
2.使用注解配置的话,filter的执行顺序跟名称的字母顺序有关,例如AFilter会比BFilter先执行
3.如果既有在web.xml中声明的Filter,也有通过注解配置的Filter,那么会优先执行web.xml中配置的Filter

配置过滤器(Filter)拦截路径:本文在这里采用xml(修改配置文件)的方式来配置拦截路径,其具体操作和配置servlet类似,web.xml文件部分代码如下:

<filter>
        <filter-name>myFilter</filter-name>
        <filter-class>com.clucky.filter.MyFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>myFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

过滤器的生命周期:

初始化阶段:当服务器启动时,Tomcat就会读取配置文件,扫描注解,然后来创建我们的Filter。
拦截和过滤阶段:只要请求资源的路径和拦截的路径相同,那么过滤器就会对请求进行过滤,这个阶段在服务器运行过程中会一直循环。
销毁阶段:Tomcat关闭时,服务器创建的Filter也会随之销毁。

三、监听器

 监听器的主要功能是监听web容器的有效事件,他由容器进行管理。其监听的事件有上下文事件、会话事件以及请求事件。

上下文事件:ServletContext对象的创建、删除和派加属性以及删除和修改操作

会话事件:监听http会话

请求事件:获取请求,统一处理请求

servlet3.0中的监听接口

作用域 实例对象监听器
applicationServletContextServletContextListener
session HttpSessionHttpSessionListener
request HttpServletRequestServletRequestListener

监听对象的监听器:

ServletContextListener:用于监听 ServletContext 对象的创建和销毁

HttpSessionListener:用于监听 HttpSession 对象的创建和销毁

ServletRequestListener:用于监听 ServletRequest 对象的创建和销毁

 实现ServletContextListener监听器类,并进行配置

xml配置代码如下:

 <listener>
        <listener-class>pacakge.xx</listener-class>
        </listener>
    
        <context-param>
         <param-name>ResourceLocation</param-name>
         <param-value>\text.txt</param-value>
        </context-param>

 注解配置使用@WebListener进行配置即可。

总结:本篇博客是对于Java web三大组件的一次大致总结,对于其具体的运用,可能要在之后的war包学习和实战中才能更加深入地进行理解。

我们下一篇博客见,bye~

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值