zoukankan      html  css  js  c++  java
  • Servlet相关学习

    Servlet入门解析

    概念

    • 运行在服务器端的小程序
    • servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则
    • 实现servlet接口。复写方法

    快速入门

    1. 创建web项目

    2. 定义一个类,实现servlet接口

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

    4. 配置servlet

      1. 在web.xml中配置servlet
          <!--配置servlet-->
          <servlet>
              <servlet-name>demo1</servlet-name>
              <servlet-class>cn.yantumeijing.servlet.SevletDemo01</servlet-class>
          </servlet>
          <servlet-mapping>
              <servlet-name>demo1</servlet-name>
              <url-pattern>/demo1</url-pattern>
          </servlet-mapping>
      

    执行原理

    1. 当服务器接受到客户端浏览器的请求后,会解析请求路径,获取访问的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定义成员变量。即使定义了也不要对其修改值
    2. 提供服务:执行service方法,执行多次

      每次访问,就会被调用一次

    3. 被摧毁:执行destroy,执行一次

      servlet被摧毁执行,服务器关闭时,Servlet被摧毁

      只有服务器正常关闭时,再会执行destroy方法,

      在servlet销毁执行之前执行。

    Servlet3.0

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

    IDEA与Tomcat的相关配置

    1. IDEA会为每一个tomcat部署的项目单独建立一份配置文件(可通过IDEA对tomcat进行配置,如端口号)

      Using CATALINA_BASE:   "C:Usersada.IntelliJIdea2019.1system	omcatTomcat_8_5_34_servlet_2"
      
    2. 工作空间项目和tomcat部署的web项目

      1. tomcat真正访问的是“tomcat部署的web项目”,“tomcat部署的web项目”对应着“工作空间项目”的web目录下的所有资源。
      2. WBE-INF下的资源不能直接被访问。
    3. 断电调试 ❌Debug调试

    Servlet体系结构

    ​ Servlet -- 接口
    ​ |
    ​ GenericServlet -- 抽象类
    ​ |
    ​ HttpServlet -- 抽象类

    • GenericServlet:将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象
      • 将来定义Servlet类时,可以继承GenericServlet,实现service()方法即可
    • HttpServlet:对http协议的一种封装,简化操作
      1. 定义类继承HttpServlet
      2. 复写doGet/doPost方法

    Servlet相关配置

    1. urlpartten:Servlet访问路径
      1. 一个Servlet可以定义多个访问路径 : @WebServlet({"/d4","/dd4","/ddd4"})
      2. 路径定义规则:
        1. /xxx:路径匹配
        2. /xxx/xxx:多层路径,目录结构
        3. *.do:扩展名匹配
  • 相关阅读:
    QButton
    注入
    SpringBoot热重启配置
    centos7 安装 tomcat
    centos 安装jdk
    spring boot (6) AOP的使用
    spring boot (5) 自定义配置
    spring boot (4) 使用log4 打印日志
    SpringBoot (3)设置支持跨域请求
    spring boot (2) 配置swagger2核心配置 docket
  • 原文地址:https://www.cnblogs.com/PoetryAndYou/p/11300259.html
Copyright © 2011-2022 走看看