位置: 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缩略图不要自动裁剪的设置方法

  • 怎么样编写微博推广文案(怎么编辑微博发微博)

    怎么样编写微博推广文案(怎么编辑微博发微博)

  • 抖音没粉丝可以直播吗(抖音没粉丝可以开小店吗)

    抖音没粉丝可以直播吗(抖音没粉丝可以开小店吗)

  • 超话屏蔽能自动解除吗(超话屏蔽会自动解除吗)

    超话屏蔽能自动解除吗(超话屏蔽会自动解除吗)

  • mooc期末考试可以切屏吗(mooc期末考试可以补考吗)

    mooc期末考试可以切屏吗(mooc期末考试可以补考吗)

  • 小度如何设置近距离观看提醒(小度如何设置近距离提醒)

    小度如何设置近距离观看提醒(小度如何设置近距离提醒)

  • 电脑启动不了灯一闪一闪的(电脑启动不亮灯)

    电脑启动不了灯一闪一闪的(电脑启动不亮灯)

  • 联想电脑系统恢复,快捷键是什么(联想电脑系统恢复工具)

    联想电脑系统恢复,快捷键是什么(联想电脑系统恢复工具)

  • 华为mate50pro什么时候上市(华为mate50pro什么价格)

    华为mate50pro什么时候上市(华为mate50pro什么价格)

  • up直播可以自己提现吗(up直播自己播好还是签约)

    up直播可以自己提现吗(up直播自己播好还是签约)

  • 链接到前一条页眉在哪个工具栏中(链接到前一条页眉为什么是灰色的)

    链接到前一条页眉在哪个工具栏中(链接到前一条页眉为什么是灰色的)

  • root权限有危险吗(root权限危险吗)

    root权限有危险吗(root权限危险吗)

  • 双重认证有什么坏处(双重认证有什么用)

    双重认证有什么坏处(双重认证有什么用)

  • excel数据管理功能包括(excel数据管理包含哪些内容)

    excel数据管理功能包括(excel数据管理包含哪些内容)

  • vivoNEX3s搭载的什么系统(vivonex3s的缺点)

    vivoNEX3s搭载的什么系统(vivonex3s的缺点)

  • 苹果11怎么清理内存(苹果11怎么清理手机内存)

    苹果11怎么清理内存(苹果11怎么清理手机内存)

  • iphone11蓝牙搜不到设备怎么办(iphone11蓝牙搜不到新设备)

    iphone11蓝牙搜不到设备怎么办(iphone11蓝牙搜不到新设备)

  • 西瓜视频文件夹在哪(西瓜视频文件夹在哪里找)

    西瓜视频文件夹在哪(西瓜视频文件夹在哪里找)

  • soul能查到手机号(soul能查到手机联系人吗)

    soul能查到手机号(soul能查到手机联系人吗)

  • 小米ai音箱如何控制小米盒子(小米AI音箱如何恢复出厂设置)

    小米ai音箱如何控制小米盒子(小米AI音箱如何恢复出厂设置)

  • 苹果手机分屏功能怎么用(苹果手机分屏功能怎么关闭)

    苹果手机分屏功能怎么用(苹果手机分屏功能怎么关闭)

  • e5573s856是三网通吗(e5573s856支持移动卡吗)

    e5573s856是三网通吗(e5573s856支持移动卡吗)

  • H5页面跳转微信小程序时:wx.miniProgram.navigateTo 报错 ‘wx‘ is not defined no-undef(h5跳转h5)

    H5页面跳转微信小程序时:wx.miniProgram.navigateTo 报错 ‘wx‘ is not defined no-undef(h5跳转h5)

  • 东京的秋叶和金鱼,日本 (© qrsk/Moment/Getty Images)(日本东京秋叶原攻略)

    东京的秋叶和金鱼,日本 (© qrsk/Moment/Getty Images)(日本东京秋叶原攻略)

  • 使用 Vue3 开发了四个月,回顾 emit 的用法(使用vue开发app)

    使用 Vue3 开发了四个月,回顾 emit 的用法(使用vue开发app)

  • 赊销和分销时纳税义务发生时间是什么时候?
  • 发票同步功能在哪里
  • 社保申报后不能缴费
  • 电子税务局在哪里看财务报表
  • 挂牌出售无形资产
  • 房产税从价计征扣除比例
  • 度假村功能
  • 增值税都有哪些科目
  • 房屋租赁个人所得税缴纳标准是多少
  • 如何设置采购入库的对方科目暂估科目
  • 银行客户专用回单分录
  • 企业应缴的教育费附加税是多少?
  • 增值税发票税率是星号
  • 特殊金融机构有哪些
  • 企业的财产清查无论什么情况,均应先通过
  • 发票开错重开怎么做账?
  • 领用库存商品的消费税
  • 负债清偿损益明细表可以0报么
  • 1697509099
  • 税负率一般控制在多少合适
  • 水产类账目怎么做
  • 进料加工可分为
  • 进项认证转出 会计得入账吗
  • 其他权益工具投资属于什么科目
  • 局域网文件共享不稳定
  • gif图片查看软件
  • 公司增资怎么做
  • 工会经费的计税依据包括劳务费吗
  • windows11永久解决蓝屏
  • 出售固定资产减免的税款账务处理
  • 计提企业税费和缴纳分录怎么做
  • 下岗再就业有什么优惠政策
  • 季报表利润表本月怎么填
  • import vue from vue报错
  • typescript instanceof
  • 前端种类
  • promise thenable
  • 非财政补助结转和非财政补助结余的区别
  • 购买的商品作为赠品怎么入账
  • 出售无形资产损益怎么算
  • 用vue-cli搭建项目
  • 帝国cms灵动标签调用标题图片
  • mysql建表的完整步骤
  • 增值税补充申报表不填可以吗
  • 一般纳税人简易征收的适用范围
  • 兼职老师工资小时多少钱
  • 银行结息交易是扣钱的意思吗
  • 来料加工账务处理流程
  • 不含税销售额等于净利润
  • 飞机票电子发票可以抵扣进项税吗
  • 企业间借贷是否合法2018
  • 本月无进项发票需要去增值税发票认证平台吗
  • 固定资产可以一次性入费用的标准
  • 税控盘开发票怎么测试打印机?
  • 会计所说的内账外账
  • mysql案例分析
  • mybatis collection 多条件查询的实现方法
  • 醒狗音乐免费下载歌曲2017最新版
  • win10系统设置快捷键
  • iis配置asp网站
  • fedora使用
  • bios如何设置
  • winxp系统设置密码
  • Win7任务栏时间显示秒
  • win7中文显示问号
  • ims文件是什么意思
  • win7任务栏突然变成灰色
  • 不同系统电脑能共享吗
  • linux系统怎么关闭137端口
  • python购物车100行代码
  • 一起学ap
  • node.js 环境配置
  • 深入理解中国式现代化
  • 使用驱动器u盘之前需要格式化
  • python设计作品
  • jquery ui和jquery easy ui
  • 用jquery写注册界面
  • 贵州税务大厅咨询电话
  • 国家税务网上办税平台
  • 餐厅税务依据有哪些
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设