言成言成啊 | Kit Chen's Blog

tomcat服务器

发布于2020-06-03 20:47:57,更新于2021-03-02 18:01:24,标签:web  文章会持续修订,转载请注明来源地址:https://meethigher.top/blog

一、web相关概念

软件架构

  1. C/S:客户端/服务器端
  2. B/S:浏览器/服务器端

资源分类

  1. 静态资源:所有用户访问后,得到的结果都是一样的资源。比方说html,css,js
  2. 动态资源:每个用户访问相同结果后,得到的结果可能不一样。比方说servlet/jsp,php,asp

用户访问时,

静态资源是直接返回的,浏览器内部有静态资源解析引擎,意味着浏览器可以直接解析静态资源。

动态资源先转换成静态资源,然后再返回。

网络通信三要素

  1. ip:电子设备(计算机)在网络中的唯一标识
  2. 端口:应用程序在计算机中的唯一标识。0-65536
  3. 传输协议:规定了数据传输的规则

基础传输协议

  1. tcp:安全协议,三次握手。速度慢
  2. udp:不安全的协议,传输过程数据可能会丢失。速度快

服务器:安装了服务器软件的计算机

服务器软件:接收用户的请求,处理请求,作出响应

web服务器软件:接收用户的请求,处理请求,作出响应。在web服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目

常见的java相关的web服务器软件

  1. webLogic:Oracle公司的,大型的JavaEE服务器,支持所有的JavaEE规范,收费的
  2. webSphere:IBM公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的
  3. JBoss:JBoss公司,大型的JavaEE服务器,支持所有的JavaEE规范,使用是免费的,但是一些服务是收费的
  4. Tomcat:apache基金组织,开源的免费的。中小型JavaEE服务器,仅仅支持少量的JavaEE规范(Servelet/jsp)。开源的,免费的。

JavaEE:Java语言在企业级开发中使用的技术规范的总和,一共规定了十三项大的规范。

二、Tomcat服务器

Tomcat官网,简记为汤姆猫

bin:存放可执行文件

conf:configuration的简写,配置文件

lib:依赖的jar包

logs:日志文件

temp:临时文件

webapps:存放web项目

work:存放运行时数据

2.1 配置问题

tomcat9与jdk12配置问题

tomcat9&jdk11配置手记

之前上课的时候,我的jre采用的是jre8,后来为了让jdk跟jre保持一致(新版的jdk中,自带jre,不过需要命令来生成),我就升级成了新版。

在配置的过程中,就出问题了。我的JAVA_HOME配置C:\Program Files\Java\jdk-12.0.2,JRE_HOME配置C:\Program Files\Java\jdk-12.0.2\bin\jre(我把生成的jre放到了bin目录下)。

运行,发现报错了。

又大概花了一个小时,各种折腾,期间还换了jre的版本,换成了jre8,发现又是完美运行了。

到了最后,发现,新版jdk不用单独配置jre,jre的路径直接使用jdk的路径就可以了。

来回折腾花了2个多小时,艹尼玛的汤姆猫,气死我了。

控制台如果乱码,那是因为系统的编码是gbk,而控制台输出的日志是以utf-8输出的。只需要修改conf/logging.properties即可

查看windows系统的默认编码

修改windows系统默认编码

1
2
3
# java.util.logging.ConsoleHandler.encoding = UTF-8
# 解决windows乱码问题
java.util.logging.ConsoleHandler.encoding = GBK

2.2 使用

双击startup.bat或者命令行里输入startup.bat可以直接运行。当然,也可以安装服务到电脑,具体可以百度,这个我并不常用,就没整。

卸载的话,直接删除整个文件夹即可。

如果遇到端口占用问题,可以关闭占用的进程

1
netstat -ano

找到占用端口号的pid,然后关闭进程,-f表示强制的意思

1
taskkill /pid 进程号 -f

如果要修改运行的端口号,则需要修改conf/server.xml

关闭的话,双击shutdown.bat或者按ctrl+c,直接按命令行的x属于强制关闭

2.3 部署项目

三种方式,任选一种即可

第一种,直接将项目放到webapps目录下。或者将项目压缩成war包,然后放入webapps。tomcat会自动解压,如果删除war包,tomcat会自动删除项目。此时的虚拟目录就是war包的名称!

第二种,配置conf/server.xml文件。在<Host>标签下配置<Context docBase="D:\Develop" path="/www" />

  • docBase:项目存放的路径
  • path:虚拟目录

第三种,在conf\Catalina\localhost创建任意名称的xml文件,在文件中编写<Context docBase="D:\Develop" />,此时的虚拟目录就是xml的名称。这种部署叫做热部署,这种方式是比较推荐的

另外一点小问题,tomcat关闭index目录展示

还遇到了一个问题,tomcat闪退。两种解决办法

  • 将startup.bat后面,换行追加pause
  • 查看日志信息

我遇到的这个问题,就是子容器创建失败

我仔细想了想,修改过的地方,唯一可能出错的就是,配置的项目路径,因为没有那个文件夹!创建文件夹就解决了。

部署到服务器的时候,又出问题了。

1
org.apache.catalina.core.StandardContext.startInternal 一个或多个筛选器启动失败。完整的详细信息将在相应的容器日志文件中找到

根据信息查看日志,配置的localhost下的日志显示

1
2
org.apache.catalina.core.StandardContext.filterStart 启动过滤器异常
java.lang.UnsupportedClassVersionError: web/filter/LoginFilter has been compiled by a more recent version of the Java Runtime

由此可知,原来是因为我的项目使用jre12开发的,服务器是jre8,不匹配,用idea设置一下,重新编译,就ok了!

2.4 静态项目和动态项目

java动态项目的目录结构(以下表示的是目录结构)

  • 项目的根目录
    • WEB-INF目录
      • web.xml:web项目的核心配置文件
      • classes目录:放置字节码文件的目录
      • lib目录:放置依赖jar包

2.5 Tomcat集成到Eclipse或Idea

百度!

发布:2020-06-03 20:47:57
修改:2021-03-02 18:01:24
链接:https://meethigher.top/blog/2020/tomcat/
标签:web 
付款码 打赏 分享
Shift+Ctrl+1 可控制工具栏