位置: IT常识 - 正文

day01-Tomcat框架分析(tomcat结构图)

编辑:rootadmin
引入课程和Maven 1.Maven maven中央仓库:Maven Repository: Search/Browse/Explore (mvnrepository.com) maven仓库是国外的一个网站,由于网络问题,我们也常使用maven仓库的镜像 maven的原理和java程序操作数据库, ... 引入课程和Maven1.Maven

推荐整理分享day01-Tomcat框架分析(tomcat结构图),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:tomcat项目结构,tomcat架构与原理解析,tomcat模块,tomcat结构图,tomcat项目结构,tomcat架构与原理解析,tomcat 框架,tomcat架构与原理解析,内容如对您有帮助,希望把文章链接给更多的朋友!

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

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

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

1.1创建maven-web项目

先创建一个Maven的Web项目

选择file-new-project

在弹出的窗口中选择Maven,点击选择右边的create from archetype

在下面选择maven-archetype-webapp,然后点击next

输入相关数据,点击next

指定项目使用的maven程序(第一次使用可以先不指定2和3,稍后再指定),点击finish

默认创建的项目结构如下:

点击项目左上角的file-setting,在弹出的窗口中点击build,execution,deployment,再选择maven

在右边的maven home path框中,选择默认的或者你自己下载的maven程序(我这里选择默认)

在资源管理器中打开该上面的目录,将conf下的setting.xml文件复制到c盘用户目录的m2.目录下

打开复制后的setting.xml文件,找到mirror标签,注释掉原来的mirror镜像

添加新镜像如下:

<mirror> <id>alimaven</id> <name>aliyun</name> <url>https://maven.aliyun.com/nexus/content/groups/public</url> <mirrorOf>central</mirrorOf> </mirror>

返回idea的窗口中,选择刚才配置的xml文件和要存储下载的jar包的目录,点击override,点击ok

day01-Tomcat框架分析(tomcat结构图)

这样就完成了maven的镜像配置

在项目的pom.xml文件中添加配置

在dependency元素中添加配置如下:

<!--引入Servlet.jar--> <!--1.为了开发servlet,需要引入其jar包 2.dependency 表示引入一个包 3.groupId 表示包的开发公司/组织/个人 的信息 javax.servlet 4.artifactId 表示包的项目名称 javax.servlet-api 补充:groupId+artifactId是以目录形式体现 5.version 表示该包当前的版本 6.scope 表示引入的包的作用范围 7.provided 表示 这里你引入的jar包,在编译,测试有效,但是在打包发布的时候,不要带上这个jar包 (因为Tomcat本身有jar包) 8.下载的包在你指定的目录中 9.可以去修改我们要下载的目录位置 10.可以去指定maven仓库,即配置maven镜像 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency>

点击右边的Maven,点击循环按钮,开始下载依赖

下载完毕后,可以在配置的下载目录中看到该依赖:

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

2.测试小案例

编写如下的测试案例

创建java目录,存放源文件

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

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

<servlet> <servlet-name>CalServlet</servlet-name> <servlet-class>com.li.servlet.CalServlet</servlet-class></servlet><servlet-mapping> <servlet-name>CalServlet</servlet-name> <url-pattern>/calServlet</url-pattern></servlet-mapping>

编写程序

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("<h1>" + num1 + "+" + num2 + "=" + result + "</h1>"); writer.flush(); writer.close(); }}

cal.html:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>计算器</title></head><body><h1>计算器</h1><!--这里的路径是浏览器要解析的,因此如果写成/calServlet的话,就会解析成http://主机名/calServlet 想要这样配置的话,tomcat的路径就不要写项目名了--><form action="/calServlet" method="post"> num1:<input type="text" name="num1"/><br/> num2:<input type="text" name="num2"/><br/> <input type="submit" value="提交"></form></body></html>

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

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

输入数据,点击提交:

2.Tomcat整体项目架构分析

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

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

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

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

整个流程如下:

