Tomcat

Tomcat

常见的JavaWeb服务器:

  • Tomcat(Apache):当前应用最广的JavaWeb服务器
  • Jetty:更轻量级、更灵活的servlet容器
  • JBoss(Redhat红帽):支持JavaEE,应用比较广 EJB容器 -> SSH轻量级的框架代替
  • GlassFish(Orcale):Oracle开发的JavaWeb服务器,应用不是很广
  • Resin(Caucho):支持JavaEE,应用的越来越广
  • Weblogic(Orcale):要钱的!支持JavaEE,适合大型项目
  • Websphere(IBM):要钱的!支持JavaEE,适合大型项目

Tomcat目录结构

  • bin: bin为binary的简写,主要放置系统的必备执行文件
  • work:work目录用来存放tomcat在运行时的编译后文件,例如JSP编译后的文件
  • conf:存放一些tomcat的配置文件
  • lib:存放tomcat的主要jar包
  • logs:日志文件存放目录
  • temp:运行时产生的临时目录
  • webapps:存放tomcat的具体项目

Tomcat项目结构*

Tomcat项目存放在webapps文件夹下,文件树结构一般如下

  • app项目应用根目录
    • 一些.html文件(也可以新建目录page用来存放)
    • static:非必要目录,一般在此处放静态资源(css js img)
      • css:存放css文件
      • js:存放js文件
      • img:存放图片
    • WEB-INF:此目录下的资源是受保护的资源,不可以通过浏览器直接访问
      • classes:字节码根路径,是java文件生成的字节码文件
      • lib:项目中第三方jar包存放库,一般不会存放到tomcat的lib下,要做到项目隔离
      • web.xml:每个项目都有自己的web.xml配置文件

Tomcat部署项目

除了将项目直接放在webapps文件夹下,还可以将项目放到其他位置,由tomcat中的配置文件指向app的实际磁盘路径

在配置文件中新建xml配置文件

conf -> Catalina -> localhost -> app.xml

<Context path="/app" docBase="D:\mywebapps\app">

这样配置就可以将D盘根目录下mywebapps中的app项目挂载到tomcat运行


Tomcat的管理项目

Tomcat中的manager和host-manager项目需要账户和密码来登录

可以通过tomcat-users.xml配置文件来配置用户名和密码

 <role rolename="admin-gui"/>
  <role rolename="admin-script"/>
  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <role rolename="manager-jmx"/>
  <role rolename="manager-status"/>
  <user username="XIAOBAI" password="XIAOBAI" roles="admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status"/>

IDEA关联Tomcat

  • 建立Tomcat和idea的关联
  • 使用idea创建一个Java web工程,在web工程中开发代码
  • 使用idea将工程构建成一个可以发布的app
  • 使用idea将构建好的app部署到tomcat中,启动运行

在idea设置中,构建、执行、部署 -> 应用程序服务器中添加Tomcat

新建项目后,项目结构 -> 模块 -> 依赖中添加Tomcat

双击shift -> 添加框架支持 -> 添加JavaWeb应用程序

注:如果不依赖添加Tomcat直接添加JavaWeb应用程序时,会直接添加到低版本的JavaWeb

注:使用idea引入js和css文件时,可尝试直接将文件拖入


工程文件

工程文件可以理解为项目在idea里面的样子,其内容大致为

  • resources文件夹:用来放一些配置文件要将其标记为Resources根目录**
  • src文件夹:通常用来存放java代码
  • web文件夹:此文件夹是web项目的文件夹
    • static文件夹:存放css,js,img等静态文件
    • WEB-INF文件夹:存放web.xml,lib文件夹
      • lib文件夹:web项目中的运行依赖要放在这,而不是在其他文件夹

注:在web工程导入jar包时,需要在WEB-INF路径下的lib文件夹内导入,并将lib文件夹添加为库(模块)


应用文件

工程文件在idea中 构建 -> 构建工件 后产生的out -> artifacts文件夹中

artifaces中文释义:工件

src与resources会被编译进classes文件夹中

由idea编译生成的应用文件会有自己的命名规则,但这并不重要,因为:

上下文路径(访问路径)与文件路经可以不相同!!!!!!!!!!


Tomcat运行时部署

添加tomcat本地为运行时部署 -> 在部署中将应用文件作为工件添加 -> 配置上下文路经

idea在运行Tomcat时调用的时Tomcat Catalina 日志,这个日志的默认字符集编码时UTF-8

通过修改配置文件,在idea的控制台中显示中文

tomcat的配置文件夹 -> logging.properties文件 ->修改Catalina的字符集为GBK


IDea实现Tomcat的原理

为了保证Tomcat的纯净,idea不会将文件放在Tomcat中运行,而会创建一个Tomcat的副本

但这个副本并不是Tomcat的完全复制,而是存放和部署项目相关的配置文件,让tomcat本体按照副本的配置文件运行

配置文件中,通过xml文件的配置信息来配置具体的项目地址