Tomcat入门

Tomcat入门

前提

  1. 软件架构
    1. C/S:客户端/服务器端
    2. B/S:浏览器/服务器端
  2. 资源分类
    1. 静态资源:例如HTML,CSS,JS等
    2. 动态资源:例如Servlet,Php,Asp等
  3. 网络通信三要素
    1. IP Address
    2. 端口:0~65535
    3. 传输协议:数据传输的规则
      1. TCP/IP
      2. UDP

Web服务器软件

  1. 基本概念

    1. 服务器:安装了服务器软件的计算机
    2. 服务器软件:接收用户请求并作出回应
    3. Web服务器软件:在Web服务器中部署Web项目,让用户可以访问
  2. 常见的Web服务器软件

    1. WebLogic:Orcale,大型JavaEE项目,收费软件
    2. WebSphere:IBM,同上
    3. JBOSS:JBOSS,同上
    4. Tomcat:Apache Fundation,中小型JavaEE服务器,开源免费
  3. Tomcat

    1. 下载、安装、卸载

    2. 启动、关闭、配置

    3. 软件的目录:

      1. bin:可执行文件
      2. conf:配置文件
      3. lib:依赖jar包
      4. logs:日志文件
      5. temp:临时文件
      6. webapps:存放Web项目
      7. work:运行时数据
    4. 启动软件

      在bin下运行startup.bat文件

      常见问题:

      1. 运行时窗口“一闪而过”,请在startup.bat文件末尾添加一行pause,可以查看报错的具体原因,大部分情况是因为环境变量没有配置好

      2. 默认的端口为8080,注意是否被占用,若占用需要更改

        在cmd中查看网络状态:

        netstat -ano
        

        查看到PID后可以查看具体占用端口的进程

        或者可以在confi中server.xml文件更改默认端口号(推荐)

    5. 关闭软件:使用shutdown.bat文件关闭或者在命令行使用ctrl+c关闭

    6. 部署方式:

      1. 直接将Web项目移动至webapps下

        设置好后在http://localhost:port/myproject/index.html可以访问

        其中myproject称为虚拟目录

        但是在实际中使用war的方式会更加简单:直接将生成的war包复制到webapps下,会自动解压

      2. 在server.xml文件中的Host部分添加

        <Context docBase="D:\myproject" path="/virtualPath"/>
        
      3. 在conf/Catalina/localhost文件夹下新建一个xml文件,在文件中编写同2的配置,但是需要删除path部分,在访问时path需要改成新建的xml文件的文件名(不含后缀)

    7. 静态项目和动态项目的区别

      Java动态项目的目录结构

      -- 根目录

      ​ -- WEB-INF目录

      ​ -- web.xml:web项目的核心配置文件

      ​ --classes目录:放置字节码文件的的目录

      ​ --lib目录:放置依赖jar包

    8. 在IDEA中部署使用Tomcat

Servlet

  1. 概念

    1. server applet,运行在服务器端的小程序
    2. servlet其实是一个接口,定义了Java类的被浏览器访问到的规则
  2. 入门

    1. 创建Java EE项目

    2. 定义Servlet接口的实现类

    3. 实现接口中的抽象方法

    4. 配置Servlet

      具体过程:

      1. 首先在src目录下创建com.tomcat.servlet路径,新建servletDemo.java文件,让其implements Servlet,右键选择IDEA的generate功能自动填充实现接口的代码

      2. 在service中尝试输出HelloWorld

      3. 打开WEB-INFO下的web.xml配置如下

        <servlet>
                <servlet-name>demo</servlet-name>
                <servlet-class>com.tomcat.servlet.servletDemo</servlet-class>
            </servlet>
            <servlet-mapping>
                <servlet-name>demo</servlet-name>
                <url-pattern>/demo1</url-pattern>
            </servlet-mapping>
        
  3. 原理

    image-20200406233336387

    1. 服务器收到请求,解析URL路径,获取资源路径
    2. 查找web.xml文件,找到url-pattren内容是否和资源路径一致
    3. 如果有,则区寻找servlet-class对应的全类名,将字节码文件加载进内存
    4. 创建对象,调用方法
  4. Servlet生命周期

    1. init:

      只会执行一次,servlet在内存中只存在同一个对象,在多个用户访问时有可能存在线程安全问题

      解决方案:尽量不要在servlet中定义成员变量,定义了也不要修改

      init方式可以有两种选择:

      1. 服务器启动时创建:在web.xml中配置0

      2. 还可以在服务被访问时创建

        load-on-startup为负整数为第一次访问时创建,为0或者正整数在服务器启动时创建

      public void init(ServletConfig servletConfig)
      
    2. service:

      每次访问servlet时都会执行一次

      public void service(ServletRequest servletRequest, ServletResponse servletResponse)
      
    3. destory:

      正常关闭时会执行一次,相当于遗言,在servlet被销毁之前执行

      public void destroy()
      
  5. Servlet3.0

    支持注解,不需要web.xml配置

    步骤:

    1. 创建JavaEE项目,选择Servlet3.0以上版本,可以不创建web.xml

    2. 定义Servlet的实现类

    3. Override实现类

    4. 在类上使用注解 @WebServlet("/demo")

      直接在class上加注解,括号中是资源路径

  6. IDEA的相关配置

    1. IDEA会为每个tomcat部署的项目配置一个项目文件

    2. 项目空间项目和Tomcat外部的工作目录注意区分

    3. WEB-INFO下的资源不能被浏览器访问

    4. 在tomcat中如何断点调试?

      设置断点,调试启动即可

posted @ 2020-04-07 00:34  codesucks  阅读(138)  评论(0)    收藏  举报