浏览器在地址栏输入请求的URL,发送http请求http请求到达Tomcat后,底层的socket网络编程会接收这个请求,创建一个线程(每一个请求对应一个线程)被创建的线程就会去解析这个URL是什么请求,如果是请求Servlet资源,就去调用Servlet(底层会用反射实例化);如果调用的是静态资源,就直接返回
本文链接地址:https://www.jiuchutong.com/zhishi/311760.html 转载请保留说明!

上一篇:phpcms 2008安装报错怎么办(php安装步骤)

下一篇:phpcms缩略图不要自动裁剪的设置方法

  • 一个地址可以注册几个公司必须满足以下要求

    一个地址可以注册几个公司必须满足以下要求

  • 微博营销该怎样去做?(微博营销的技巧)

    微博营销该怎样去做?(微博营销的技巧)

  • 提升网站四倍流量的外链引流技巧(提升网站四倍流量的方法)

    提升网站四倍流量的外链引流技巧(提升网站四倍流量的方法)

  • oppo手机来电显示在哪里设置(oppo手机来电显示全屏怎么设置)

    oppo手机来电显示在哪里设置(oppo手机来电显示全屏怎么设置)

  • 荣耀30pro是几个颜色(荣耀30pro几个送话器)

    荣耀30pro是几个颜色(荣耀30pro几个送话器)

  • 爱奇艺怎么取消续费(爱奇艺怎么取消自动续费微信)

    爱奇艺怎么取消续费(爱奇艺怎么取消自动续费微信)

  • 主板上4pin风扇接口不够用(主板上4pin风扇接口)

    主板上4pin风扇接口不够用(主板上4pin风扇接口)

  • 被屏蔽的人知道自己被屏蔽了吗(被屏蔽的人知道自己被屏蔽了吗QQ)

    被屏蔽的人知道自己被屏蔽了吗(被屏蔽的人知道自己被屏蔽了吗QQ)

  • ios14哪些机型升不了(iphone14可能的升级)

    ios14哪些机型升不了(iphone14可能的升级)

  • 腾讯会议的会议内容可以看回放吗(腾讯会议的会议记录能保存多久)

    腾讯会议的会议内容可以看回放吗(腾讯会议的会议记录能保存多久)

  • 百家号审核多久(百家号审核要多长时间)

    百家号审核多久(百家号审核要多长时间)

  • 抖音超级乐迷怎么得(抖音超级乐迷是什么)

    抖音超级乐迷怎么得(抖音超级乐迷是什么)

  • 苹果手机扩大内存对手机有影响吗(苹果手机扩大内存还好用吗)

    苹果手机扩大内存对手机有影响吗(苹果手机扩大内存还好用吗)

  • 傲腾增强型ssd和普通ssd区别(ssd加傲腾)

    傲腾增强型ssd和普通ssd区别(ssd加傲腾)

  • ios12有暗黑模式吗(ios12使用暗黑模式)

    ios12有暗黑模式吗(ios12使用暗黑模式)

  • ipad2怎么删照片(ipad2的照片怎样删除)

    ipad2怎么删照片(ipad2的照片怎样删除)

  • 小米cc9e支持快充吗(小米cc9支持快充)

    小米cc9e支持快充吗(小米cc9支持快充)

  • 手机开发者模式是什么意思(手机开发者模式利弊)

    手机开发者模式是什么意思(手机开发者模式利弊)

  • 苹果手机怎么改微信提示音(苹果手机怎么改时间和日期)

    苹果手机怎么改微信提示音(苹果手机怎么改时间和日期)

  • oppoa11x怎么更改系统时间(oppo手机怎么更改密码方式)

    oppoa11x怎么更改系统时间(oppo手机怎么更改密码方式)

  • 抖音怎么开店卖东西(抖音怎么开店卖茶)

    抖音怎么开店卖东西(抖音怎么开店卖茶)

  • ios13怎么截图全屏(ios13.5怎么截图)

    ios13怎么截图全屏(ios13.5怎么截图)

  • 快手直播举报怎么解除(快手直播举报怎么上传视频证据)

    快手直播举报怎么解除(快手直播举报怎么上传视频证据)

  • 拼多多上发起拼单和去拼单有什么区别(拼多多上发起拼单和参与拼单有什么区别)

    拼多多上发起拼单和去拼单有什么区别(拼多多上发起拼单和参与拼单有什么区别)

  • cmiitid后面的日期是什么

    cmiitid后面的日期是什么

  • 5mp摄像头是多少像素(摄像头5mp和4mp)

    5mp摄像头是多少像素(摄像头5mp和4mp)

  • MAC下打开活动监视器后UserEventAgent未响应如何修复(macbookpro怎么打开活动监视器)

    MAC下打开活动监视器后UserEventAgent未响应如何修复(macbookpro怎么打开活动监视器)

  • Win11 快照组新功能体验:可直接 Alt + Tab 切换,一键返回布局(win11快捷键大全)

    Win11 快照组新功能体验:可直接 Alt + Tab 切换,一键返回布局(win11快捷键大全)

  • 离职补偿的扣税比例
  • 什么情况下不能做近视激光手术
  • 车险车船税会计分录
  • 什么类型的电子商务
  • 挂靠到运输公司的车转让给个人如何交增值税
  • 补缴的税款和罚款的会计处理
  • 购入土地使用权以什么为计税依据
  • 新公司实收资本
  • 母公司及子公司借款要利息吗
  • 现金流量怎么影响股票价值
  • 生产研发设备
  • 集团内部公司之间怎么称呼
  • 结转本月收入类账户到本年利润会计分录
  • 未分配利润借方表示增加还是减少
  • 年化收益率和年利率的区别的例子
  • 企业用于存货的支出
  • 企业计提预提费用的会计分录如何编制?
  • 营改增后接受实物投资是否需要缴纳增值税?
  • 进项发票不够如何避税
  • 混合销售行为如何缴纳消费税
  • 国家税务金税四期
  • 房地产企业预缴增值税及附加税
  • 企业的财产清查属于帐证核对?
  • 开业庆典礼仪费计入什么科目?
  • 不开票的收入怎么避税
  • 什么收入不需要交税0税
  • 4s店帮买保险后会哪些资料要给我的
  • 办公室装修计入什么科目里
  • 劳务报酬的个税计算方法
  • 无形资产入股注意事项
  • 企业收到科技创新发票
  • win10开始菜单失效如何解决
  • 招待费如何列支
  • 以库存现金支付车间发生的水电费200元
  • 在win7系统中文件属性有哪些
  • flash是什么文件
  • 已计提的存货跌价准备计入成本吗
  • 盘亏固定资产累计折旧
  • 销售过程的主要内容
  • 个体工商户加盟咖啡店
  • 'The Wave' sandstone formation in Coyote Buttes North, Paria Canyon-Vermilion Cliffs National Monument, Arizona (© Dennis Frates/Alamy)
  • 如何申请办理港澳通行证
  • Yii2 rbac权限控制操作步骤实例教程
  • 持有待售资产是流动还是非流动
  • php读取mysql
  • 公司变更需要哪些资料~问华杰 财务
  • 微信小程序在哪里找?
  • 小微企业认定标准时间
  • 朝夕教育怎么样
  • php递归函数详解
  • 不良品扣款范本
  • 属于长期险种的是
  • 新政府会计制度与旧制度区别
  • 入库单如何做账分录
  • 残疾人保障金的工资总额怎么填
  • sql server 2008数据库引擎等安装失败
  • 房租收入如何纳税
  • 娱乐服务计费销售额包括
  • 火车退票费如何开票
  • 交强险还用开车去吗
  • 事业单位劳务派遣是啥意思
  • 收到红票账务处理
  • 投标资质使用费
  • 预付卡开不征税发票
  • 融资租赁的固定资产视为企业自有固定资产管理
  • mysql5.7.24安装配置教程
  • win 10如何安装
  • 找回未保存的cad文件
  • 电脑xp桌面
  • Linux Mint 5 XFCE Community Edition RC1 (BETA 025) 本月17日开始发布
  • win8 桌面图标
  • ie无法打开https
  • js创建类对象的方法
  • opengl使用教程
  • 使用vue开发手机app
  • python怎么获取命令行参数
  • 如何让listview提高效率
  • 辽宁省国税局网站
  • 电子税务局怎么添加开票员
  • 个体工商户将自有车辆出租取得的收入怎么征税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设