JavaWeb 第三章 Servlet+MVC+三层架构

第三章 Servlet和三层架构

      • 一、Servlet
          • 1. 概念
          • 2. 使用步骤
          • 2.执行流程
          • 3. Servlet生命周期
          • 5. servlet体系结构
          • 6.urlPattern配置
      • 二、MVC模式和三层架构
          • 1. MVC模式
          • 2. 三层架构
          • 3. 框架扩展
          • 4.三层架构和MVC区别
      • 三、案例-完成品牌数据的增删改查

一、Servlet

1. 概念

JavaWeb 第三章 Servlet+MVC+三层架构_第1张图片

2. 使用步骤

JavaWeb 第三章 Servlet+MVC+三层架构_第2张图片
JavaWeb 第三章 Servlet+MVC+三层架构_第3张图片
方法一:配置xml

public class ServletDemo1 extends HttpServlet {
	@Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        System.out.println("hello");
    }
}

配置web.xml


    <servlet>

        <servlet-name>demo1servlet-name>

        <servlet-class>cn.tedu.ServletDemo1servlet-class>
    servlet>

    <servlet-mapping>
        <servlet-name>demo1servlet-name>

        <url-pattern>/ServletDemo1url-pattern>
    servlet-mapping>

方法二:使用注解(使用了注解就不需要配置xml文件了,注解中参数相当于xml文件的url-pattern)

@WebServlet("/ServletDemo2")
public class ServletDemo2 extends HttpServlet {
     @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        System.out.println("hello");
    }
}

执行原理

具体的流程,当用户单击 index.jsp 中的“提交”按钮后,程序发现 action 请求地址是/ServletDemo1 ,然后就会在 web.xml 中 内的 里匹配/ServletDemo1 (检查 action 的值是否与url-pattem>中的值一致)。如果匹配成功,就会根据值 welcome 再去匹配中的值(检查中的值一致)。如果仍然匹配成功,就会去执行中的里面的 Servlet 实现类 (如cn.tedu.ServletDemo1)。最后再根据请求方式来决定执行 Servlet 实现类中的doGe()或者 doPast()方法

2.执行流程

JavaWeb 第三章 Servlet+MVC+三层架构_第4张图片

3. Servlet生命周期

JavaWeb 第三章 Servlet+MVC+三层架构_第5张图片
加载和实例化: 在这里插入图片描述

// urlPatterns可以写成value 效果一样
@WebServlet(urlPatterns="/ServletDemo3",loadOnStartup = 1)
public class ServletDemo3 extends HttpServlet {
    @Override
    /**
     * 初始化方法
     * 调用时机:默认情况下,servlet被访问时调用一次
     *          通过属性配置,修改调用实际 loadOnStartup:
     * 调用次数:1次
     */
    public void init() throws ServletException {
        System.out.println("init~~~~");;
    }

    /**
     * 提供服务
     * 调用时机:每一次servlet被访问时调用
     * 调用次数:多次
     *
     */
    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        System.out.println("hello servlet");
    }

    /**
     * 销毁方法
     * 调用时机:(两种情况)
        内存释收或者服务器关闭的时候,servlet对象会被销毁
     * 调用次数: 1次
     * 重启一下服务器就可以
     */

    @Override
    public void destroy() {
        System.out.println("destroy~~~");
    }
}

另外一个方法

@WebServlet(urlPatterns="/ServletDemo3",loadOnStartup = 1)
public class ServletDemo4 extends HttpServlet {
    private ServletConfig config;
    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println("init~~~~");;
    }

    @Override
    public ServletConfig getServletConfig() {
        return config;
    }
}
5. servlet体系结构

JavaWeb 第三章 Servlet+MVC+三层架构_第6张图片
1. HttpServlet

