Tomcat——简介、目录结构等

软件的体系结构

1.C/S结构    Client/Server 客户端/服务端
    *VB,Delphi,VC++,C#,Java awt/swing:比如桌面QQ,扫雷,拱猪等运行在桌面的程序.
    *特点:在服务端主要就是一个数据库,把所有业务逻辑以及界面的渲染操作交给客户端完成.
    *优点:安全,用户界面很丰富,用户体验好等.
    *缺点:安装,部署,开发,维护麻烦
2.*B/S	Browser/Server 浏览器/服务端
    *优点:安装,部署,开发,维护简单
    *缺点:对硬件要求打
        如果应用过大,用户体验会受到影响
    ![](https://img2020.cnblogs.com/blog/1668748/202004/1668748-20200424230054418-182685152.png)

Web资源分类

1.静态资源
    *html, css, JavaScript等
    *所有用户访问后,得到的结果都是一样的,称为静态资源.静态资源可以直接被浏览器解析.
2.动态资源
    *servlet, jsp, php, asp
    *每个用户访问相同资源后,得到的结果可能不一样。称为动态资源。动态资源被访问后,需要先转换为静态资源,在返回给浏览器
    ![](https://img2020.cnblogs.com/blog/1668748/202004/1668748-20200424230438723-1274421277.png)

Web服务器

1.Web服务器的作用是接收客户端的请求,给客户端作出响应。
2.对于JavaWeb程序而已,还需要有JSP/Servlet容器,JSP/Servlet容器的基本功能是把动态资源转换成静态资源,当然JSP/Servlet容器不只这些功能.
3.常见的Web服务器软件
    web服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目.
        Tomcat(Apache):当前应用最广的JavaWeb服务器,;
        JBoss(Redhat红帽):支持JavaEE,应用比较广;
        GlassFish(Orcale):Oracle开发JavaWeb服务器,应用不是很广;
        Resin(Caucho):支持JavaEE,应用越来越广;
        Weblogic(Orcale):要钱的!支持JavaEE,适合大型项目;
        Websphere(IBM):要钱的!支持JavaEE,适合大型项目

Tomcat

1.简介
    Tomcat 是 Apache 基金组织开发的一个中小型 JavaEE 服务器,是开源免费的,Tomcat是常见的免费的web服务器,Tomcat是使用Java语言编写的一个服务器(程序),要运行Tomcat,必须得有JRE;
2.安装、环境变量配置
    参考这篇博客: https://blog.csdn.net/qq_40881680/article/details/83582484
3.访问Tomcat
4.http://服务器所在主机的IP:服务器的端口号/资源名字.
    注意: 访问本地IP为 127.0.0.1 或 localhost
5.目录结构
    1.bin:该目录下存放的是二进制可执行文件,如果是安装版,那么这个目录下会有两个exe文件:tomcat8.exe、
        tomcat8w.exe,前者是在控制台下启动Tomcat,后者是弹出UGI窗口启动Tomcat;如果是解压版,那么会有startup.bat和shutdown.bat文件,startup.bat用来启动Tomcat,但需要先配置JAVA_HOME环境变量才能启动,shutdawn.bat用来停止
    2.conf:这是一个非常重要的目录,这个目录下有四个最为重要的配置文件.
        1.server.xml:配置整个服务器信息。例如修改端口号,添加虚拟主机等;
        2.tomcat-users.xml:存储tomcat用户的文件,这里保存的是tomcat的用户名及密码,以及用户的角色信息。
        3.web.xml:部署描述符文件,这个文件中注册了很多MIME类型,即文档类型。这些MIME类型是客户端与服务器之间说明文档类型的,如用户请求一个html网页,那么服务器还会告诉客户端浏览器响应的文档是text/html类型的,这就是一个MIME类型。客户端浏览器通过这个MIME类型就知道如何处理它了。当然是在浏览器中显示这个html文件了。但如果              
          服务器响应的是一个exe文件,那么浏览器就不可能显示它,而是应该弹出下载窗口才对。MIME就是用来说明文档的内容是什么类型的!
        4.context.xml:对所有应用的统一配置,通常我们不会去配置它。
    3.lib:存放了Tomcat软件启动运行的依赖jar文件
    4.logs:这个目录中都是日志文件,记录了Tomcat启动和关闭的信息,如果启动Tomcat时有错误,那么异常也会记录在日志文件中。
    5.temp:存放Tomcat的临时文件,这个目录下的东西可以在停止Tomcat后删除!
    6.webapps:存放web项目的目录,其中每个文件夹都是一个项目;如果这个目录下已经存在了目录,那么都是tomcat自带的项目。其中ROOT是一个特殊的项目,在地址栏中没有给出项目目录时,对应的就是ROOT项目。http://localhost:8080/examples,进入示例项目。其中examples就是项目名,即文件夹的名字。
    7.work:工作目录,存放了jsp翻译成Servlet的java文件以及字节码文件.
6.常见问题
    1.还没启动Tomcat或者Tomcat启动失败,就去访问地址.
    2.Tomcat启动成功,但是出现404的页面.
      可能我们自己把资源的路径写错了,自己检查,如访问了一个不存在的页面.
    3.Tomcat还未关闭,又再次重新启动Tomcat.
    出现:java.net.BindException: Address already in use: JVM_Bind异常.
    说明该程序的端口以及被其他程序所占用.
    注意: 出现错误后, 要习惯去查看日志信息.Tomcat根/logs/catalina.2015-12-31.log
    ![](https://img2020.cnblogs.com/blog/1668748/202004/1668748-20200425164313827-1324568623.png)
    4.要保证XML内容编码和文件编码相同,若有中文,建议使用UTF-8,否则不能使用中文.
    5.启动报错 
        1.暴力:找到占用的端口号,并且找到对应的进程,杀死该进程
            *netstat -ano
        2. 温柔:修改自身的端口号
            *conf/server.xml
            *<Connector port=“8888” protocol=“HTTP/1.1” connectionTimeout=“20000” redirectPort=“8445” />
            *一般会将tomcat的默认端口号修改为80。80端口号是http协议的默认端口号。
            * 好处:在访问时,就不用输入端口号

JavaWeb应用的目录结构

*WEB应用程序指供浏览器访问的程序,通常也简称为web应用。 
    *一个web应用由多个静态web资源和动态web资源组成.
1.创建静态应用
    1.在Tomcat的目录webapps文件夹下创建一个目录(如hello)
    2.在webappshello下创建静态资源(html, js等)index.html
    3.启动Tomcat
    4.打开浏览器访问http://localhost:8080/hello/index.html
2.创建动态应用
    1.在webapps下创建hello1目录
    2.在webappshello1下创建WEB-INF目录
    3.在webappshello1WEB-INF下创建web.xml
    4.在webappshello1下创建index.html
    5.打开浏览器访问http://localhost:8080/hello/index.html
    ![](https://img2020.cnblogs.com/blog/1668748/202004/1668748-20200425165040255-1375798143.png)
        *hello:应用目录,hello就是应用的名称;
        *index.html:应用资源。应用下可以有多个资源,例如css、js、html、jsp等,也可以把资源放到文件夹中,例如:hellohtmlindex.html,这时访问URL为:http://localhost:8080/hello/html/index.html;
        *WEB-INF:这个目录名称必须是大写,这个目录下的东西是无法通过浏览器直接访问的,也就是说放到这里的东西是安全的.
        *web.xml:应用程序的部署描述符文件,可以在该文件中对应用进行配置.
        *classes:存放class文件的目录.
        *lib:存放jar包的目录.

部署JavaWeb项目

1.直接将项目放在webapps目录下即可
    */hello :访问虚拟路径
    *简化部署:将项目打成一个war包,再将war包放置到webapps目录下。war包会自动解压
2.配置conf/server.xml文件
    在Host标签体内配置
    <Context docBase"C:hello" path="/zy/">
        *path:指定当前应用的名称(虚拟目录)
        *docBase:表示把哪一路径下的项目给部署起来
        *浏览器访问路径:http:://localhost:8080/zy/index.html
3.在conf/Catalina/localhost创建任意名称的xml文件
    1.在文件中编写 比如 abc.xml
        *<Context docBase="C:hello" /> 此时的path虚拟目录就为xml文件的名称
    2.访问 http://localhost/abc/index.html

IDEA与tomcat的相关配置

1.IDEA会为每一个tomcat部署的项目单独建立一份配置文件
    *Using CATALINA_BASE: "C:UsersSunny.IntelliJIdea2019.3system	omcat\_coderZYGui"
2.工作空间项目 和 tomcat部署的web项目位置
    *E:JavaEEcodeidea_codecoderZYGuioutartifacts
    WEB-INF目录下的资源不能被浏览器直接访问。

断点调试

原文地址:https://www.cnblogs.com/linjing111/p/12774190.html