Tomcat

Tomcat

Tomcat是什么 ?

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器

**它为什么而存在,或者说它可以干什么

Tomcat可以响应HTML的请求,可以作为 Servlet 和 JSP 的容器。

一、安装

windows下的安装

官网选择合适镜像下载,

Ubuntu下的安装

  1. 在官网上下载。
  2. 在用户目录下解压。
  3. 配置Catalina的环境配置:建议在~.bashrc下 添加export CATALINA_HOME=tomcat的路径

二、使用

应用目录结构如下

以下目录放在tomcat的webapps下
在这里插入图片描述

代码示例

servlet类 继承 父类Httpservlet 并重写doget方法来响应html的get请求
web.xml 添加serlvet和servlet-mapping

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0">
    <display-name>Restaurant</display-name>
    <servlet>
      <servlet-name>noodles</servlet-name>
      <servlet-class>com.netease.NoodlesServlet</servlet-class>
    </servlet>
    <servlet-mapping>
      <servlet-name>noodles</servlet-name>
      <url-pattern>/noodles</url-pattern>
    </servlet-mapping>
</web-app>
protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException{
    PrintWriter writer = response.getWriter();
    String vegetable = request.getParameter("vegetable");
    if (vegetable == null){
	vegetable = "Tomato";
    }

    writer.println("<html><body>");
    writer.println("<h1> Noodles with " + vegetable + "</h1>");
    writer.println("</body></html>");
}

编译

javac -cp $CATALINA_HOME/bin/servlet-api.jar NoodlesServlet.java的路径

启动脚本

export $JAVA_OPTS -server -Xms2048m -Xmx2048m

JVM会对server应用做优化, -Xms 配置初始化堆大小。 -Xmx配置堆最大大小。

启动

$CATALINA_HOME/bin/startup.sh     

关闭

$CATALINA_HOME/bin/shutdown.sh 

注:Windows下是.bat文件

测试

可以用浏览器,在 Ubuntu下也可以用 curl + 网址 的命令进行测试。

三、原理

配置文件

重要的配置文件:server.xml
可以配合下面的架构图来看

 <Server> tomcat
   <Service>可以有多个Service ,可认为是容器
       <Connector></Connector>可以有多个Connector,用来接受用户请求
       <Engine>处理 Connector接受到的请求
			<Host>可以有多个Host虚拟主机 一个ip+端口
	     		<Context></Context>可以有多个 几乎等价于web应用
 			</Host>
      </Engine>
    </Service>
</Server>

架构图

在这里插入图片描述

组件的实现

Connector(连接器) :由Coyote项目来具体实现。Coyote实现了多种Connector。tomcat默认是BIO Connector。BIO Connector使用java传统的阻塞IO实现。
Container(容器):由Catalina项目具体实现。

组件的协同工作

请求处理流程:
Connector接收浏览器的请求,从socket读取数据,对请求进行解析,将请求发送给Container,Container根据具体请求来确定具体的响应(静态页面、图片或者根据用户代码生成动态数据),最后由Connector将响应转发给浏览器。

四、配置

server.xml配置

Connector配置
  • port 端口
  • address 地址
  • protocol 协议,一般线程调优的时候要用到
  • connectionTimeout 连接超时断开
  • acceptCount 线程满的时候,等待队列的长度
  • maxConnections 能支持的最大连接数。
  • executor 线程池配置的名称(也可以直接配置minSpareThreads 和maxThreads)
Executor配置(线程池)
  • minSpareThreads 最小空闲线程数
  • maxThreads 最大线程数
测试

可用telnet + ip + 端口号 进行连接
再输入命令 GET map引索地址 HTTP/1.1

日志

作用
  • Tomcat运行情况获知
  • 调试
分类
  • Tomcat系统运行日志
  • (请求)访问日志
  • 应用日志
配置
访问日志配置

在server.xml中配置

  • Valve 访问日志配置
  • directory 日志文件夹(相对路径是Tomcat下,也可绝对路径)
  • pattern 日志格式
    • %r 请求行内容
    • %s 状态响应码
    • %t 用户响应事件
    • %m 用户请求方法
    • %a 请求的IP地址
    • %b 服务端发送多少个字节
    • %{User-Agent}i
  • fileDateFormat 日志切割格式 ,例如:“yyyy-MM-dd.HH”每小时切割一次日志
  • rotatable 日志切割开关 默认:true

五、部署

手动部署(使用war包)

  1. 进入应用程序文件夹
  2. jar cvf Restaurant.war . ("."代表打包到当前目录)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值