【计算机网络】Tomcat和Servlet基础知识汇总

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 【计算机网络】Tomcat和Servlet基础知识汇总

1.Tomcat:

  1. Tomcat是一个HTTP的服务器,本质上就是一个TCP服务器,只不过加上了一些按照HTTP协议格式进行解析/构造这样的代码。
  2. 学习Tomcat的目的就是能够熟练掌握Tomcat api,基于Tomcat开发网站后端程序,基于这些http服务器进行二次开发。
  3. 将前端和后端代码放到webapps目录里面就可以通过自己的浏览器来访问了。在webapps目录下创建一个文件就被视为一个webapp,文件创建好之后需要重启Tomcat,才可以在浏览器上正常访问到。
  4. Tomcat是运行在JVM上的,跨平台!默认的编码是UTF-8,而windows的cmd默认编码是gbk。
  5. 若没有写具体的路径则默认是在webapps的ROOT目录下进行查找若文件没有给出路径并且文件名也不在ROOT中存在,就会报404务必要保证是在webapps目录中进行访问!

2.Servlet

  1. Servlet就是Tomcat给程序员提供的进行二次开发的api。
  2. 静态页面和动态页面的概念。静态页面意思就是页面是固定的(以文件的形式,放在硬盘指定的的目录当中),无论是什么时候什么人来访问都是一样的页面。而动态页面不是一个真实的硬盘文件,而是代码在内存上构造出来的”虚拟文件资源“,不同的人不同的时间访问的页面就会不同。举个例子:我开水果摊,静态页面就是已经切好的水果,每一盒都是一样的;动态页面就是个性搭配,需要现做一个。
  3. 静态页面直接拷贝到webapps里面就行;动态页面就需要基于Servlet api进行写代码实现。
  4. 使用Servlet来编写一个hello world,

一共7个步骤:

1.创建项目

2.引入Servlet依赖

3.创建目录结构

4.编写代码

5.打包程序

6.部署程序

7.验证程序

  1. 第1步:创建一个maven项目。maven是一个作用不限于编译、打包、部署的构建工具(build)。我们使用maven主要就是借助maven进行编译、打包和管理依赖。
  2. 第2步:引入Servlet依赖。Servlet不是Java标准库自带的需要下载并引入到项目中。maven的一个核心功能就是能够自动的管理依赖,就会把咱们使用的库里依赖的东西自动从中央仓库上下载下来。
  3. 第3步:创建目录结构。虽然maven已经创建出了一些目录但是还不够,还需要搞一个符合Tomcat要求的目录结果。这个目录结构的位置名称层次都要严格的一致,还需要在web.xml中复制一段代码。schema文件就描述了xml中都允许写哪些节点,节点之间的层级关系,哪些属性是违法的。
  4. 第4步:编写代码。把要编写的代码放到java这个目录下。Tomcat可以关联上很多路径,这样就关联上了不同的类,也就执行了不同的方法了。

@WebServlet("/hello")  会针对某些GET请求生效

这里写的是“/hello”

意思是 GET请求并且url里面的路径是 /hello 的请求才会生效

这样Tomcat才会调用到这里的doGet方法

  1. 第5步:打包程序。之前我们写的代码都是带main方法的相当于一个小汽车自带发动机(自己就能跑),当前我们写的Servlet代码没有main方法,就相当于一个火车车厢必须要把车厢挂到车后后面才可以跑起来(车头就是Tomcat,Tomcat带main,自带个发动机)。把写好的代码挂到火车头后面的过程就是打包+部署。一个类就是一个.class文件,是在方法区里加载的。当打包完成之后(打成了jar包),但Tomcat不使用,因为Tomcat要求的压缩包格式是war包。因此需要在pom.xml文件中配置。
  2. 第6步:部署程序。就是把war包拷贝到Tomcat的webapps中
  3. 第7步:验证程序。通过浏览器构造一个HTTP请求来访问Tomcat中的服务器,Tomcat服务器就会解析请求。例如:构造一个请求:127.0.0.1:8080/servlet/hello 。大致是先匹配Context Path第一级路径(/servlet),再匹配Servlet Path第二级路径(/hello),最后匹配HTTP方法。

浏览器发送的请求时怎么和自己写的代码建立联系的:

Tomcat服务器解析请求:

1.获取到URL中的第一级路径/servlet(Context Path / Application Path),就是确定一个webapp。

