Javaweb三大组件——Servlet、Filter、Listener

Servlet

概念

Servlet是Java提供的一门动态web资源开发技术,是JavaEE规范之一,其实就是一个接口,将来我们需要定义Servlet类实现Servlet接口,并由web服务器(如:tomcat,jetty)运行Servlet

 

使用

1、创建web项目,导入Servlet依赖坐标

<dependency>
<groupld>javax.servlet</groupld>
<artifactld>javax.servlet-api</artifactld>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>

2、 创建:定义一个类,实现Servlet接口,并重写接口中所有方法,并在service方法中输入一句话

public class ServletDemo1 implements Servlet {
       public void service(){}
}

3、配置:在类上使用@WebServlet注解,配置该Servlet的访问路径

@WebServlet("/demo1")
public class ServletDemo1 implements Servlet {


}

4\访问:启动Tomcat,浏览器输入URL访问该Servlet

//web-demo为项目名称,demo1为第三部配置的访问路径

http ://localhost:8080/web-demo/demo1 

执行流程

生命周期

生命周期是指一个对象从创建到被销毁的整个过程

Servlet运行在Servlet容器(web服务器)中,其生命周期由容器来管理,分为4个阶段:

1.加载和实例化:默认情况下,当Servlet第一次被访问时,由容器创建Servlet对象

2.初始化:在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象,完成一些如
加载配置文件、创建连接等初始化的工作。该方法只调用一次

3.请求处理:每次请求Servlet时,Servlet容器都会调用Servlet的service()方法对请求进行处理。

4.服务终止:当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()方法完成
资源的释放。在destroy()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的
垃圾收集器所回收
 

HttpServlet

我们将来开发B/S架构的web项目,都是针对HTTP协认,所以我们自定义Servlet,会继承HttpServlet

@WebServlet("/demo4")
public class ServletDemo4 extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp){

        //TODO Get 请求方式处理逻辑

}
    @Override
    protected void doPost (HttpServletRequest req, HttpServletResponse resp){

        //TODO Post 请求方式处理逻辑

}

}

HttpServlet会根据请求方式的不同,调用不同的方法。

Filter

概念

Filter表示过滤器,是JavaWeb三大组件(Servlet、Filter、Listener)之一。

过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。

过滤器一般完成一些通用的操作,比如:权限控制、统一编码处理、敏感字符处理等等…

使用

1、定义类,实现Filter接口,并重写其所有方法

public class FilterDemo implements Filter {

    public void init(FilterConfig filterConfig){}
    public void doFilter(ServletRequest request){}
    public void destroy() {}

}

2、配置Filter拦截资源的路径:在类上定义@WebFilter注解

@WebFilter("/*")
public class FilterDemo implements Filter {

}

4、在doFilter方法中书写放行前要执行的逻辑代码,并放行

public void doFilter(ServletRequest request, ServletRequest response){
    
    //放行前要执行的代码
    //放行
    chain.doFilter(request,response);

}
执行流程

1.放行后访问对应资源,资源访问完成后,还会回到Filter中吗?

2. 如果回到Filter中,是重头执行还是执行放行后的逻辑呢?放行后逻辑

拦截路径

Filter可以根据需求,配置不同的拦截资源路径

@WebFilter("/*")//拦截所有资源

拦截具体的资源/index.jsp:只有访问index.jsp时才会被拦截。

目录拦截 /user/ *: 访问/user下的所有资源,都会被拦截

后缀名拦截* jsp:访问后缀名为jsp的资源,都会被拦截

拦截所有/ *: 访问所有资源,都会被拦截

PS:一个Web应用,可以配置多个过滤器,这多个过滤器称为过滤器链。

注解配置的Filter,优先级按照过滤器类名(字符串)的自然排序

Listener

概念

Listener 表示监听器,是JavaWeb三大组件(Servlet、Filter、Listener)之一。

监听器可以监听就是在application,session,request三个对象创建、销毁或者往其中添加修改删除
属性时自动执行代码的功能组件

Listener分类:JavaWeb中提供了8个监听器

使用

1、定义类,实现ServletContextListener接口

public class ContextLoaderListener implements ServletContextListener {
/ **

* ServletContext对象被创建:整个web应用发布成功
* @param sce

*/

public void contextInitialized(ServletContextEvent sce) {}
/ **
* ServletContext对象被销毁:整个web应用卸载
* @param sce
*/
public void contextDestroyed(ServletContextEvent sce) {}

}

2、在类上添加@WebListener 注解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值