JavaBean、MVC、Filter和Listener

发布时间 2023-06-30 15:12:16作者: 云归处、

JavaBean、MVC、Filter和Listener

JavaBean

JavaBean 是一种JAVA语言写成的可重用组件。

实体类(pojo)。

JavaBean有特殊的写法:

  • 必须要有一个无参构造
  • 属性必须私有
  • 必须要对应的set/get方法

本质就是一个java类

一般用来和数据库字段做映射

ORM:对象关系映射

  • 表--->类
  • 字段--->属性
  • 行记录--->对象
package pojo;

public class People {
    private int id;
    private  String name;
    private  int age;
    private  String address;

    public People() {
    }

    public People(int id, String name, int age, String address) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.address = address;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "People{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", address='" + address + '\'' +
                '}';
    }
}

MVC三层架构

MVC:Model模型,View视图,Controller控制器

MVC是一种架构模式,是一种软件设计规范,是将业务逻辑、数据、显示分离的方法来组织代码。

  • Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据Dao) 和 服务层(行为Service)。也就是该模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。
  • View(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。
  • Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。

MVC有多种。

最典型的MVC 就是 J S P + s e r v l e t + j a v a b e a n 的模式

早期架构:

用户直接访问控制层,控制层直接访问数据库

弊端:过于臃肿,不利于维护

经典的MVC三层架构:

Filter

Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。

用来过滤网站的数据。

Filter开发步骤:

  1. 导包。除了上面的依赖,如果需要连接mysql还要导入mysql依赖
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.28</version>
</dependency>
  1. 编写过滤器

    注意:实现的Filter一定是servlet包的Filter
    public class MyFilter implements Filter{
    //    初始化:服务器启动
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            System.out.println("已经初始化");
        }
    //    动作
        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            //        解决乱码问题
            request.setCharacterEncoding("UTF-8");
            response.setCharacterEncoding("UTF-8");
            response.setContentType("text/html;charset=utf-8");
    
            System.out.println("过滤器执行前.....");
            chain.doFilter(request,response);//将参数传给下一个过滤器,chain过滤器链
            System.out.println("过滤器执行后.....");
    
    
        }
    //    销毁:服务器关闭
        @Override
        public void destroy() {
            System.out.println("已经销毁");
        }
    }
    
  2. 在web.xml中配置过滤器

            <filter>
                <filter-name>MyFilter</filter-name>
                <filter-class>Filter.MyFilter</filter-class>
            </filter>
            <filter-mapping>
                <filter-name>MyFilter</filter-name>
    <!--            只要是url :/hello的任何请求都会经过过滤器-->
            <url-pattern>/hello/*</url-pattern>
            </filter-mapping>
    

通过这样的例子,因为filter 所以/hello路径下的没有乱码,其他的中文依旧乱码

Listener

  1. 实现一个监听器的接口:有一堆监听接口什么鼠标事件、键盘事件等等

    public class MyFilter implements HttpSessionListener{
    //    session创建触发
        @Override
        public void sessionCreated(HttpSessionEvent se) {
    
        }
    //    session销毁触发
        @Override
        public void sessionDestroyed(HttpSessionEvent se) {
    
        }
    }
    
  2. 在web.xml中注册:

    <listener>
        <listener-class>servlet.MyFirstServlet</listener-class>
    </listener>