当前位置:   article > 正文

JAVAWEB学习(五)MVC三层框架,过滤器Filter_业务过滤器层

业务过滤器层

1.什么是MVC
Model,Views,Contraller 模型,视图,控制器
2.1 早些年
在这里插入图片描述

用户直接访问控制层,控制层就可以直接操作数据库;

  1. servlet–CRUD–>数据库
  2. 弊端:程序十分臃肿,不利于维护
  3. servlet的代码中: 处理请求、响应、视图跳转、 处理JDBC、处理业务代码、处理逻辑代码
  4. 架构:没有什么是加-层解决不了的!

2.2 MVC三层架构
在这里插入图片描述
Model

  • 业务处理:业务逻辑(Service)
  • 数据持久层: CRUD (Dao)

View

  • 展示数据
  • 提供链接发起Servlet请求(a, form, img…)

Controller (Servlet)

  • 接收用户的请求: (req: 请求参数、Session信息…
  • 交给业务层处理对应的代码
  • 控制视图的跳转
登录---> 接收用户的登录请求--->处理用户的请求(获取用户登录的参数,username, password) ---->交
给业务层处理登录业务(判断用户名密码是否正确:事务) --->Dao层 查询用户名和密码是否正确-->数据库
  • 1
  • 2

3.1. 什么是过滤器Filter ?

  • Filter 过滤器它是 JavaWeb 的三大组件之一。
  • 三大组件分别是:Servlet 程序、Listener 监听器、Filter 过滤器
  • Filter 过滤器它是 JavaEE 的规范。也就是接口
  • Filter 过滤器它的作用是:拦截请求,过滤响应。

拦截请求常见的应用场景有:
1.权限检查 2.日记操作 3.事务管理 ……等等
在这里插入图片描述
3.2 Filter 过滤器的使用

  • 编写一个类去实现 Filter接口,导包不要错(javax.servlet)
  • 实现过滤方法 doFilter()
  • 到 web.xml 中去配置 Filter 的拦截路径

1)精确匹配

<filter-mapping>
    <filter-name>Filter2</filter-name>
    <url-pattern>/target.jsp</url-pattern>  <!--精确匹配-->
</filter-mapping>
  • 1
  • 2
  • 3
  • 4

以上配置的路径,表示请求地址必须为:http://ip:port/工程路径/target.jsp
2)目录匹配

<filter-mapping>
    <filter-name>Adminfilter</filter-name>
    <url-pattern>/admin/*</url-pattern> <!--目录匹配-->
</filter-mapping>
  • 1
  • 2
  • 3
  • 4

以上配置的路径,表示请求地址必须为:http://ip:port/工程路径/admin/*

3)后缀名匹配

<filter-mapping>
    <filter-name>Filter2</filter-name>
    <url-pattern>*.action</url-pattern>  <!--后缀名匹配-->
</filter-mapping>
  • 1
  • 2
  • 3
  • 4

以上配置的路径,表示请求地址必须以.action 结尾才会拦截到

3.3 Filter 的生命周期
Filter 的生命周期包含几个方法

1). 构造器方法
2). init 初始化方法

第 1,2 步,在 web 工程启动的时候执行(Filter 已经创建)

3).doFilter 过滤方法
.第 3 步,每次拦截到请求,就会执行(访问一次,拦截一次请求)
4).destroy 销毁
第 4 步,停止 web 工程的时候,就会执行(停止 web 工程,也会销毁 Filter 过滤器)

3.4 FilterConfig 类

FilterConfig 类是 Filter 过滤器的配置文件类。
Tomcat 每次创建 Filter 的时候,也会同时创建一个 FilterConfig 类,这里包含了 Filter 配置文件的配置息。

FilterConfig 类的作用是获取 filter 过滤器的配置内容

  • 获取 Filter 的名称 filter-name 的内容
  • 获取在 Filter 中 wen.xml 配置的 init-param 初始化参数
  • 获取 ServletContext 对象
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("2.Filter 初始化方法 init(FilterConfig filterConfig)");

//        1. 获取 Filter 的名称 filter-name 的内容 (web-xml 中配置的名称)
        System.out.println("filter-name:" + filterConfig.getFilterName());
//        2. 获取在 web.xml 中配置的 init-param 初始化参数
        System.out.println("初始化参数username的值是:" + filterConfig.getInitParameter("username"));
        System.out.println("初始化参数url的值是:" + filterConfig.getInitParameter("url"));
//        3. 获取 ServletContext 对象
        System.out.println(filterConfig.getServletContext());

    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

3.5FilterChain 过滤器链

FilterChain 就是过滤器链,多个过滤器如何一起工作?

  • 在多个 Filter 过滤器执行的时候,他们的优先顺序是由他们在 web.xml 中从上到下配置的顺序决定的!
  • 所有filter和目标资源默认都执行同一个线程中
  • 多个Filter过滤器同时执行的时候,他们都要使用同一个Request对象

FilterChain.doFilter() 方法的作用:

  • 执行下一个Filter过滤器(如果有Filter)
  • 执行目标资源
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/编程变革者/article/detail/61345
推荐阅读
相关标签
  

闽ICP备14008679号