Tomcat和Servlet

Tomcat

web服务器软件。

  • 服务器:安装了服务器软件的计算机。
  • 服务器软件:接收用户请求,处理请求,做出响应。
  • web服务器软件:接收用户请求,处理请求,做出响应。
    • 在web服务器软件中可以部署web项目,让用户通过浏览器访问这些项目。
    • web容器

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

  • webLogic:Oracle公司,大型javaEE服务器,支持所有的javaEE规范,收费。
  • webSphere:IBM公司,大型javaEE服务器,支持所有的javaEE规范,收费。
  • JBOSS:JBOSS公司,大型javaEE服务器,支持所有的javaEE规范,收费。
  • Tomcat:Apache基金组织,中小型javaEE服务器,仅仅支持少量javaEE规范,开源免费。

配置

  • 部署项目的方式:
    1. 直接将项目放在webapps文件夹下。
      • 简化部署:将项目打包成一个war包,再将war包放到webapps目录下,war包会自动解压缩。
    2. 配置conf/server.xml文件,在< host>标签体中配置<Context docBase="项目存放路径" path="/虚拟目录" />
    3. 在conf/Catalina/localhost创建任意名称的xml文件,在文件中编写<Context docBase="项目存放路径" />,虚拟目录就是xml文件的名称。

Servlet简单学习

运行在服务器端的小程序。

  • Servlet就是一个接口,定义了java类被浏览器访问到(tomcat识别)的规则。
  • 将来我们自定义一个类,实现Servlet接口,复写方法。

Servlet快速入门

  1. 创建javaEE的项目

  2. 定义一个类,必须实现Servlet接口

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

  4. 配置Servlet

    • web.xml中配置:

      <servlet>
          <servlet-name>demo01</servlet-name>
          <servlet-class>web.servlet.ServletDemo01</servlet-class>
      </servlet>
      
      <servlet-mapping>
          <servlet-name>demo01</servlet-name>
          <url-pattern>/demo01</url-pattern>
      </servlet-mapping>

执行原理

  1. 当服务器接收到客户端浏览器的请求后,会解析请求的URL路径,获取访问的servlet的资源路径。
  2. 查找web.xml文件是否有对应的<url-pattern>标签体内容。
  3. 如果有则在找到对应的<servlet-class>全类名。
  4. tomcat会将字节码文件加载进内存,并且创建其对象。
  5. 调用其方法。

Servlet的生命周期:

  1. 被创建:执行init方法,只执行一次。

    • servlet什么时候被创建?

      • 默认情况下,第一次访问时,servlet被创建
      • 可以配置执行servlet的创建时机
        • <servlet>标签下配置
          1. 第一次被访问时,创建
            • <load-on-startup>的值为负数
          2. 在服务器启动时,创建
            • <load-on-startup>的值为0或正数
    • servlet的init方法只执行一次,说明一个servlet在内存中只存在一个对象,servlet是单例的。

      • 多个用户同时访问时,可能存在线程安全问题。
        • 解决:尽量不要在servlet中定义成员变量。即使定义了成员变量,也不要对其修改值。
  2. 提供服务:执行service方法,可以执行多次。

    • 每次访问servlet时都会执行一次。
  3. 被销毁:执行destroy方法,只执行一次。

    • servlet被销毁时执行一次,服务器正常关闭时。

Servlet3.0及以上:

  • 好处:
    • 支持注解配置。可以不需要web.xml。
  • 步骤:
    1. 创建javaEE项目,选择servlet版本3.0以上,可以不创建web.xml。
    2. 定义一个类实现Servlet接口。
    3. 复写方法。
      1. 在类上使用@WebServlet(“资源路径”)注解进行配置。

Servlet的体系结构:

  • Servlet,GenericServlet,HttpServlet
    1. GenericServlet继承自Servlet,将Servlet接口中除service方法都进行了默认空实现,只将service方法作为抽象方法,定义时只需实现service方法即可。
    2. HttpServlet继承自GenericServlet,是对http协议的一种封装,简化操作。定义时可以复写doGet/doPost方法。

Servlet相关配置:

  1. urlpartten:Servlet访问路径
    1. 一个Servlet可以定义多个访问路径:@WebServlet({“/路径1”,”/路径2”,”/路径3”})。
    2. 路径定义规则:
      1. /xxx
      2. /xxxx/xx/xxx:多层路径,目录结构。
      3. *.后缀名

IDEA与Tomcat的相关配置

  1. IDEA会为每一个Tomacat部署的项目单独建立一份配置文件。

    • 查看控制台的log中的CATALINA_BASE。
  2. 工作空间项目和Tomacat部署的web项目是两个存在。

    • Tomcat真正访问的是“Tomacat部署的web项目”,“Tomacat部署的web项目”对应着的是“工作空间项目”的web目录下的所有资源。
    • WEB-INF目录下的资源不能被浏览器直接访问。
    • 断点调试:使用Debug启动而不是Run。
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!

请我喝杯咖啡吧~

支付宝
微信