day01-Tomcat框架分析

引入课程和Maven

1.Maven

maven中央仓库:Maven Repository: Search/Browse/Explore (mvnrepository.com)

maven仓库是国外的一个网站,由于网络问题,我们也常使用maven仓库的镜像

maven的原理和java程序操作数据库,然后数据库返回相关数据类似。

day01-Tomcat框架分析day01-Tomcat框架分析

1.1创建maven-web项目

  1. 先创建一个Maven的Web项目 选择file-new-projectday01-Tomcat框架分析
  2. 在弹出的窗口中选择Maven,点击选择右边的create from archetypeday01-Tomcat框架分析
  3. 在下面选择maven-archetype-webapp,然后点击nextday01-Tomcat框架分析
  4. 输入相关数据,点击nextday01-Tomcat框架分析
  5. 指定项目使用的maven程序(第一次使用可以先不指定2和3,稍后再指定),点击finish day01-Tomcat框架分析
  6. 默认创建的项目结构如下:day01-Tomcat框架分析
  7. 点击项目左上角的file-setting,在弹出的窗口中点击build,execution,deployment,再选择mavenday01-Tomcat框架分析
  8. 在右边的maven home path框中,选择默认的或者你自己下载的maven程序(我这里选择默认)day01-Tomcat框架分析
  9. 在资源管理器中打开该上面的目录,将conf下的setting.xml文件复制到c盘用户目录的m2.目录下day01-Tomcat框架分析day01-Tomcat框架分析
  10. 打开复制后的setting.xml文件,找到mirror标签,注释掉原来的mirror镜像 day01-Tomcat框架分析 添加新镜像如下:

      alimaven
      aliyun
      https://maven.aliyun.com/nexus/content/groups/public
      central

  1. 返回idea的窗口中,选择刚才配置的xml文件和要存储下载的jar包的目录,点击override,点击ok 这样就完成了maven的镜像配置day01-Tomcat框架分析
  2. 在项目的pom.xml文件中添加配置 在dependency元素中添加配置如下:

         javax.servlet
         javax.servlet-api
         3.1.0
         provided

  1. 点击右边的Maven,点击循环按钮,开始下载依赖day01-Tomcat框架分析
  2. 下载完毕后,可以在配置的下载目录中看到该依赖:

    下一次如果要使用依赖,就会先到下载目录下去找该依赖。

    day01-Tomcat框架分析

2.测试小案例

编写如下的测试案例

day01-Tomcat框架分析

创建java目录,存放源文件

day01-Tomcat框架分析

创建Servlet(如果选项中没有Servlet,点击右边的maven,重新导一下包)

day01-Tomcat框架分析

在web.xml文件中配置Servlet(使用注解也可以)


    CalServlet
    com.li.servlet.CalServlet

    CalServlet
    /calServlet

编写程序

WebUtils:

package com.li.utils;

public class WebUtils {
    /**
     * 将一个字符串数字转成int,如果转换失败,就返回传入的defaultVal
     *
     * @param strNum
     * @param defaultVal
     * @return
     */
    public static int parseInt(String strNum, int defaultVal) {
        try {
            return Integer.parseInt(strNum);
        } catch (NumberFormatException e) {
            System.out.println(strNum + "输入的格式错误");
        }
        return defaultVal;
    }
}

CalServlet:

package com.li.servlet;

import com.li.utils.WebUtils;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;

public class CalServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //接收提交的数据进行计算
        String strNum1 = request.getParameter("num1");
        String strNum2 = request.getParameter("num2");

        //把strNum1和strNum2转成int类型
        int num1 = WebUtils.parseInt(strNum1, 0);
        int num2 = WebUtils.parseInt(strNum2, 0);
        int result = num1 + num2;

        response.setContentType("text/html;charset=utf-8");
        PrintWriter writer = response.getWriter();
        writer.print("" + num1 + "+" + num2 + "=" + result + "");
        writer.flush();
        writer.close();
    }
}

cal.html:


    计算器

计算器

    num1:
    num2:

配置Tomcat(注意application context的配置)

day01-Tomcat框架分析

点击运行tomcat,在浏览器地址栏中输入: http://localhost:8080/cal.html,显示页面如下:

day01-Tomcat框架分析

输入数据,点击提交:

day01-Tomcat框架分析 day01-Tomcat框架分析

2.Tomcat整体项目架构分析

我们创建web项目,都要依赖于Tomcat等web服务以及实现继承Servlet接口。

可以看出对Tomcat的底层机制和调用到Servlet的流程的理解是十分重要的。

现在我们来 模拟Tomcat底层实现,并能调用我们自己设计的Servlet,完成相同的功能。

说明:Tomcat有三种运行模式(BIO,NIO,APR),因为 核心讲解的是Tomcat如何接受客户端请求,解析请求,调用Servlet,并返回结果的流程机制,因此采用BIO线程模型来模拟。

day01-Tomcat框架分析

整个流程如下:

  1. 浏览器在地址栏输入请求的URL,发送http请求
  2. http请求到达Tomcat后,底层的socket网络编程会接收这个请求,创建一个线程(每一个请求对应一个线程)
  3. 被创建的线程就会去解析这个URL是什么请求,如果是请求Servlet资源,就去调用Servlet(底层会用反射实例化);如果调用的是静态资源,就直接返回

Original: https://www.cnblogs.com/liyuelian/p/16893932.html
Author: 一刀一个小西瓜
Title: day01-Tomcat框架分析

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/798535/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球