**通过jsp想servlet动态提交数据**
```javascript
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>post</title>
</head>
<body>
<!-- 注意提交路径一定是web工程下的路径才能找到-->
<form action="/javaweb_war_exploded/ServletDemo2" method="post">
	input
    <input type="submit" value="提交">
</form>
</body>
</html>

思考

JavaWeb 第三章 Servlet+MVC+三层架构_第7张图片

6.urlPattern配置

JavaWeb 第三章 Servlet+MVC+三层架构_第8张图片

JavaWeb 第三章 Servlet+MVC+三层架构_第9张图片

二、MVC模式和三层架构

1. MVC模式

JavaWeb 第三章 Servlet+MVC+三层架构_第10张图片
控制器(serlvlet)用来接收浏览器发送过来的请求,控制器调用模型(JavaBean)来获取数据,比如从数据库查询数据;控制器获取到数据后再交由视图(JSP)进行数据展示。
JavaWeb 第三章 Servlet+MVC+三层架构_第11张图片

2. 三层架构

JavaWeb 第三章 Servlet+MVC+三层架构_第12张图片

数据访问层:对数据库的CRUD基本操作
业务逻辑层:对业务逻辑进行封装,组合数据访问层层中基本功能,形成复杂的业务逻辑功能。例如 注册业务功能 ,我们会先调用 数据访问层 的 selectByName() 方法判断该用户名是否存在,如果不存在再调用 数据访问层 的 insert() 方法进行数据的添加操作
表现层:接收请求,封装数据,调用业务逻辑层,响应数据

而整个流程是,浏览器发送请求,表现层的Servlet接收请求并调用业务逻辑层的方法进行业务逻辑处理,而业务逻辑层方法调用数据访问层方法进行数据的操作,依次返回到serlvet,然后servlet将数据交由 JSP 进行展示

三层架构的每一层都有特有的包名称:
表现层: com.itheima.controller 或者 com.itheima.web
业务逻辑层:com.itheima.service
数据访问层:com.itheima.dao 或者 com.itheima.mapper

JavaWeb 第三章 Servlet+MVC+三层架构_第13张图片

3. 框架扩展

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/dfc82cfd84784cabbd3b744be8a0a20e.png

4.三层架构和MVC区别

JavaWeb 第三章 Servlet+MVC+三层架构_第14张图片
如上图上半部分是 MVC 模式,上图下半部分是三层架构。 MVC 模式 中的 C(控制器)和 V(视图)就是 三层架构 中的表现层,而 MVC 模式 中的 M(模型)就是 三层架构 中的 业务逻辑层 和 数据访问层。

可以将 MVC 模式 理解成是一个大的概念,而 三层架构 是对 MVC 模式 实现架构的思想。 那么我们以后按照要求将不同层的代码写在不同的包下,每一层里功能职责做到单一,将来如果将表现层的技术换掉,而业务逻辑层和数据访问层的代码不需要发生变化

三、案例-完成品牌数据的增删改查

JavaWeb 第三章 Servlet+MVC+三层架构_第15张图片
准备工作
JavaWeb 第三章 Servlet+MVC+三层架构_第16张图片
1. 准备数据库

DROP DATABASES javaweb2306;
CREATE DATABASE javaweb2306 CHARSET="UTF8";
DROP TABLE tb_brand;
CREATE TABLE tb_brand(
    id INT PRIMARY KEY AUTO_INCREMENT,
    brand_name  VARCHAR(48),
    company_name VARCHAR(48),
    ordered   INT,
    description CHAR(255),
    sta INT
);
INSERT INTO tb_brand(id,brand_name,company_name,ordered,description,sta) VALUE(1,"三只松鼠","三只松鼠",100,"三只松鼠,好吃不上火",1)
INSERT INTO tb_brand(id,brand_name,company_name,ordered,description,sta) VALUE(2,"优衣库","优衣库",200,"优衣库,服适人生",0)
INSERT INTO tb_brand(id,brand_name,company_name,ordered,description,sta) VALUE(3,"小米","小米科技有限公司",1000,"为发烧而生",1)

2. 创建结构模块

作用:
web:web相关的包
service:服务器
dao:操作数据库的模块
pojo:放实体类
util:放工具类

JavaWeb 第三章 Servlet+MVC+三层架构_第17张图片

你可能感兴趣的:(JAVAWEB应用开发,servlet,mvc,架构)