JavaWeb的三大核心组件

文章目录

  • 前言
  • 一、Servlet组件
  • 二、Filter组件
    • 1.概念:
    • 2.快速入门
    • 3.过滤器细节
      • 1.执行流程
      • 2.过滤器生命周期方法
      • 3.过滤器的配置详解
      • 4.增强对象的功能的设计模式
  • 三、Listener组件
    • 1.概念
    • 2.事件监听机制:
    • 3.ServletContextListener监听对象
  • 总结


前言

我们来浅尝一些JavaWeb的三大组件中的Filter组件和Listener组件,对它们有着一个清晰的认知。Listener组件并不常用所有内容不会很多。Servlet组件则在下方有该篇文章的链接,有兴趣可以去看一下。


提示:以下是本篇文章正文内容,下面案例可供参考

一、Servlet组件

Servlet的讲解(点击跳转到Servlet的组件)

二、Filter组件

1.概念:

Filter也叫过滤器。
web中过滤器:
	当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊 功能。
过滤器的作用:
	一般用于完成通用的操作:登录验证、统一编码处理、敏感字符过滤……

2.快速入门

编写过滤器步骤

  1. 定义一个类,实现接口Filter
  2. 复写方法
  3. 配置拦截路径:两种配置方式
    3.1:web.xml配置
 <filter>
             <filter-name>demo1</filter-name>
             <filter-class>cn.itcast.web.filter.FilterDemo1</filter-class>
         </filter>
         <filter-mapping>
             <filter-name>demo1</filter-name>                            //拦截路径
             <url-pattern>/*
         

3.2:注解配置:@WebFilter("/*")//访问所有资源之前都要执行该过滤器

具体代码例子:

package cn.itcast.web.filter;/*
    zhanghao(java文件)
    Filter快速入门
*/

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter("/*")//访问所有资源之前都要执行该过滤器
public class FilterDemo1 implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("filterDemo1被执行了……");

        //考虑是否放行
        //放行
        filterChain.doFilter(servletRequest,servletResponse);
    }

    @Override
    public void destroy() {

    }
}

3.过滤器细节

1.执行流程

1.执行过滤器
2.执行放行后的资源
3.回来执行过滤器放行代码下边的代码

2.过滤器生命周期方法

  1. 在服务器启动后会创建filter对象,调用init方法 只执行一次 加载资源。
  2. 每一次被请求拦截资源时,会执行多次 。
  3. 在服务器关闭后,被销毁。如果服务器是正常关闭,则会执行destroy方法 只执行一次 释放资源。

3.过滤器的配置详解

  1. 拦截路径配置:
    具体资源路径:/index.jsp :只有访问index.jsp资源时,过滤器才会被执行。
    拦截目录: /user/* :访问/user下的所有资源时,过滤器都会被执行。
    后缀名: .jsp :访问所有后缀名为 jsp资源时,过滤器都会被执行。
    拦截所有资源: /
    :访问所有资源时,过滤器都会被执行。
  2. 拦截方式配置
     属性:
      注解配置:设置dispatcherTypes属性
       REQUEST:默认值。浏览器直接请求资源。
       FORWARD:转发来访问资源。
       INCLUDE:包含访问资源。
       ERROR:错误跳转资源。
       ASYNC:异步访问资源。
      web.xml配置:设置dispatcherTypes属性
       属性值与注解配置属性一致。

4.增强对象的功能的设计模式

设计模式:一些通用的解决固定问题的方式。
	1. 装饰模式
	2. 代理模式的概念:
		真实对象:被代理的对象。
		代理对象:
		代理模式:代理对象代理真实对象,达到增强真实对象功能的目的。
	代理模式的实现方式:
			静态代理:有一个类文件描述代理模式。
			动态代理:在内存中形成代理类。
			实现步骤:
				代理对象和真实对象实现相同的接口
				代理对象  =  Proxy.newProxyInstance();
				使用代理对象调用方法。
				增强方法
			增强方式:
				增强参数列表
				增强返回值类型
				增强方法体执行

三、Listener组件

1.概念

也叫监听器。

2.事件监听机制:

事件:一件事
事件源:事件发生的地方
监听器:一个对象
注册监听:将事件、事件源、监听器绑定在一起。当事件源上发生某个事件后,执行监听器代码

3.ServletContextListener监听对象

  1. 监听:ServletContext对象的创建和销毁
  2. 方法:
      void contextDestroyed(ServletContextEvent sce):ServletContext对象被销毁之前会调用该方法。
      void contextInitialized(ServletContextEvent sce):
    ServletContext对象被创建之前会调用该方法
  3. 步骤:
      定义一个类,实现ServletContextListener
      复写方法
      配置
    web.xml配置
listener>
        <listener-class>cn.itcast.listener.ContextLoaderListener</listener-class>
    </listener>
				指定初始化参数:
					 <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/classes/applicationContext</param-value>
    </context-param>

注解配置:@WebListener

总结

JavaWeb三大组件是JavaWeb开发工程中非常重要元素,构成了整个项目的框架内容。

你可能感兴趣的:(JavaWeb三大组件,学习)