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

  • 18种女粉引流方法、效果、评估(引流wz粉)

    18种女粉引流方法、效果、评估(引流wz粉)

  • excel文本格式怎么设置(Excel文本格式怎么设置4位数)

    excel文本格式怎么设置(Excel文本格式怎么设置4位数)

  • 安卓手机可以修改微信号吗(安卓手机可以修改airpods名称吗)

    安卓手机可以修改微信号吗(安卓手机可以修改airpods名称吗)

  • 微信超过五分钟的视频怎么发给朋友(微信聊天超过2分钟怎么撤回)

    微信超过五分钟的视频怎么发给朋友(微信聊天超过2分钟怎么撤回)

  • ipad处理器A10和A12对的差距(平板a10处理器和a12处理器有什么区别)

    ipad处理器A10和A12对的差距(平板a10处理器和a12处理器有什么区别)

  • 微信好友批量转移到另一个号(微信好友批量转移到企业微信)

    微信好友批量转移到另一个号(微信好友批量转移到企业微信)

  • 打印预览显示不出来(打印预览显示不出边框)

    打印预览显示不出来(打印预览显示不出边框)

  • 抖音为什么在国外不能直播(抖音为什么在国外总被禁)

    抖音为什么在国外不能直播(抖音为什么在国外总被禁)

  • word有画笔功能吗(word画笔功能为啥用不了)

    word有画笔功能吗(word画笔功能为啥用不了)

  • 听筒坏了是什么症状(听筒坏了自己能修复)

    听筒坏了是什么症状(听筒坏了自己能修复)

  • 华为mate30和opporeno3pro对比(华为mate30和OPPOReno9哪款手机好)

    华为mate30和opporeno3pro对比(华为mate30和OPPOReno9哪款手机好)

  • 荣耀所有型号(荣耀所有型号详解)

    荣耀所有型号(荣耀所有型号详解)

  • 为什么打开库乐队闪退(为什么打开库乐队没反应)

    为什么打开库乐队闪退(为什么打开库乐队没反应)

  • 荣耀9x双卡双待吗(荣耀9x双卡还能插存储卡吗)

    荣耀9x双卡双待吗(荣耀9x双卡还能插存储卡吗)

  • 手机摄像头模糊能修吗(手机摄像头模糊看不清怎么办)

    手机摄像头模糊能修吗(手机摄像头模糊看不清怎么办)

  • 淘宝天猫积分什么时候清零(淘宝 天猫积分)

    淘宝天猫积分什么时候清零(淘宝 天猫积分)

  • 手机有噪音怎么解决(手机噪音怎么设置)

    手机有噪音怎么解决(手机噪音怎么设置)

  • soul怎么查看对方性别(soul怎么查看对方在线时间)

    soul怎么查看对方性别(soul怎么查看对方在线时间)

  • 在word2010文档中编辑表格有哪些操作(在word2010文档中输入复杂的数学公式执行什么命令)

    在word2010文档中编辑表格有哪些操作(在word2010文档中输入复杂的数学公式执行什么命令)

  • 人人视频app扫一扫在哪里(人人视频在哪儿扫码)

    人人视频app扫一扫在哪里(人人视频在哪儿扫码)

  • 苹果id头像怎么设置(苹果id头像怎么保存到手机)

    苹果id头像怎么设置(苹果id头像怎么保存到手机)

  • 三星s8带红外线吗(三星s8带红外线功能吗)

    三星s8带红外线吗(三星s8带红外线功能吗)

  • 拍的抖音怎么删除(拍的抖音怎么删除掉)

    拍的抖音怎么删除(拍的抖音怎么删除掉)

  • 什么是4k(什么是4k高清电视)

    什么是4k(什么是4k高清电视)

  • 以前年度遗留的个税怎么处理
  • 小规模纳税人购买原材料会计分录
  • 税金及附加主要分析
  • 发票遗失如何入账
  • 固定资产投资损失怎么做账
  • 无偿捐赠设备该如何做账务处理呢?
  • 财产租赁合同印花税计税依据含税吗
  • 行政单位往来款项长期未清理
  • 其他公司归还货款会计分录
  • 发票未到货已到怎么入账
  • 冲销去年暂估费用
  • 伤亡保险是什么意思
  • 增值税发票进项税额抵扣
  • 园林绿化公司前景如何
  • 预缴税款是开票金额的多少
  • 2017小规模纳税人标准
  • 小微企业可以抵税吗
  • 职工食堂租赁费
  • 2020工会经费退费
  • 在业和存续是什么经营状态
  • 怎样开发票的具体步
  • 代扣个税手续费返还增值税税率
  • 超市库存商可以分为几大类
  • 暂估成本能挂账多久
  • mac option开机
  • 苹果手机系统升级后电量消耗快
  • 贷款利息不能抵扣进项税
  • 无形资产的界定及特点
  • 奥维尔的瓦兹河岸
  • 酒店免费提供哪些服务
  • 应付职工薪酬的含义
  • 堪察加半岛上的汉族人
  • php检测网站是否正常打开
  • 一站式自动化测试平台如何滑动
  • 公司银行开户的费用怎么做账
  • 电子发票如何发邮箱给别人
  • python爬虫入门教程
  • 小微企业季度申报所得税税率
  • MySQL的主从复制基于什么实现的?
  • 个体户一年能开多少票不用交税
  • 物业广告怎么收费
  • 企业所得税的计税步骤
  • 交车险代收的车可以退吗
  • 计划成本法存货会计分录
  • 所得税弥补以前年度亏损什么意思
  • 用友反结账怎么操作
  • 小规模纳税人防伪税控会计分录
  • 开专票需要什么条件呢怎么开
  • 补发以前年度工资的账务处理
  • 贸易中的发票抵押和发票融资
  • 收据能开发票吗
  • 商贸公司主营业务成本会计分录
  • 企业支付宝要交税吗?
  • 应付票据在资产负债表怎么填列
  • 如何管理固定资产账户
  • 房地产企业成本控制存在的问题及对策
  • 公司的应付账款
  • mysql优化技巧实战
  • sql语句数量
  • win 10预览版
  • centos双网卡配置
  • wingate.exe - wingate是什么进程
  • linux邮件设置方法
  • WIN10系统如何修复
  • win7系统计算机管理打不开
  • win8 远程桌面
  • vue仿知乎
  • 浏览器复制插件在哪
  • node搭建本地服务器运行html
  • Node.js Mongodb 密码特殊字符 @的解决方法
  • node.js [superAgent] 请求使用示例
  • jquery 属性
  • 初识大学主题征文
  • 地税局公务员考试科目
  • 重庆九龙坡区商务委员会
  • 税源管理科是干什么的工作
  • 国家税务总局河北地税局
  • 规范性文件失效后,没有新文件,可以使用民法典第十条吗
  • 水资源税征收标准2023
  • 专用发票收款人可以盖私章吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设