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

  • 淘宝推广那种计划适合你(淘宝平台的推广)

    淘宝推广那种计划适合你(淘宝平台的推广)

  • 苹果13支持nfc门禁卡吗(苹果13支持nfc功能)

    苹果13支持nfc门禁卡吗(苹果13支持nfc功能)

  • win10如何用cmd命令清理电脑垃圾(win10如何cmd命令)

    win10如何用cmd命令清理电脑垃圾(win10如何cmd命令)

  • 三星s10+和三星s10续航对比(三星s10+和三星s10plus是不是一样)

    三星s10+和三星s10续航对比(三星s10+和三星s10plus是不是一样)

  • hdaudio接主板哪里(hdaudio接主板哪里华硕b660m)

    hdaudio接主板哪里(hdaudio接主板哪里华硕b660m)

  • 无应答呼叫转移多少秒(无应答呼叫转移设置不成功)

    无应答呼叫转移多少秒(无应答呼叫转移设置不成功)

  • qq发的视频看不了怎么回事(qq发的视频看不到)

    qq发的视频看不了怎么回事(qq发的视频看不到)

  • 快手黄钻是怎么得到的(快手黄钻怎么兑换)

    快手黄钻是怎么得到的(快手黄钻怎么兑换)

  • 没开启拼小圈别人能看到吗(没有开启拼小圈会显示好友买过吗)

    没开启拼小圈别人能看到吗(没有开启拼小圈会显示好友买过吗)

  • 微信黑夜模式在哪里(微信黑夜模式在哪里开OPPOr9S)

    微信黑夜模式在哪里(微信黑夜模式在哪里开OPPOr9S)

  • oppo手机怎么一键整理桌面(oppo手机怎么一键恢复出厂设置)

    oppo手机怎么一键整理桌面(oppo手机怎么一键恢复出厂设置)

  • 为什么不能打开旁白(为什么不能打开手电筒)

    为什么不能打开旁白(为什么不能打开手电筒)

  • 为什么电脑主机开了又自己关了(为什么电脑主机亮了屏幕不亮)

    为什么电脑主机开了又自己关了(为什么电脑主机亮了屏幕不亮)

  • 手机版本全网通是什么意思(手机全网通和标准版有什么区别)

    手机版本全网通是什么意思(手机全网通和标准版有什么区别)

  • 乘车码可以刷两个人吗(乘车码可以刷两回卡吗)

    乘车码可以刷两个人吗(乘车码可以刷两回卡吗)

  • 手机屏幕怎么设置永不休眠(手机屏幕怎么设置别人看是黑的)

    手机屏幕怎么设置永不休眠(手机屏幕怎么设置别人看是黑的)

  • 换手机了抖音怎么在另一个手机登录(换手机了抖音怎么登录原来的抖音号)

    换手机了抖音怎么在另一个手机登录(换手机了抖音怎么登录原来的抖音号)

  • 探探app什么时候出的(探探什么时候开始的)

    探探app什么时候出的(探探什么时候开始的)

  • 苹果11pro有128g吗(iphone11pro有128g么)

    苹果11pro有128g吗(iphone11pro有128g么)

  • vsco取消自动续费(vsco怎么关闭付费)

    vsco取消自动续费(vsco怎么关闭付费)

  • 华为nova5支持无线投屏吗(华为nova5支持无线充电器吗)

    华为nova5支持无线投屏吗(华为nova5支持无线充电器吗)

  • 如何破解wifi密吗(如何破解WIFI密码教程)

    如何破解wifi密吗(如何破解WIFI密码教程)

  • 快手竞猜押注在哪里(快手主播开竞猜在哪压)

    快手竞猜押注在哪里(快手主播开竞猜在哪压)

  • 手机插上充电器一直跳(手机插上充电器后不停的充电和断电)

    手机插上充电器一直跳(手机插上充电器后不停的充电和断电)

  • 米读怎么删除阅读记录(米读缓存的章节怎么删除)

    米读怎么删除阅读记录(米读缓存的章节怎么删除)

  • Mac怎么同时登录2个微信?苹果电脑微信双开教程(mac如何登陆两个微信)

    Mac怎么同时登录2个微信?苹果电脑微信双开教程(mac如何登陆两个微信)

  • 海尔Haier笔记本电脑开机进入BIOS的方法(F2)(海尔笔记本最新款)

    海尔Haier笔记本电脑开机进入BIOS的方法(F2)(海尔笔记本最新款)

  • hptskmgr.exe是什么进程 作用是什么 hptskmgr进程查询(hprj是什么文件)

    hptskmgr.exe是什么进程 作用是什么 hptskmgr进程查询(hprj是什么文件)

  • 夕阳下的大白鲨过山车,美国新泽西州 (© John Van Decker/Alamy)

    夕阳下的大白鲨过山车,美国新泽西州 (© John Van Decker/Alamy)

  • 私车公用车险是个人名字可报销吗
  • 增值税专用发票抵扣期限
  • 公司端午礼盒
  • 发票勾选平台怎么导出未勾选的发票
  • 企业资产折旧抵扣所得税
  • 企业筹建期间开办费计入什么科目
  • 可供出售金融资产计入什么科目
  • 土地增值税预征管理办法
  • 坏账准备确认时怎么做账
  • 在建工程明细科目
  • 银行询证函回函是什么意思
  • 企业收到工程款开发票要扣哪些税
  • 银行利息的现金流量项目是什么
  • 建筑施工企业预交税款
  • 增值税发票备注栏怎么填写
  • 管理咨询公司需要什么条件才能开发票
  • 装修改造增值税税率
  • 营改增后一般纳税人动产租赁税率
  • 附加税的计税依据是销项减进项吗
  • 财政总预算会计分为三级
  • 委托加工费的增值税计入成本吗
  • 个人取得的拍卖资格
  • 跨区经营的税务政策
  • 劳务人员奖金如何纳税
  • 工业投资额是指什么
  • 支付装修押金的会计科目
  • 城市维护建设税税率
  • 五险一金个人缴纳部分
  • win10护眼模式在哪
  • 结转采购材料的实际成本会计分录怎么写
  • 当前页面的脚本发生错误是否要在此页面上继续运行脚本
  • php使用oci8扩展连接oracle
  • php 文件管理系统
  • php一个文件搞定两个文件
  • 电子税务局附加税退税在哪看
  • 总纳税与就地纳税区别
  • Blog2N如何计算
  • jwt中的jti
  • 技术服务费发票图片
  • 开源 okr
  • 政府补助会计处理方法
  • 借款需要缴纳个人所得税吗
  • 一般计税方法预交增值税
  • 烟叶税计算时价格怎么算
  • 软件即征即退开票信息与资料不符
  • 增值税税负率是多少
  • 支付给法律顾问怎么做账
  • 以前年度未处理往来账怎么叫
  • 自助餐怎么核算成本
  • 补缴以前年度所得税怎么做会计分录
  • 委托加工的材料成本包括运费吗
  • 工程维修款扣多少
  • 预收账款的借方余额反映的是
  • 银行日记账记错了怎么办
  • 以物易物方式销售货物的增值税处理
  • 工会经费计提比例是2%还是0.8%
  • 股东注入资金转出股权
  • 班车租赁费计入福利费吗
  • wlanplus是什么软件
  • macbook调节音量怎么没反应
  • eac.exe是什么
  • 录制界面
  • mac电脑怎么打开
  • final cut pro能破解吗
  • mac mail邮件本地存储路径
  • win10系统版本20h2
  • win10缺少文件怎么办
  • le启动exe是什么意思
  • linux diy
  • win10系统声音忽大忽小
  • js函数命名
  • jquery给表格赋值
  • nodejs制作网站
  • 查看linux中某个端口(port)是否被占用的方法
  • android 自定义dialog
  • android 自定义actionbar
  • 如何做好基层税务分局长工作
  • 企业筹建期间发生的费用应计入什么账户
  • 金三申报系统里面怎么申报社保?
  • 提供劳务者受害责任纠纷赔偿案例
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设