Tomcat使用

servlet介绍

简介

Servlet 全称是server Applet简称,称为服务端小程序,是javaEE平台下的技术标准,web容器和应用服务器实现了servlet标准,因此需要运行在web容器或应用服务器中实现。Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要:接收请求数据;处理请求;完成响应。

特点

单进程多线程的方式运行,这样能提升性能以及是基于线程去解决遇到的问题,相对直接解决进程(CGI,FastCGI 是基于进程的服务外部程序规范)遇到的问题要容易


以下内容是基于web容器(TomCat进行实现的)

Tomcat的使用

Tomcat是完全免费的,通过:tomcat官网,下载解压即可使用。(需要注意的是,要正确配置环境变量,配置过jdk的就无需配置)

Tomcat目录介绍

  • bin:存放tomcat命令文件,在文件夹中,以.sh结尾的是Linux命令,而.bat结尾的(windows命令),Mac可以使用终端启动
  • conf:主要存放配置文件。配置文件是由4xml组成,分别是context.xml(公用环境配置,tomcat服务器会定时扫描这个文件,文件被修改,会自动加载,无需重启),web.xml(是web应用的配置文件,是所有web应用的web.xml文件的父文件), server.xml(这是核心配置文件,每一个元素都对应tomcat中的一个组件[后续写出],tomcat-user.xml(访问tomcat用户以及角色的配置文件)。
  • lib:存放tomcat运行需要加载的jar包
  • logs:存放运行过程中日志文件
  • temp:目录存放运行中临时文件(清空不影响运行)
  • webapps:存放应用程序,当tomcat启动会加载该目录下应用程序
  • work:存放运行时编译后文件

Tomcat启动关闭

控制台乱码

这是由于编码格式造成的,默认是UTF-8,而中文Windows使用的是GBK,因此将 conf 目录中的 logging.properties 文件重新指定的编码方式为GBK就可以。

配置Tomcat Manager

  • 默认情况下,tomcat未配置任何默认用户,需要以用户角色进行登陆并授权才能使用对应功能。需通过 tomcat-users.xml进行配置直接在文件结尾进行配置,这里配置了2个角色
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="tomcat" roles="manager-gui,manager-script"/>
  • 角色分类有:

manager-gui 角色:
允许访问 HTML GUI 和状态页面(即 URL 路 径 为 /manager/html/*)

manager-script 角色:
允许访问文本界面和状态页面(即 URL 路径为/manager/text/*)

manager-jmx 角色:
允许访问 JMX 代理和状态页面(即 URL 路径为/manager/jmxproxy/*)

manager- status 角色:
仅允许访问状态页面(即 URL 路径为/manager/status/*)

Tomcat原理

tomcat原理

Tomcat架构图

tomcat架构图

Tomcat组件

  • server组件:启动server(单进程多线程集一个jvm),监听的是8005端口接收shudown的命令。一个机器启动多个server实例,需要配置不同的端口,默认
<Server port="8005" shutdown="SHUTDOWN">
  • service 是引擎和连接器的绑定,每个连接器通过特定的端口和协议接收请求,并将请求转给引擎(engine)
  • connector 一个引擎可以有多个连接器,默认是http连接器
  • engine 是servlet的实例
  • host 位于引擎中用来接收请求并处理的虚拟主机
  • contxte 为虚拟机加载web应用 context path 既浏览器访问项目的访问路径。docBase:相应的 Web 应用程序的存放位置

Tomcat处理请求的过程

请求处理过程

1、用户访问 localhost:8080/test/index.jsp,请求被发送到 Tomcat,被监听 8080 端口并 处理 HTTP/1.1 协议的 Connector 获得。
2、Connector 把该请求交给它所在的 Service 的 Engine 来处理,并等待 Engine 的回应。
3、Engine 获得请求 localhost/test/index.jsp,匹配所有的虚拟主机 Host。
4、Engine 匹配到名为 localhost 的 Host 虚拟主机来处理/test/index.jsp 请求(即使匹配不到会请求交给默认 Host 处理),Host 会根据/test 匹配它所拥有的所有的 Context。
5、匹配到的 Context 获得请求/index.jsp。
6、构造 HttpServletRequest 对象和 HttpServletResponse 对象,作为参数调用 JspServlet 的 doGet()或 doPost().执行业务逻辑、数据存储等程序。
7、Context 把执行完之后的结果通过 HttpServletResponse 对象返回给 Host。
8、Host 把 HttpServletResponse 返回给 Engine。
9、Engine 把 HttpServletResponse 对象返回 Connector。
10、Connector 把 HttpServletResponse 对象返回给客户 Browser。

悲观者正确,乐观者成功
原文地址:https://www.cnblogs.com/freebule/p/13631771.html