• Java-Servlet接口


    概念:运行在服务器端的小程序

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

    快速入门

    1. 创建项目
    2. 定义一个类,实现Servlet接口
      • public class ServletDemo1 implements Servlet
    3. 实现接口的抽象方法
    4. 配置Servlet
       <servlet>
           <servlet-name>demo1</servlet-name>
           <servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class>
       </servlet>
       <servlet-mapping>
           <servlet-name>demo1</servlet-name>
           <url-pattern>/demo1</url-pattern>
       </servlet-mapping>
      

    执行原理:

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

    Servlet中的生命周期:

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

    • Servlet什么时候被创建
    • 默认情况下,第一次被访问到时,Servlet被创建
    • 可以配置执行Servlet的创建时机
      • 标签下配置
        1. 第一次被访问时,创建
          • 的值设置为负数
        2. 在服务器启动时,创建
          • 的值设置为0或正数
    • Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的
    • 多个用户同时访问时,可能存在线程安全问题
    • 解决:尽量不要在Servlet中定义成员变量。即使定义了成员变量,也不要对其修改值
    1. 提供服务 执行service方法 执行多次
      • 每次访问Servlet时,service方法都会被调用一次
    2. 被销毁 执行destroy方法,只执行一次
      • Servlet被销毁时执行。服务器关闭时,Servlet被销毁
      • 只有服务器正常关闭时,才会执行destroy方法
      • destroy方法在执行时,一般用于释放资源

    Servlet3.0

    • 好处
      • 支持注解配置,不需要web.xml了
    • 步骤
      1.创建JavaEE项目,选择Servlet3.0的版本以上,可以不创建web.xml
      2.定义一个类,实现Servlet接口
      3.复写方法
      4.在类上使用@WebServlet注解,进行配置
      * @WebServlet("资源路径")
    • Servlet的体系结构
      Servlet--接口
      |
      GenericServlet--抽象类
      |
      HttpServlet--抽象类
      • GenericServlet 将servlet接口中其他方法做了默认空实现,只将service()方法作为抽象
        • 将来定义Servlet类时,可以继承GenericServlet,实现service()方法即可
      • HttpServlet
    • Servlet相关配置
      1.urlpartten:Servlet访问路径
      1.一个Servlet可以定义多个访问路径:@WebServlet({"/d4","/dd4","/ddd4","/demo4"})
      2.路径定义规则
      1./xxx
      2./xxx/xxx
      3.*.do *是指通配符

    HTTP

    • 概念 Hyper Text Transfer Portocol 超文本传输协议
      • 传输协议 定义了客户端和服务器端通信时,发送数据的格式
      • 特点:
        1. 基于TCP/IP的高级协议
        2. 默认端口号:80
        3. 基于请求/响应模型:一次请求对应一次响应
        4. 无状态的:每次请求之间互相独立,不能交互数据
    • 请求消息数据格式
      1. 请求行
        • 请求方式 请求url 请求协议/版本

        • GET/login.html HTTP/1.1

        • 请求方式

          • HTTP协议中有7种请求方式 常用的有两种
            • GET:
              1.请求参数在请求行中,在url后
              2.请求的url长度有限制的
              3.不太安全
            • POST
              1.请求参数在请求体中
              2.请求的url长度没有限制的
              3.相对安全
      2. 请求头
        • 请求头名称:请求头值
        • 常见的请求头
          1. user-Agent 浏览器告诉服务器 我访问你使用的浏览器版本信息
            • 可以在服务器端获取该头的信息 解决浏览器的兼容问题
          2. Referer http://localhost/login.html
            • 告诉服务器 我(当前请求)从哪里来?
              • 作用:
                1. 防盗链
                2. 统计工作
      3. 请求空行
      4. 请求体
        • 字符串格式:
          GET/login.html HTTP/1.1
          Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
          Accept-Encoding: gzip, deflate
          Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
          User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
    • 响应消息数据格式
  • 相关阅读:
    [.Net MVC] 使用 log4net 日志框架
    322作业
    uva 12171 sculpture (超级好题)——yhx
    NOIP2007 T2纪念品分组 解题报告-S.B.S.
    NOIP2007 T1奖学金 解题报告-S.B.S.
    NOIP2012普及组 (四年后的)解题报告 -SilverN
    calc 多项式计算 (STL版和非STL版) -SilverN
    uva 10562 undraw the trees(烂题) ——yhx
    uva 10129 play on words——yhx
    uva 10305 ordering tasks(超级烂题)——yhx
  • 原文地址:https://www.cnblogs.com/dongxuelove/p/13040531.html
Copyright © 2020-2023  润新知