2.找到webapp之后就会加载里面的类,重点就是去识别出@WebServlet注解修饰的类。

 取出URL中的第二级路径/hello(Servlet Path)

 就在@WebServlet注解中找到名字为/hello的这个类

 找到类之后创建实例,这个实例只会创建一次,如果之前创建过就直接使用上次的实例

3.再解析出HTTP请求的方法(如果是GET),取出GET之后就根据HTTP方法来调用对应的Servlet中的(do...方法),

 同时Tomcat还会构造出HttpServletRequest对象和HttpServletResponse对象

  1. Tomcat中的main方法主要做的事情就是针对webapps里的webapp进行加载将Context Path、Servlet Path和请求的方法加载到内存上。
  2. 使用Servlet编写个hello world这7个步骤中,第5和6步可以合并在一起。在idea中可以使用第三方的Smart Tomcat插件(plugin)来完成”一键式“的打包和部署。
  3. 如果Tomcat已经启动了,此时smart tomcat调用的tomcat就会绑定端口号失败。“一山不容二虎”!

一个程序能不能绑定多个端口号?

  -> 一个人能不能有多个手机号? 可以

一个端口号能不能被多个程序绑定?

  -> 一个手机号能不能被多个人使用? 不可以

  1. tomcat的运行方式有多种?

1.直接在startup.bat上运行,需要手动拷贝war包到webapps目录中

2.直接通过java代码,调用Tomcat的jar包运行,不需要拷贝war包。

 在webapps的目录中不会有war包,也没有欢迎页面(没有加载webapps目录下的东西)

  1. Context Path分成俩种情况来看待:(这是Tomcat俩种不同的运行模式,这俩种模式对Context Path的认知是不一样的!)
  2. 使用Smart Tomcat 时经常会遇到的问题。404:路径写错了或者是你的webapp没有被tomcat正确的加载(web.xml写错了,web.xml是tomcat加载war包的重要依据!)。405:请求的方法服务器这里没有实现(GET请求,服务器这里是doPOST方法就会出现405)或者是没有把super给删了。500:服务器这里的代码出BUG了。空白页面:说明服务器没有响应。无法访问此网站:说明tomcat服务器没有启动或者是IP地址端口号写错了。

如果对您有帮助的话,

不要忘记点赞+关注哦,蟹蟹

如果对您有帮助的话,

不要忘记点赞+关注哦,蟹蟹

如果对您有帮助的话,

不要忘记点赞+关注哦,蟹蟹

相关文章
|
29天前
|
Java 应用服务中间件
面对海量网络请求,Tomcat线程池如何进行扩展?
【10月更文挑战第4天】本文详细探讨了Tomcat线程池相较于标准Java实用工具包(JUC)线程池的关键改进。首先,Tomcat线程池在启动时即预先创建全部核心线程,以应对启动初期的高并发请求。其次,通过重写阻塞队列的入队逻辑,Tomcat能够在任务数超过当前线程数但未达最大线程数时,及时创建非核心线程,而非等到队列满才行动。此外,Tomcat还引入了在拒绝策略触发后重新尝试入队的机制,以提高吞吐量。这些优化使得Tomcat线程池更适应IO密集型任务,有效提升了性能。
面对海量网络请求,Tomcat线程池如何进行扩展?
|
2月前
|
Java 应用服务中间件 Maven
JavaWeb基础5——HTTP,Tomcat&Servlet
JavaWeb技术栈、HTTP、get和post区别、响应状态码、请求响应格数据式、IDEA使用Tomcat、报错解决、Servlet的体系结构、IDEA使用模板创建Servlet
JavaWeb基础5——HTTP,Tomcat&Servlet
|
5月前
|
网络协议 网络性能优化 数据安全/隐私保护
计算机网络基础知识和术语(二)---分层结构模型
计算机网络基础知识和术语(二)---分层结构模型
75 1
|
5月前
|
缓存 网络架构
计算机网络基础知识和术语(二)---性能指标
计算机网络基础知识和术语(二)---性能指标
53 1
|
5月前
|
存储 监控 网络协议
计算机网络基础知识和术语(一)
计算机网络基础知识和术语(一)
189 1
|
5月前
|
Java 应用服务中间件 Maven
|
5月前
|
前端开发 应用服务中间件
|
6月前
|
JSON Java 应用服务中间件
|
5月前
|
缓存 安全 前端开发
(转)浅谈tomcat优化(内存,并发,缓存,安全,网络,系统等)
(转)浅谈tomcat优化(内存,并发,缓存,安全,网络,系统等)
|
5月前
|
XML 数据格式